diff --git a/current/PLAN-COMPILER-VM.md b/current/PLAN-COMPILER-VM.md index 2acaeeae..5a8cb4b1 100644 --- a/current/PLAN-COMPILER-VM.md +++ b/current/PLAN-COMPILER-VM.md @@ -41,6 +41,14 @@ fast. field-by-field marshaling — gone. - `declare`/`define`/`type_info` and `#compiler`/`BuildOptions` ride this one mechanism; the bespoke interp arms are deleted. +- **ONE evaluator at the end — non-negotiable.** The legacy tagged-`Value` interpreter + (`interp.zig`) is **DELETED**. We do NOT ship both permanently. "Dual-path" + (a compiler-API fn with both a legacy `compiler_lib` handler AND a VM-native impl) and + the emit-time legacy fallback are **transitional only** — scaffolding while the VM + reaches parity at BOTH comptime sites (emit time AND lowering time). The flag + `-Dcomptime-flat` is the swap mechanism; once the VM runs everywhere with parity, the + flag, the fallback, and `interp.zig` all go. Any "VM-only at emit, legacy at lowering" + split is a waypoint, never the destination. ## Principles (hold at every step)