Files
hakorune/docs/phases/phase-11.7_jit_complete/CURRENT_TASK.md

2.6 KiB
Raw Blame History

CURRENT TASK Phase 11.7JIT Complete / Semantics Layer

Focus Window: Semantics導入jit-direct安定化の確定報告 → GC/Sync/非同期のJIT降下着手

合意事項(要約)

  • LLVM AOT は一旦クローズ。Windows 依存と重量を回避し、Cranelift に集中。
  • 単一意味論層Semanticsを導入し、Nyashスクリプト/VM/JIT(exe)を同一動作に揃える。
  • VM は参照実装。JIT は実行/生成を担い、VM→JITのランタイムフォールバックは行わない。

現状ステータス2025-09-01

  • jit-direct 分岐/PHI 合流単一出口BlockParam合流で安定化を確認。
    • テスト: mir-branch-ret, mir-phi-min, mir-branch-multi, mir-nested-branch, mir-phi-two で VM/JIT 一致tag=201/200 一致)。
  • Semantics 層:src/semantics/{mod.rs, eval.rs} にトレイトとPoCインタプリタの骨組みを追加済未配線
  • C ABINyRTcrates/nyrtlibnyrt.a に必要シンボル実装済console/array/string/plugin_invoke/checkpoint/gc_barrier 等)。
  • VM 側Safepoint/書込バリア/簡易スケジューラSingleThread連携は稼働。
  • JIT 側Safepoint/バリア/await はまだスタブまたは未emit要降下

直近タスク(このフェーズでやること)

  1. Semantics 実用化配線VM/JITの動作一致の“芯”
    • SemanticsVMVM実行での実装SemanticsClifLowerCore+IRBuilder委譲を用意。
    • semantics::MirInterpreter で両者を同一MIRへ適用し、差分検出の土台を作る。
  2. JIT へ GC/Sync/非同期の降下
    • Safepoint: I::Safepointnyash.rt.checkpoint emit。nyrt 側で gc.safepoint()scheduler.poll() に橋渡し。
    • Write Barrier: Array/Map の set/push 等をlowerする箇所で nyash.gc.barrier_write を emitCountingGc で検証)。
    • Await: PoC として FutureBox の同期 get にlower動作一致優先
  3. パリティ検証
    • NYASH_GC_COUNTING=1 で VM/JIT ともに safepoint/barrier カウントが増えることを確認。
    • 既存 smokes分岐/PHI/配列/外部呼び出し)で一致を継続監視。

実行メモ

  • BuildJIT: cargo build --release --features cranelift-jit
  • jit-direct: NYASH_JIT_THRESHOLD=1 ./target/release/nyash --jit-direct <app>
  • 追跡: NYASH_JIT_TRACE_RET/SEL/BLOCKS=1、GC: NYASH_GC_COUNTING=1(必要時)

備考

  • LLVM AOT のドキュメント/ツールは維持するが、Windows 前提の依存導入は行わない。Cranelift で“がっちり作る”。