+Full pipeline working: Source → Lex → Parse → Naming → Resolve → TypeCheck → Lower → CodegenC → zig cc. Implemented end to end: functions (with parameters), let/var, assignments, if/else, all loop forms (`for cond`, `for i in a..b`, `for x in slice`, `for i, v in slice`, break/continue), switch (multi-pattern arms, wildcard, string subjects, `.ok`/`.err` on error unions), structs with Go-style methods (&T/@T/value receivers), non-capturing closures and function values, error unions (`!T`, bare `!`, `try` propagation, `errors.new`), slices (alloc/append/len/index with runtime bounds checks), channels and `run` spawning (user main runs as a green thread). Memory safety: epoch-based generational references with quarantined free lists — stale references always fail their check deterministically; checked dereference costs ~3 ns. Constructs without a lowering (sum types, interfaces, maps, nullable, anonymous structs, capturing closures) produce compile errors instead of miscompiling. Diagnostics use Rust-style rich format with source context, caret annotations, notes/help/hints, "did you mean?" suggestions, and error count summaries.
0 commit comments