Files
hakorune/docs/private/roadmap/phases/phase-33/PLAN.md

2.0 KiB
Raw Blame History

Phase33 — Execution Plan (Native LLVM AOT)

Milestones

  1. Skeleton & Contract (this phase)
  • Add C ABI header + stub implementation returning NYI
  • CMake project in c/llvm-native/ without LLVM linkage
  • Document API and error policy; keep defaults unchanged (llvmlite)
  1. Minimal Codegen
  • Implement JSON→IR→OBJ for: const i64 / ret / binop / compare+branch
  • Target: Linux x86_64 only; opt-level configurable
  • Add canaries mirroring existing AOT tests (return/binop/if)
  1. Linking
  • Implement .o + libhako_kernel.a → exe
  • Provide flags for relocation model / LTO (optional)
  • Add canaries to assert rc/last-line parity with VM/llvmlite
  1. Packaging & Toggle
  • Provide --aot-engine native / HAKO_AOT_ENGINE=native, fall back to llvmlite if native unavailable
  • Doc: system LLVM vs. bundled releases; size/perf trade-offs

Acceptance (Phase 33)

  • C ABI skeleton present and isolated; repository builds unchanged by default
  • Plan/README written; follow-up work scoped to Phase 34+

Current Blockers (20251031)

  • Harness error in ny-llvmc path: unexpected indent (mir_call.py, line 26) → JSON→EXE が停止。
  • Workspace includes missing plugin crates (plugins/nyash-aot-plugin 等) → --features llvm ビルドが失敗。
  • AOT userbox canary は環境不足(動的プラグイン未構築、パーサ互換)で SKIP。

Immediate Steps

  1. Fix harness indentation (mir_call.py) → return 7 カナリアを緑化EXE 生成・rc 7
  2. Exclude missing plugins from workspaceまたはダミーcratecargo build --features llvm が通る状態へ。
  3. Optional: アーカイバ helper を復帰(.o + libnyash_kernel.a → exe)し、ハーネス迂回のバックアップ経路を確保。

Notes

  • main ブランチは docs のみコミット済み。AOT の作業差分は phase33 ブランチで継続(混在回避)。
  • 既定は llvmlite 維持。native は optin失敗時は llvmlite に自動フォールバック)。