Qentrah
Projects
Contributing

Architectural decisions

View as Markdown
  1. C++20, no runtime dependency. The implementation uses standard-library variants, maps, smart pointers, and visitors. This keeps the language machinery inspectable and portable.
  2. Braces and semicolons are semantic. The lexer discards whitespace; the parser requires explicit statement termination.
  3. Validated phase boundaries. Source inspection follows syntax → HIR → verified MIR → validated bytecode. Execution never accepts a failed frontend result.
  4. Lexical closures. Functions capture environments, not source text or host callbacks.
  5. Closed objects. Object shapes are not arbitrary property bags; dynamic behavior must be explicit in a future Map/Record type.
  6. Diagnostics are data. Source locations travel with tokens and AST nodes, and the CLI formats diagnostics consistently.
  7. 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