From 9ae3934f0fd3e588ba15c571d41bf4567082bf46 Mon Sep 17 00:00:00 2001 From: agra Date: Thu, 18 Jun 2026 11:35:59 +0300 Subject: [PATCH] =?UTF-8?q?PLAN-COMPILER-VM:=20record=20non-negotiable=20e?= =?UTF-8?q?nd=20state=20=E2=80=94=20ONE=20evaluator,=20legacy=20deleted?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Dual-path + emit-time legacy fallback are transitional scaffolding only; the VM must reach parity at BOTH comptime sites (emit time AND lowering time), after which the -Dcomptime-flat flag, the fallback, and interp.zig are all removed. We do not ship both evaluators permanently. --- current/PLAN-COMPILER-VM.md | 8 ++++++++ 1 file changed, 8 insertions(+) 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)