ilusm.dev

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.ilu with 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, eru module

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: keylogkylg (five-char rule)
  • Removed: color (replaced by colr)

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

  • ./ilusm launcher 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-fmt is planned)
  • No language server (ilusm-lsp is 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:

ComponentStatus
LexerWritten in ilusm, runs in ilusm
ParserWritten in ilusm, runs in ilusm
CompilerWritten in ilusm, runs in ilusm
EncoderWritten in ilusm, runs in ilusm
VMWritten in ilusm, runs in ilusm
BootstrapStage0 refreshes ilusm.ilbc (self-hosted image) and drives run
Minimal C launcherIn progress
C-optional bootstrapPlanned

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.