|
From a spec-first foundation to a full CLR backend and public tooling — the path Voyage is charting.
Phase 1: Specification
Ten ADRs, a full grammar, type system, and memory model — settled before any compiler code was written.
Key Milestones
- Settle on Swift-inspired syntax and semantics
- Design the reentrant actor model and atomic{'{}'} rules
- Write ADR-0001 through ADR-0010, grammar.md, type-system.md, memory-model.md
- Push the complete spec to main (23 commits)
Phase 2: Lexer & Parser
A hand-written recursive-descent parser, per ADR-0010, matching Swift's own approach — actively being implemented on the dev branch.
Key Milestones
- Lexer complete: 46 checks, paren-depth-tracking string interpolation
- Parser milestone: 248 passing checks through switch pattern matching
- Close remaining gaps: labeled call arguments, generic-call disambiguation
- Attributes, declaration modifiers, associatedtype dispatch, computed properties
Phase 3: Semantic Analysis
Type checking and name resolution against real CLR assembly metadata — the bridge between a parsed AST and a program the CLR can run.
Key Milestones
- Build symbol tables and scoping rules
- Resolve modules against CLR assembly metadata
- Reconcile the class/grammar.md spec inconsistency
- Implement typed and untyped throws checking
Phase 4: CLR Code Generation
Lowering the checked AST to CLR IL — structs, classes, and actors compiled to their native CLR representations.
Key Milestones
- Emit IL for structs, classes, and actors
- Lower actor mailboxes to Channel<T> on the ThreadPool
- Validate bidirectional C# interop end-to-end
- Run first Voyage program on the CLR
Phase 5: Tooling & Ecosystem
A CLI, package manager, and Language Server Protocol support, leading to a public 0.1 release for early adopters.
Key Milestones
- Ship the Voyage CLI and package manager
- Build a Language Server Protocol implementation
- Publish standard library and interop guides
- Release v0.1.0-alpha to early adopters
Major Phases
Spec ADRs
Parser Checks Passing
Runtime, No FFI