Files
hakorune/docs/development/current/CURRENT_TASK.md
Moe Charm de03514085 feat: Phase 10_b JIT implementation progress + academic paper ideas
Phase 10_b JIT Lower implementation:
- IRBuilder abstraction with NoopBuilder (emit counting) 
- CraneliftBuilder skeleton (feature `cranelift-jit`) 
- LowerCore implementation (Const/Copy/BinOp/Cmp/Branch/Ret) 
- Engine.compile with builder selection and JIT handle generation 
- JIT function table with stub functions 
- Basic i64 const/binop/ret emission for Cranelift
- VM execution path with NYASH_JIT_EXEC=1 support

Academic ideas and analysis:
- "Everything is Thread-Safe Box" concept
- "GC as debug tool" paradigm analysis
- GC switchable semantic equivalence documentation
- Gemini & Codex evaluation on academic paper potential
- Nyash academic papers potential themes

Current limitations:
- Return values limited to i64 (VMValue::Integer)
- Arguments not yet supported
- Compare/Branch emit not implemented
- Trap→VM fallback not implemented

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-27 03:16:57 +09:00

3.5 KiB
Raw Blame History

🎯 CURRENT TASK - 2025-08-27Phase 10_b → 10_c

フェーズ10はJIT実用化へCore-1 Lowerの雛形を固めつつ、呼出/フォールバック導線を整えるよ。

⏱️ 今日のフォーカス10_b: Lower(Core-1) 最小化 + 10_c準備

  • 目的: IRBuilder抽象/Lowerを整備し、JIT関数テーブルとVM分岐の足場を実装。次の10_cで本実行に繋げる。

直近タスク(小さく早く)

  1. 10_b: Lower/Core-1 最小化(進行中 → ほぼ完了)
    • IRBuilder抽象 + NoopBuilderemit数カウント 完了
    • CraneliftBuilder 雛形feature cranelift-jit 完了
    • LowerCoreConst/Copy/BinOp/Cmp/Branch/Ret 完了emit→Builder
    • Engine.compile: builder選択feature連動Lower実行JIT handle発行 完了
    • JIT関数テーブルstub: handle→ダミー関数 完了
    • 残: 最小emitconst/binop/retをCLIFで生成し、関数ポインタをテーブル登録feature有効時 → 実装: CraneliftBuilderでi64用のconst/binop/retを生成し、JIT関数テーブルへクロージャとして登録完了args未対応・i64専用
  2. 10_c: 呼出/フォールバック(準備 → 部分実装)
    • VM側の疑似ディスパッチログcompiled時/実行時ログ) 完了
    • 残: is_compiled + NYASH_JIT_EXEC=1 でJIT実行→VMValue返却、trap時VMフォールバック → 実装: VM.execute_functionNYASH_JIT_EXEC=1かつ対象関数がcompiledならJIT実行し、そのVMValueを即return現状はargs未使用・trap未実装

備考(制限と次の着手点)

  • 返り値はi64VMValue::Integerに限定。f64・bool等は未emit
  • 引数は未対応Closureは無視。MIRのLoad/Param配線が必要
  • Compare/Branchはカウンタのみemit未着手
  • trap→VMフォールバックは未実装Craneliftトラップハンドリング追加が必要

すぐ試せるコマンド

cargo build --release -j32
NYASH_JIT_STATS=1 NYASH_JIT_DUMP=1 ./target/release/nyash examples/p2p_ping_pong.nyash

# 疑似実行パスを確認まだVMフォールバック
NYASH_JIT_STATS=1 NYASH_JIT_DUMP=1 NYASH_JIT_EXEC=1 \
  ./target/release/nyash examples/p2p_ping_pong.nyash

# 任意Craneliftを含めてビルド今は最小初期化のみ
cargo build --release -j32 --features cranelift-jit

現在の地図Done / Next

完了Phase 9.79b

  • TypeMeta/Thunk正式化・Poly-PIC2〜4・Plugin TLV拡張bool/i64/f64/bytes
  • VM fast-path整備Instance/Plugin/Builtinと統計サマリ強化

⏭️Phase 10

  • 10_a: JITブートストラップ 完了
  • 10_b: Lower(Core-1) Const/Move/BinOp/Cmp/Branch/Ret最小emit仕上げ中
  • 10_c: ABI/呼出し JIT→JIT/JIT→VM、例外バイアウト実行経路を実体化
  • 10_d: コレクション基礎 Array/Mapブリッジ
  • 10_e: BoxCall高速化 Thunk/PIC直結
  • 10_f: TypeOp/Ref/Weak/Barrier最小
  • 10_g: 診断/ベンチ/回帰
  • 10_h: 硬化・最適化調整

参考リンク

  • フェーズ10ロードマップ: docs/development/roadmap/phases/phase-10/phase_10_cranelift_jit_backend.md
  • MIR命令セット: docs/reference/mir/INSTRUCTION_SET.md
  • VM/Thunk/PIC: docs/development/roadmap/phases/phase-9/phase_9_79b_3_vm_vtable_thunks_and_pic.md

Parking Lot後でやる

  • Lower emitのテスト雛形
  • CLIFダンプ/CFG表示NYASH_JIT_DUMP=1
  • VM --vm-stats とJIT統計の統合