Architectural decisions
- C++20, no runtime dependency. The implementation uses standard-library variants, maps, smart pointers, and visitors. This keeps the language machinery inspectable and portable.
- Braces and semicolons are semantic. The lexer discards whitespace; the parser requires explicit statement termination.
- Validated phase boundaries. Source inspection follows syntax → HIR → verified MIR → validated bytecode. Execution never accepts a failed frontend result.
- Lexical closures. Functions capture environments, not source text or host callbacks.
- Closed objects. Object shapes are not arbitrary property bags; dynamic behavior must be explicit in a future Map/Record type.
- Diagnostics are data. Source locations travel with tokens and AST nodes, and the CLI formats diagnostics consistently.
- Staged VM migration. The tree walker remains the compatibility reference while constructs move through HIR and MIR into the register VM. Unsupported lowering is explicit and diagnostic, never a silent fallback inside inspection commands.
Source captured: 2026-10-11