ilusm.dev
Engineering

Engineering & tests

Ilusm is self-hosted in Ilusm: the lexer, parser, bytecode compiler, encoder, and VM live under lib/. A small prebuilt seed (stage0/…/ilusm-min) loads the tree, can rebuild ilusm.ilbc, and runs programs. ./build.sh refreshes that bytecode from lib/backend/compile_pipeline.ilu. Pipeline overview: Compiler pipeline.

What a full checkout contains

  • ilusm - launcher: resolves the seed via stage0/resolve_seed.sh, optionally rebuilds ilusm.ilbc when lib/**/*.ilu is newer, then execs seed run …
  • stage0/<triple>/ilusm-min (or .exe) - native bootstrap binary; maintainer-built, not regenerated from lib/ on every edit
  • ilusm.ilbc - packed bytecode for the self-hosted toolchain (created/updated by ./build.sh or the launcher’s rebuild path)
  • lib/frontend/, lib/backend/, lib/runtime/, lib/stdlib/, lib/platform/ - language implementation and stdlib sources
  • release/tests/, scripts/, tests/hello.ilu - verification and helpers
  • release/examples/ - public example programs (verified via release gate)

./build.sh

Runs the self-hosted compile entrypoint:

./ilusm lib/backend/compile_pipeline.ilu

On success you should see ilusm.ilbc ready (and the file at the repo root). This rebuilds the bytecode artifact from current Ilusm sources-the “Haskell way, no C” loop-without replacing the seed binary.

Verification gate

The authoritative ladder is sh scripts/run_all_tests.sh. It ends with === All tiers completed OK === when domain tests, golden fixtures, integration, fuzz smoke, stdlib import+targeted (run_stdlib_targeted.py), diagnostics, parse/eval fuzz, and public corpus smoke all pass.

Per-step wall times: ./scripts/run_all_tests_timed.sh. Full tier list and file paths: Test results.

Release checklist covers build, hello, examples, and seed resolution.

Distributable

Installers and minimal bundles are produced for each platform and published on Download.

Seeds, bytecode refresh policy, and transparency: Self-hosting.