Roadmap

mu stays minimal, self-hostable, practical and predictable. The roadmap is a sequence of small, testable steps that keep the compiler, VM and documentation in lockstep.

The original phases have landed. What follows is where mu actually stands, and which directions are open from here.

North star

Where mu is now

Each of these is checkable rather than asserted — the command that proves it follows the claim.

Where it could go next

Candidates, not commitments. The old blocker list is mostly closed: macro hygiene, top-level macro.define ordering, formatter parity, ord/chr Unicode behavior, string write-target protection, heap growth, Linux native FFI, and concurrency across the execution paths are no longer roadmap items.

Backend and target coverage

Diagnostics and tooling

System libraries

The host surface

The builtin table is at its floor. An audit of all 27 remaining builtins found nothing else worth moving into mu: what is left needs the kernel, raw memory, the loader, the scheduler, the runtime type tag, or a mutation mu cannot express. What remains is bookkeeping — a one-time compaction of the slots the relocated builtins left behind, which shifts a bytecode-level index and so needs its own flag day (#46).

Performance

Largely unexplored, and deliberately so — correctness and cross-backend parity came first. Compiler optimisations, VM speedups, and a memory model that does not surprise anyone under concurrency are all open ground.

Anti-goals

Anti-goals are positions, not vows. “A macro system” sat on this list for most of mu’s life and came off it when a design arrived that did not require a second language: macros are ordinary mu functions over code values, and they expand before bytecode exists.

Learn more

For the authoritative roadmap and acceptance criteria, see docs/Roadmap.md.

Next steps