2025-08-27 03:16:57 +09:00
|
|
|
|
# 🎯 CURRENT TASK - 2025-08-27(Phase 10_b → 10_c)
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-27 03:16:57 +09:00
|
|
|
|
フェーズ10はJIT実用化へ!Core-1 Lowerの雛形を固めつつ、呼出/フォールバック導線を整えるよ。
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-27 03:16:57 +09:00
|
|
|
|
## ⏱️ 今日のフォーカス(10_b: Lower(Core-1) 最小化 + 10_c準備)
|
|
|
|
|
|
- 目的: IRBuilder抽象/Lowerを整備し、JIT関数テーブルとVM分岐の足場を実装。次の10_cで本実行に繋げる。
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-26 20:30:07 +09:00
|
|
|
|
### 直近タスク(小さく早く)
|
2025-08-27 03:16:57 +09:00
|
|
|
|
1) 10_b: Lower/Core-1 最小化(進行中 → ほぼ完了)
|
|
|
|
|
|
- IRBuilder抽象 + `NoopBuilder`(emit数カウント)✅ 完了
|
|
|
|
|
|
- `CraneliftBuilder` 雛形(feature `cranelift-jit`)✅ 完了
|
|
|
|
|
|
- LowerCore(Const/Copy/BinOp/Cmp/Branch/Ret)✅ 完了(emit→Builder)
|
|
|
|
|
|
- Engine.compile: builder選択(feature連動)+Lower実行+JIT handle発行✅ 完了
|
|
|
|
|
|
- JIT関数テーブル(stub: handle→ダミー関数)✅ 完了
|
|
|
|
|
|
- 残: 最小emit(const/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_function`で`NYASH_JIT_EXEC=1`かつ対象関数がcompiledならJIT実行し、その`VMValue`を即return(現状はargs未使用・trap未実装)
|
|
|
|
|
|
|
|
|
|
|
|
備考(制限と次の着手点)
|
|
|
|
|
|
- 返り値はi64(VMValue::Integer)に限定。f64・bool等は未emit
|
|
|
|
|
|
- 引数は未対応(Closureは無視)。MIRのLoad/Param配線が必要
|
|
|
|
|
|
- Compare/Branchはカウンタのみ(emit未着手)
|
|
|
|
|
|
- trap→VMフォールバックは未実装(Craneliftトラップハンドリング追加が必要)
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-26 20:30:07 +09:00
|
|
|
|
### すぐ試せるコマンド
|
2025-08-23 18:52:18 +09:00
|
|
|
|
```bash
|
|
|
|
|
|
cargo build --release -j32
|
2025-08-27 03:16:57 +09:00
|
|
|
|
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
|
2025-08-23 18:52:18 +09:00
|
|
|
|
```
|
2025-08-26 05:49:23 +09:00
|
|
|
|
|
2025-08-26 20:30:07 +09:00
|
|
|
|
## 現在の地図(Done / Next)
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-27 03:16:57 +09:00
|
|
|
|
### ✅ 完了(Phase 9.79b)
|
|
|
|
|
|
- TypeMeta/Thunk正式化・Poly-PIC(2〜4)・Plugin TLV拡張(bool/i64/f64/bytes)
|
|
|
|
|
|
- VM fast-path整備(Instance/Plugin/Builtin)と統計サマリ強化
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-27 03:16:57 +09:00
|
|
|
|
### ⏭️ 次(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: 硬化・最適化調整
|
2025-08-26 19:13:57 +09:00
|
|
|
|
|
2025-08-26 20:30:07 +09:00
|
|
|
|
## 参考リンク
|
2025-08-27 03:16:57 +09:00
|
|
|
|
- フェーズ10ロードマップ: `docs/development/roadmap/phases/phase-10/phase_10_cranelift_jit_backend.md`
|
2025-08-26 20:30:07 +09:00
|
|
|
|
- MIR命令セット: `docs/reference/mir/INSTRUCTION_SET.md`
|
2025-08-27 03:16:57 +09:00
|
|
|
|
- VM/Thunk/PIC: `docs/development/roadmap/phases/phase-9/phase_9_79b_3_vm_vtable_thunks_and_pic.md`
|
2025-08-26 05:49:23 +09:00
|
|
|
|
|
2025-08-26 19:13:57 +09:00
|
|
|
|
## Parking Lot(後でやる)
|
2025-08-27 03:16:57 +09:00
|
|
|
|
- Lower emitのテスト雛形
|
|
|
|
|
|
- CLIFダンプ/CFG表示(`NYASH_JIT_DUMP=1`)
|
|
|
|
|
|
- VM `--vm-stats` とJIT統計の統合
|