Files
hakorune/docs/development/strategies/de-rust-roadmap.md

2.8 KiB
Raw Blame History

DeRust Roadmap (Phase 21.9+)

Purpose: reduce Rust surface (nonplugin) while keeping correctness and reversibility. Make Hakorune (Hako) the primary host for parsing/building/executing; keep Rust for kernel/ABI/thin wrappers.

Phases

Phase 0 — Archive (low risk)

  • Target: Rust LLVM backend (src/backend/llvm) — deprecated in favor of Python llvmlite.
  • Action: move to archive/rust-llvm-backend/ with a clear RESTORE.md.
  • Acceptance: cargo build --release (default features) remains green; quick smokes green.
  • Revert: git mv archive/rust-llvm-backend/llvm src/backend/.

Phase 1 — Quick Wins (12 months)

  • hv1_inline → Hako parity (already functionally covered; keep as perf path).
  • MIR interpreter parity check; route Primary to Hako VM.
  • TLV codec → C shim (FFI) with thin Rust wrapper.
  • LLVM wrapper → Hako/C harness (Python stays primary until Hako IR is ready).

Deliverables & Tests

  • hv1_inline: parity canaries = phase2037/flow + phase2170/state; add HAKO_VERIFY_DISABLE_INLINE opt-out (optional).
  • TLV C shim: roundtrip tests (encode→decode) on representative payloads; FFI error mapping spec.
  • MIR interpreter: keep as diagnostic path; parity sample set (const/binop/compare/branch/jump/ret/phi/mir_call minimal).
  • LLVM wrapper: unify CLI entry; ensure NYASH_LLVM_USE_HARNESS=1 path stays green.

Phase 2 — Core Thinning (24 months)

  • Plugin loader thin C wrapper (dlopen/dlsym), unify host ABI.
  • Basic boxes (Array/Map/File) small C core (handlebased), keep Rust shim.
  • Resolver/Using: SSOT in Hako; runner uses shared policy.

SSOT for Using/Resolver (summary)

  • Resolution order: modules (nyash.toml) → relative path inference → not found (warn) with verbose details.
  • Analyzer/HakoCheck follows the same order; runner shares policy helpers. No pathliteral using in strict profiles.

Phase 3 — Longhaul (36 months)

  • Python llvmlite → Hako IR builder + C ABI.
  • Parser/MIR builder fully Hakofirst; Rust becomes fallback.
  • NyKernel minimal C runtime (BoxCall dispatcher + collections + file).

Principles

  • Guard everything by env/features; defaults unchanged.
  • Keep changes reversible (small diffs, RESTORE docs, fallbacks).
  • Test gates: quick smokes + representative hv1/hakovm parity.

Today (suggested)

  1. Stage Phase0 move as a script (not autorun) + RESTORE.md.
  2. Add phase docs (docs/private/roadmap/phases/phase-21.9/PLAN.md).
  3. Keep CI/dev instructions intact (no build break when features=none).

Test Strategy (gates)

  • Quick: tools/smokes/v2/profiles/quick/core/* (phase2037 flow, phase2170 state) — green.
  • Verify routing: HAKO_VERIFY_PRIMARY=hakovm (default); hv1_inline perf path parity (env toggles only).
  • Build: cargo build --release (default features); LLVM paths are optin.
  • Docs: keep RESTORE steps for any archived parts; small diffs, easy rollback.