AtlatestRenderedmarkdown
Readme
Changelog
Versions are synced with Sigil releases. A missing entry indicates no changes for that version.
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.10.1] - 2026-04-29
Fixed
irc-privmsgandirc-noticenow always emit the body as a:trailingparameter, even for short spaceless single-token bodies (e.g.connected.). The earlier behavior —make-irc-command's "needs-colon" heuristic dropped the:for any body without an internal space or leading colon — produced wire that strict receivers parsed as a middle parameter, leavingirc-message-trailingempty and the message body lost. Surfaced in apiary's reconnect-presence broadcast (PRIVMSG #hive connected.) round-tripping through enclave-server and arriving at peers with empty text.
Added
make-trailing-command— public sibling ofmake-irc-commandthat unconditionally emits a:on the last argument. Use it for any command whose final parameter is human/agent text (PRIVMSG, NOTICE, TOPIC, QUIT, PART message, KICK reason).make-irc-commandretains its existing per-token heuristic for commands like MODE/NICK/PING where the last argument is structurally an identifier.
[0.8.0] - 2026-04-27
Added
- Reshaped from a client-only library into the canonical IRC protocol library for the Sigil ecosystem. Adds parser, types, capability descriptors, numeric constants, and state-machine helpers covering both client AND server flows.
- Added IRCv3 message tags: full
@key=value;…parsing/serialization with escape handling (\:\s\\\r\n), typed accessors fortime,msgid,account,batch,label,+draft/reply,+typing, plus a tagged-line buildermake-irc-command/tags. - Added
(sigil irc identity): qualified<nick>@<server-domain>identity with display + canonical accessors. Federation-readiness constraint — future CrafterNet sovereign-per-server federation requires identities to be qualified from day one. - Added
(sigil irc numerics): named bindings for 50+ numeric reply codes (welcome, MOTD, errors, SASL, MONITOR, standard replies). - Added
(sigil irc capability): capability descriptor record + parser forLS/REQargument bodies. Tier 1 caps (sasl,message-tags,server-time,account-tag,account-notify,extended-join,userhost-in-names,multi-prefix,away-notify,chghost,invite-notify,setname,batch,labeled-response,echo-message,cap-notify) + Tier 2 caps (draft/chathistory,draft/read-marker,MONITOR). - Added
(sigil irc cap-negotiation): client and server CAP state machines as composable values. Multi-lineLScontinuation, atomicREQenable/disable, NAK rejection,LIST,END,NEW/DELruntime announcements. - Added
(sigil irc sasl): SASL state machines for client and server. PLAIN + EXTERNAL mechanisms ship working; chunked AUTHENTICATE base64 encoding/decoding handles the 400-char chunking spec including the empty-+ terminator. Pluggableverifycallback for server-side credential check; pluggablescram-driverslot for SCRAM mechanisms. - Added
(sigil irc sasl-scram): SCRAM-SHA-256 driver per RFC 5802 / RFC 7677. Both client and server flows. Server uses afetchcallback to retrieve persistently storedscram-credentials(salt + iterations + stored-key + server-key); never stores plaintext passwords.derive-scram-credentialshelper for use at user registration. Requires sigil-crypto v0.15.0+ (pbkdf2-sha256,hmac-sha256-bytes). - Added
(sigil irc batch):BATCH +reftag/BATCH -reftagline builders, reftag generator, and a batch-context tracker for receiving sides. - Added
(sigil irc chathistory):CHATHISTORYquery parser/serializer for BEFORE / AFTER / LATEST / AROUND / BETWEEN / TARGETS subcommands; selector parser for*/timestamp=/msgid=; FAIL standard-reply error codes. - Added
(sigil irc read-marker):MARKREADparser + builders for thedraft/read-markercapability (cross-device last-read sync). - Added
(sigil irc monitor): MONITOR client-side line builder, server-side numeric reply builders forRPL_MONONLINE(730),RPL_MONOFFLINE(731),RPL_MONLIST(732),RPL_ENDOFMONLIST(733),ERR_MONLISTFULL(734). - Added comprehensive test suite covering each new module with IRCv3 spec-derived test vectors. SCRAM-SHA-256 end-to-end tests guard on crypto-primitive availability and skip gracefully on older sigil binaries.
Changed
- Bumped sigil version requirement to
^0.14. - Reorganized dependencies to point at extracted standalone repos (
codeberg:sigil/sigil-socket,codeberg:sigil/sigil-tls,codeberg:sigil/sigil-crypto) instead of the old monorepo path. Bumped sigil-crypto to^0.15for SCRAM-SHA-256 primitives. - Existing client API in
(sigil irc connection)retained unchanged for backwards compatibility.
[0.7.0] - 2026-03-01
Added
- Added procedure specifications with inline (: ...) syntax, optional runtime checking via sigil-checks feature, and predicate combinators (any-of, maybe, list-of, none-of).
- Added procedure specs and docstrings to all exported procedures.
- Added procedure specs and docstrings to all exported procedures.
- Added define-native compiler form for declaring native C bindings in Scheme modules with optional specs and docstrings.
- Added VM-level exception handler stack for tail-optimized guard semantics, replacing prompt-based exception handling.
- Added multi-VM threading with share-nothing architecture, message passing, and parallel-map for data-parallel workloads.
- Added preemptive yield points at loop back-edges to prevent CPU-bound tasks from starving the async scheduler.
- Added procedure specifications with inline (: ...) syntax, optional runtime checking via sigil-checks feature, and predicate combinators (any-of, maybe, list-of, none-of).
- Added procedure specs and docstrings to all exported procedures.
Changed
- Changed I/O multiplexing to use epoll (Linux) and kqueue (macOS/BSD) instead of select(2) for better scalability.
Fixed
- Fixed false positive capture corruption check in serializer, Windows build issues with mingw macro collision and unix-connect, closure arity errors now catchable by guard, and exception handler double-pop segfault.
[0.4.0] - 2026-01-14
Added
- Added full macro hygiene support for syntax-rules and syntax-case. Macros now properly respect lexical scope, preventing accidental variable capture that could cause subtle bugs. This release also adds
free-identifier=?for comparing identifiers in macro expansion, and the#'reader shorthand for(syntax ...)expressions. - Added native C implementations of list operations (
assoc,assq,assv,member,memq,memv) that were hotspots during macro expansion. This results in 2x faster test suite execution and 50% faster module compilation. - Added ability for
guardto catch VM-level errors such as type errors, division by zero, and out-of-bounds access. Previously these errors would terminate the program; now they can be handled gracefully using the newvm-error?predicate in(sigil error). - Added CPU and memory profiling infrastructure via the new
(sigil profile)module. Developers can now measure execution time and memory allocation to identify performance bottlenecks in their applications.
Fixed
- Fixed source file names in error stack traces. Errors now display the correct file path with line and column positions (e.g.,
main.sgl:3:15), making debugging significantly easier. - Fixed
with-api-docsto correctly resolve package-centric documentation paths. API documentation generation now works correctly for all package layouts. - Fixed missing package dependency declaration that could cause import errors when using sigil-irc in isolation.
Other
- Reduced release binary size from 3.2MB to 1.8MB through build optimizations. Smaller binaries mean faster downloads and reduced disk usage for deployed applications.
[0.1.0] - 2026-01-09
Other
- Initial release of the test framework with assertions, test discovery, filtering, and formatted output.
- Initial release with TCP and UDP socket support for network programming.
- Core runtime providing a bytecode VM with incremental mark-sweep garbage collector, S-expression reader with extensible syntax, and hygienic macro system supporting syntax-rules and syntax-case. Native bindings for I/O, filesystem, networking, process management, SQLite, and cryptographic hashing.
- Initial release with SXML utilities for XML/HTML document construction and manipulation.
- JWT token encoding and verification with HS256 signing support.
- Model Context Protocol server implementation for building AI tool integrations with resources, tools, and prompts.
- SQLite database bindings with prepared statements, transactions, and result iteration.
- Initial release of the WebAssembly runtime for running Sigil applications in the browser via Emscripten.
- Initial release of changeset-based release management with version bumping, changelog generation, and git integration.
- Initial release of the interactive web playground for trying Sigil in the browser.
- Core standard library with (sigil core) providing pattern matching, records, delimited continuations, and utilities for arrays, dicts, strings, and lists. Includes modules for math operations, process spawning, time/date handling, filesystem access, and path manipulation. Nearly complete R7RS (scheme base) compatibility with additional modules for I/O, exceptions, generators, and coroutines.
- Static site generation with composable pipeline for Markdown files and module documentation.
- Initial release with Markdown parsing and frontmatter extraction.
- Initial release with ANSI escape code utilities for terminal colors, bold, dim, and other text formatting.
- Initial release with extensible hook system for REPL and application customization.
- CSS generation from Sigil code with selectors, properties, and stylesheet composition.
- Initial release of the code formatter with automatic indentation and parenthesis inference.
- Initial release with declarative command-line argument parsing, supporting options, flags, subcommands, and automatic help generation.
- Initial release of the build system with package management, dependency resolution, task execution, and executable bundling.
- Initial release of the network REPL server for editor integration and remote evaluation.
- Command-line interface with commands for building packages, creating standalone executables, running tests, code formatting, project initialization, documentation generation, and release management. Interactive REPL for development.
- HTTP/1.1 server with routing, request/response handling, and server-sent events for streaming responses. HTTP client with TLS support for making outbound requests.
- Web application framework with routing, middleware, and template rendering.
- WebSocket client and server implementation with support for text and binary messages.
- Git repository operations including status, staging, commits, branches, and diff inspection.
- JSON parsing and serialization with bidirectional mapping between JSON and native Scheme types (dicts, arrays, strings, numbers, booleans). Port-based I/O for reading and writing JSON streams.
- IRC client for connecting to IRC networks with message handling and channel operations.