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 viastage0/resolve_seed.sh, optionally rebuildsilusm.ilbcwhenlib/**/*.iluis newer, thenexecsseed run …stage0/<triple>/ilusm-min(or.exe) - native bootstrap binary; maintainer-built, not regenerated fromlib/on every editilusm.ilbc- packed bytecode for the self-hosted toolchain (created/updated by./build.shor the launcher’s rebuild path)lib/frontend/,lib/backend/,lib/runtime/,lib/stdlib/,lib/platform/- language implementation and stdlib sourcesrelease/tests/,scripts/,tests/hello.ilu- verification and helpersrelease/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.