Changelog
What shipped, what changed, and what is still in progress.
v2 - April 2026
Language
- Lexer rewritten across focused modules (
lex_scan,lex_chr,lex_kw,lex_emit,lex_state,lex_diag) - Parser consolidated into
prs.iluwith improved error messages - Multi-line functions with block bodies
- Early return with
ret - Lambda syntax:
\(params) expr - Pattern matching with
mat - Improved error handling:
try,err,erumodule
Standard library
- 340+ modules in
lib/stdlib/ - New modules:
async,audio,avro,b64,bc,boot,box,bson,cache,cgen,cgrp,colr,cov,cql,crc,crya,csp,daem,dif3,emit,eml,env,eth,fig,form,ftp,gpio,heap,hmac,host,http2,ical,icmp,ilu,ilu_isa,io,ir,json,kv,link,log,lru,mach,math,md,mdl,mdw,memx,migr,mmap,mock,ntp,ntrl,opa, and more - Renamed:
keylog→kylg(five-char rule) - Removed:
color(replaced bycolr)
Bootstrap & self-hosting
- Compile pipeline implemented in ilusm (
lib/backend/compile_pipeline.ilu) - Bytecode artifact (
ilusm.ilbc) now ships as the primary distribution artifact - Hybrid runtime bridges evaluator and VM
Tooling
./ilusmlauncher with compile-if-stale logic- Full release gate via test ladder
- Registry sync and domain coverage checks
Documentation
- New
docs/release/folder with 20 forward-facing documents - ilusm.dev site overhaul: new pages for language, stdlib, toolchain, internals, security, and more
- Loveshack expanded from 16 to 60 steps across 6 tracks
Known limitations
- Public bundles ship
ilusm.ilbc+ launcher +lib/; stage0 seed binaries are build-time only - see self-hosting - Stdlib breadth is large; per-domain usefulness depends on host syscalls - see
stdlib-verification.json - No public community package index (npm/apt-style) - tarball +
pkm/ registry as documented - No formatter (
ilusm-fmtis planned) - No language server (
ilusm-lspis planned) - Concurrency support is platform-dependent
- Windows support is partial
Self-hosting diary
ilusm is on a journey to full self-hosting. Here is where we are:
| Component | Status |
|---|---|
| Lexer | Written in ilusm, runs in ilusm |
| Parser | Written in ilusm, runs in ilusm |
| Compiler | Written in ilusm, runs in ilusm |
| Encoder | Written in ilusm, runs in ilusm |
| VM | Written in ilusm, runs in ilusm |
| Bootstrap | Stage0 refreshes ilusm.ilbc (self-hosted image) and drives run |
| Minimal C launcher | In progress |
| C-optional bootstrap | Planned |
Versioning policy
ilusm uses a simple version number. Breaking changes increment the major version. The language is defined by lib/**/*.ilu and docs/ - not by a version string. When in doubt, check the source.