2.8 KiB
2.8 KiB
Phase 20.26 — Final Rust Consolidation + hakmem (Plan)
Purpose
- Consolidate remaining Rust lines to Floor-only responsibilities and move legacy backends to archive with deprecations.
- Keep day-to-day defaults unchanged and green; all flips are opt-in and guarded.
Scope (Phase 20.26)
- Deprecate and archive legacy Rust LLVM (inkwell) backend; prefer ny-llvmc (llvmlite harness).
- Keep Rust as Floor (CLI, I/O, process, FFI) and shift decision/normalization to Hakorune boxes where feasible.
- Add small helper gates for memory (hakmem) without changing defaults.
Non-Goals
- No default behavior changes for users. No removal of legacy code without a full deprecation window (1 release).
- No broad refactor of working paths outside agreed guardrails.
Workstreams
-
Deprecation warnings (inkwell)
- Print a one-time deprecate banner when feature
llvm-inkwell-legacypath executes. - Docs: mark inkwell as legacy and point to ny-llvmc.
- Print a one-time deprecate banner when feature
-
Archive and gate (inkwell)
- Move
src/backend/llvm/compiler/**→archive/legacy/llvm-inkwell/**(paths preserved via#[path]when feature active). - Keep feature gates and tests green; no behavior change.
- Move
-
Runner plan adoption (thin)
- Introduce
RunnerPlanBuilderin lang: build a plan (decision only). Rust applies the plan. - Start as opt-in (
HAKO_RUNNER_PLAN=1), no behavior change by default. - v0: action ExecuteCore/ExecuteVM を適用(Gate‑C/VM)。ExecuteNyLlvmc/Boxes は advisory(将来拡張)。
- Introduce
-
hakmem integration (gate only)
- Keep libc as default allocator. Provide
--mem hakmem/HAKO_C_ABI_ALLOC=hakmemplaceholder route. - No functional switch yet; only routing and docs.
- Keep libc as default allocator. Provide
Milestones
- M1 (A): Deprecation banner + docs scaffold + CURRENT_TASK updated
- M2 (B): Archive move, feature-gated paths compile; quick stays green
- M3 (C): RunnerPlan opt-in wiring; no default change
- M4 (D): hakmem gate documented and observed (no default flip)
Risks & Mitigations
- Risk: Path drift between archived code and callers → Mitigate with
#[path]glue and feature tests. - Risk: Surprise behavior changes → Keep all flips opt-in; add stable tags; Fail-Fast on ambiguity.
Toggles (ENV/CLI)
--vm-backend llvm|vm|mir(ENV:HAKO_VM_BACKEND) — unchangedHAKO_LLVM_USE_HARNESS=1— prefer ny-llvmc harness pathHAKO_C_ABI_ALLOC={libc|hakmem}— allocator gate (default: libc)HAKO_RUNNER_PLAN=1— opt-in RunnerPlan path (decision in lang; v0 は ExecuteCore/ExecuteVM のみ適用)
Acceptance (Phase 20.26 complete)
- quick/integration green with defaults unchanged
- inkwell path prints deprecate banner when used; harness path preferred in docs
- legacy LLVM code archived and feature-gated; build remains green
- docs updated (README/PLAN/CHECKLIST, env toggles, migration notes)