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

66 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎯 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抽象 + `NoopBuilder`emit数カウント✅ 完了
- `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_function``NYASH_JIT_EXEC=1`かつ対象関数がcompiledならJIT実行し、その`VMValue`を即return現状はargs未使用・trap未実装
備考(制限と次の着手点)
- 返り値はi64VMValue::Integerに限定。f64・bool等は未emit
- 引数は未対応Closureは無視。MIRのLoad/Param配線が必要
- Compare/Branchはカウンタのみemit未着手
- trap→VMフォールバックは未実装Craneliftトラップハンドリング追加が必要
### すぐ試せるコマンド
```bash
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統計の統合