Engines
Use this when you need to pick or understand an ilo execution engine.
ilo programs verify once and then run on one of three public engines. Every engine accepts the same source. They differ only in start-up cost, peak throughput, and platform reach.
Engine profiles
Section titled “Engine profiles”| Engine | Start-up | Throughput | Use when |
|---|---|---|---|
| VM (bytecode) | Low | Medium | Default for every workload; covers every language feature |
| JIT (Cranelift) | Medium | High | Hot loops, benchmarks, long-running services |
| AOT | Highest (build) | Highest | Shipping a single native binary with no runtime |
The tree-walking interpreter is no longer a user-selectable engine: --run-tree / --run were removed from the public CLI in the 0.12.x soft-deprecation. The tree-walker stays in-tree as the internal dispatch target for a small set of HOF / regex / IO shapes the VM and Cranelift haven’t lifted natively yet; the VM bails to it transparently. Full removal is deferred to 0.13.0+.
The CLI picks a sensible default per command. To force an engine, see --vm / --jit in the CLI Reference.
Contracts every engine shares
Section titled “Contracts every engine shares”- Same verifier. A program that verifies on one engine verifies on all.
- Same builtins. Every builtin behaves identically across engines, except where the engine lacks the underlying capability (HTTP is unavailable in the WASM build).
- Same diagnostics. Error codes (
ILO-T...,ILO-R...) match across engines. See Diagnostics. - Same float semantics. All engines use IEEE-754 f64.
Engine-specific notes
Section titled “Engine-specific notes”- Default engine for
ilo runon a native binary. - Capped at 256 registers per function (
ILO-T035). - Internally bails to the tree-walker for a small set of HOFs (
map/flt/fld/srt/rsrtwith a ctx arg), regex (rgx/rgxall/rgxall1), variadicfmt, 2-argrd/rdb, 1-argsleep, and 2/3-argct/rsrt. Transparent: same output, same diagnostics, no user-visible difference.
JIT (Cranelift)
Section titled “JIT (Cranelift)”- Enabled with
--features craneliftin a source build. - Best for hot loops and numeric kernels.
- Produces a standalone native binary.
- See
ilo buildin the CLI Reference.
Picking an engine
Section titled “Picking an engine”If you do not know, do not pick. The default is right for most programs. Reach for --engine only when you have measured a reason. See Benchmarks for numbers.