Phase 9.78h: VM BinOp and/or short-circuit + BoxRef<Integer> arithmetic; add diagnostic hooks. Update CURRENT_TASK with progress and VM path-tracing TODO. Align docs: MIR26 canonical spec and phase docs.

This commit is contained in:
Moe Charm
2025-08-26 00:06:35 +09:00
parent 3a8f7092e6
commit f82ad5a84d
19 changed files with 534 additions and 69 deletions

View File

@ -163,22 +163,29 @@ Acceptance:
------------------------------------------------------------
## 🏆 Phase 10: LLVM Direct AOT - 実現可能性検証中
## 🏆 Phase 10: Cranelift JIT主経路 + LLVM AOT後段研究
Summary:
- **調査・実証段階**: MIR→LLVM IR直接変換による最高性能AOT実現を目指す
- インタープリターとの併用で最適な開発・実行体験を提供
- 非同期処理フルサポートasync/await のネイティブ実装)
- **主経路**: MIR→VMを維持しつつ、ホットパスをCraneliftでJIT化して2倍以上の高速化を狙う
- **LLVM AOT**: 設計資産は維持しつつ、JIT安定後Phase 11以降に検討
- **目標**: VMのホットパスBoxCall/Array/Mapで体感高速化、ベンチで優位性を実証
Priority: **Research** (Phase 9.8完了後に実現可能性評価)
Expected Duration: **調査3週間 + 実装3-6ヶ月**(実現可能性次第)
Priority: **High**Phase 8.6完了直後着手)
Expected Duration: **実装6-8週間段階導入**
### 🔍 実現可能性チェック項目
- ✅ **技術的基盤**: MIR 26命令セットLLVM IR変換可能
- ✅ **AOTスケルトン**: 基本構造完成済み
- ✅ **型情報システム**: 最適化に必要な情報完備
- 🔄 **Proof of Concept**: 基本的なMIR→LLVM変換の実証
- ❓ **実装工数**: 現実的な期間での完成可能性
### 🚧 Start Gate着手前の必須完了
- MIRダイエット26命令整合完了Printer/Verifier/Optimizer一致・効果ラベル統一
- Loop SSA復帰Phi/Seal/Pred更新のVerifierチェック合格
- TypeOp網羅is/as/isType/asTypeの早期loweringOptimizer診断未lowering検出
- 軽量スナップショットTypeOp/extern_call/loop/await/boxcallでゴールデン緑
- P2PBox再設計Phase 9.79完了・E2Eグリーン
- CLI分離テスト導線`cargo test -p core`)安定
### 🔍 実現可能性チェック項目Cranelift
- ✅ **技術的基盤**: MIR26整合TypeOp/WeakRef/Barrier
- ✅ **VM統計**: `--vm-stats` でホット関数抽出可能
- 🔄 **Proof of Concept**: MIR→CLIFの最小Lower算術/比較/分岐)
- ❓ **実装工数**: BoxCall/Array/MapのJIT最適化の妥当性
### 🌟 インタープリター併用戦略
```
@ -188,54 +195,39 @@ Expected Duration: **調査3週間 + 実装3-6ヶ月**(実現可能性次第
Web配布: WASMブラウザ対応
```
### 🏗️ Phase 10.1: Proof of Concept3週間)**実現可能性評価**
### 🏗️ Phase 10.1: Proof of Concept2週間)
Investigation Steps:
1) **MIR→LLVM IR変換調査**: 基本命令の変換可能性検証
2) **Box型表現調査**: LLVM IRでのBox型効率的実装方法
3) **C-ABI統合調査**: プラグインとの連携可能性
4) **性能予測**: 理論的な高速化効果の算出
Steps:
1) **JITマネージャ**: プロファイル収集・しきい値設計
2) **MIR→CLIF最小Lower**: Const/BinOp/Compare/Branch/Return
3) **呼出しABI**: VMとの引数/戻り値・BoxRef受け渡し
### 🏗️ Phase 10.2: 基本実装(3ヶ月**実現可能と判断した場合**
### 🏗️ Phase 10.2: 基本実装(4週間
Implementation Steps:
1) `src/backend/llvm/` 基盤構築
2) MIR→LLVM IR基本変換
3) Box操作の最適化エスケープ解析
4) ベンチマーク: 100倍目標
1) `src/backend/cranelift/` 基盤構築
2) MIR→CLIF Lowerの拡充Call/BoxCall/Array系
3) JIT関数テーブル + VM切替の安定化
4) ベンチ: VM比2×目標、BoxCallホットパス優位
### 🌐 Phase 10.3: 非同期拡張2ヶ月**基本実装完了後**
非同期サポート戦略:
- **async/await ネイティブ実装**: Rust風の効率的な非同期
- **軽量ランタイム**: 独自Future実装
- **インタープリター互換**: 同じ非同期セマンティクス
```rust
// Phase 10.3: 非同期LLVM実装予定
FutureNew → LLVM coroutine intrinsics
Await → LLVM suspend/resume points
FutureSet → completion notification
```
### 🌐 Phase 10.3: 非同期の扱い(最小)
- awaitは当面VM側で処理継続JIT対象外
- JIT関数は同期区間を優先将来拡張
### 技術アプローチ
🤖 Copilot協力期待:
- **LLVM統合**: MIR→LLVM IR変換基盤
- **非同期実装**: coroutine/suspend points
- **エスケープ解析**: Box→スタック値最適化
- **型特殊化**: コンパイル時型推論・特殊化
- **Cranelift統合**: MIR→CLIF Lower
- **VMハイブリッド**: JITスイッチ・例外/フォールバック
- **ホットパス最適化**: BoxCall/Array/Mapの直結最適化
### パフォーマンス目標
- **同期処理**: 100-1000倍高速化
- **非同期処理**: Tokio並みの効率性
- **メモリ効率**: Box割当数80%削減
- **起動時間**: ネイティブレベル(<10ms
- **同期処理**: VM比 2×以上段階的に引き上げ
- **起動時間**: 低オーバーヘッドJIT初回コストを隠蔽
### Acceptance Criteria
- インタープリターとの完全な互換性
- 非同期処理の効率的実装
- 1000倍高速化達成同期処理
- プロダクションレベル最適化
- インタープリター/VMとの互換性結果一致
- ホットパスでの実測高速化2×
- 回帰テスト・スナップショットの整備
References:
- docs/予定/native-plan/issues/phase_10_x_llvm_backend_skeleton.md
@ -464,7 +456,7 @@ Acceptance Criteria:
## Phase 10以降の展望
🚀 **WASM復旧完了** (Phase 9.77): 基本機能の完全動作
🚀 **LLVM Direct AOT** (Phase 10): 100-1000倍高速化
🚀 **Cranelift JIT** (Phase 10): VM比2×以上の高速化段階導入
🚀 **非同期ネイティブ実装** (Phase 10.2): async/await完全対応
🚀 **インタープリター併用** : 開発・本番両対応

View File

@ -1,5 +1,8 @@
# 🏆 Phase 10: LLVM Direct AOT最高性能実現
Status: DeferredCranelift JITをPhase 10の主経路に採用、AOTは後段研究
Last Updated: 2025-08-25
## 📋 Summary
MIR→LLVM IR直接変換による最高性能AOT実現。Cranelift JITをスキップし、実用優先戦略でLLVMの強力な最適化を直接活用する。

View File

@ -0,0 +1,62 @@
# Phase 10: Cranelift JIT BackendMIR→VM→Cranelift
Status: Planned (Primary path for native speed)
Last Updated: 2025-08-25
## 🎯 ゴール
- 実行系の主経路を「MIR→VM」を維持しつつ、ホットパスをCraneliftでJIT化して高速化する。
- LLVM AOTは後段Phase 11以降の研究対象へ繰り延べ。
## 🔗 位置づけ
- これまでの案MIR→LLVM AOTを改め、現実的な開発速度と安定性を優先してCranelift JITを先行。
- VMとのハイブリッド実行OSR/ホットカウントに基づくJITを採用。
## 📐 アーキテクチャ
```
AST → MIR → Optimizer → VM Dispatcher
└─(Hot)→ Cranelift JIT (fn単位)
```
- VMが命令カウント・プロファイルを集計し、しきい値超過関数をJITコンパイル。
- JIT済み関数は関数テーブルから直接呼び出し、VMはフォールバック先として維持。
## 📋 スコープ
1) 基盤
- JITマネージャ関数プロファイル・コンパイルキャッシュ
- Craneliftコード生成MIR→CLIF Lower
- 呼出しABINyash VMスタック/レジスタとのブリッジ)
2) 命令カバレッジ(段階導入)
- Phase A: Const/Copy/BinOp/Compare/Jump/Branch/Return純関数相当
- Phase B: Call/BoxCall/ArrayGet/ArraySetホットパス対応
- Phase C: TypeOp/Ref*/Weak*/Barrier必要最小
3) ランタイム連携
- Boxの所有・参照モデルを維持共有/クローンの意味論を破らない)
- 例外・TypeErrorはVMの例外パスへエスケープ
## ✅ 受け入れ基準Milestone
- M1: 算術/比較/分岐/returnの関数がJIT化され、VMより高速に実行
- M2: Array/Mapの代表操作get/set/push/sizeがJITで安定動作
- M3: BoxCallホットパス特にArray/Mapで有意な高速化2×目標
- M4: 回帰防止のベンチと`--vm-stats`連携JITカウント/時間)
## 🪜 実装ステップ
1. JITマネージャ/関数プロファイルの導入VM統計と統合
2. MIR→CLIF Lower骨子基本型/算術/比較/制御)
3. 呼出しABIブリッジ引数/戻り値/BoxRefの表現
4. JIT関数テーブル + VMディスパッチ切替
5. Array/Map/BoxCallのホットパス最適化
6. TypeOp/Ref/Weak/Barrierの必要最小を実装
7. ベンチ/スナップショット整備・回帰検出
## ⚠️ 依存・前提
- MIR26整合TypeOp/WeakRef/Barrierの統合前提
- P2PBox再設計Phase 9.xを先に安定化しておくVM/プラグインE2E維持
## 📚 参考
- Cranelift: Peepmatic/CLIF、simple_jitの最小例
- JIT/VMハイブリッド: LuaJIT/HotSpotのOSR設計
---
備考: LLVM AOTはPhase 11以降の研究路線に移行設計ドキュメントは維持

View File

@ -1,5 +1,8 @@
# Phase 10: LLVM Backend SkeletonMIR→LLVM IR AOT 最小実装)
Status: DeferredCranelift JIT先行のため、AOTは後段で検討
Last Updated: 2025-08-25
目的
- MIRからLLVM IRへの直接変換と、最小AOTパイプラインを構築するための実装ガイドCopilot向けタスクリスト
- Phase 9.7ABI/BIDExternCallを前提に、外部呼び出しの取り扱いも含めて安全に前進。

View File

@ -1,5 +1,8 @@
# Phase 8.4: AST→MIR Lowering完全実装
Status: In Progress (builder分割完了、lowering未完)
Last Updated: 2025-08-25
## 🎯 Issue概要
**現在の最重要課題**: Phase 8.3のBox操作WASMが実際にテストできない
@ -332,4 +335,4 @@ $HOME/.wasmtime/bin/wasmtime run clean_test.wat --invoke main
**優先度**: Critical
**担当**: Copilot + Claude協調実装
**最終目標**: test_wasm_box_integration.nyash が完全動作
**最終目標**: test_wasm_box_integration.nyash が完全動作

View File

@ -1,338 +0,0 @@
# Phase 8.5: MIR 25命令完全仕様実装ChatGPT5 + AI大会議決定版
## 🎯 Issue概要
**最終決定**: AI大会議Gemini+Codex+ ChatGPT5先生によるMIR 25命令完全仕様の実装
**仕様確定**: ChatGPT5先生が「化け物に伸びる余白」と「実装の現実」のちょうど真ん中として設計した、**Nyashのコア価値所有森weakBus効果注釈を無理なくIR化**する完璧な25命令セット
## 📋 確定版: MIR 25命令完全仕様
### **Tier-0: 普遍コア8命令**
```mir
Const // 定数値生成pure
BinOp // 二項演算pure
Compare // 比較演算pure
Branch // 条件分岐control
Jump // 無条件ジャンプcontrol
Phi // SSA phi関数pure
Call // 外部関数呼び出しcontext依存
Return // 関数戻りcontrol
```
**効果**: 将来のJIT/AOT/WASMすべてで必須の基盤
### **Tier-1: Nyashセマンティクス12命令**
```mir
NewBox // 強所有のBox生成所有森のード
BoxFieldLoad // Boxのフィールド読みpure
BoxFieldStore // Boxのフィールド書きmut
BoxCall // Boxのメソッド呼び出しcontext依存
Safepoint // 分割finiや割込み許可ポイントio
RefGet // 参照(強/弱を問わずを値として取得pure
RefSet // 参照の差し替え所有規則検証付きmut
WeakNew // weak ハンドル生成非所有リンク作成pure
WeakLoad // weak から生存チェック付きで強参照取得失効時nullpure
WeakCheck // weak の生存確認boolpure
Send // Bus送信io
Recv // Bus受信io
```
**革命的価値**: **所有森weakBus** が言語一次市民として表現可能
### **Tier-2: 実装補助・最適化友好5命令**
```mir
TailCall // 末尾呼び出しスタック節約control
Adopt // 所有移管: this が子を強所有に取り込むmut
Release // 強所有を解除weak化 or null化mut
MemCopy // 小さなメモリ移動(構造体/配列最適化フックmut
AtomicFence // 並行時の順序保証Actor/Port境界で使用io
```
**位置づけ**: 言語仕様の裏方。無くても表現可能だが、**性能・安全検査・移植性**が安定
## 🔧 効果Effectシステム
### 効果分類と最適化ルール
```rust
pub enum Effect {
Pure, // 再順序化OK、CSE/LICM可能
Mut, // 同一Box/同一Fieldで依存保持
Io, // 再順序化禁止、副作用あり
Control, // 制御フロー変更
}
```
### 命令別効果定義
- **pure**: Const, BinOp, Compare, Phi, RefGet, WeakNew, WeakLoad, WeakCheck
- **mut**: BoxFieldStore, RefSet, Adopt, Release, MemCopy
- **io**: Send, Recv, Safepoint, AtomicFence
- **control**: Branch, Jump, Return, TailCall
- **context依存**: Call, BoxCall呼び先効果に従属
## 🔍 検証Verifier要件
### 所有森検証ルール
```rust
// 1. 強参照のin-degree制約
fn verify_ownership_forest(mir: &MirModule) -> Result<(), VerifyError> {
for instruction in mir.instructions() {
match instruction {
NewBox { dst, .. } => verify_strong_indegree_one(dst)?,
Adopt { parent, child, .. } => verify_ownership_transfer(parent, child)?,
Release { ref_val, .. } => verify_release_safety(ref_val)?,
RefSet { target, new_ref, .. } => verify_refset_safety(target, new_ref)?,
_ => {}
}
}
}
// 2. 強循環禁止検証
fn verify_no_strong_cycles(mir: &MirModule) -> Result<(), VerifyError> {
// 強エッジのみ辿ってDAGであることを確認
}
// 3. weak参照の決定的挙動
fn verify_weak_determinism(mir: &MirModule) -> Result<(), VerifyError> {
// WeakLoad/WeakCheckの失効時はnull/falseを返す例外禁止
}
```
### 安全性検証項目
- [ ] **所有森**: `strong in-degree ≤ 1`NewBox/Adopt/Release/RefSetで常時検査
- [ ] **強循環禁止**: 強エッジのみ辿ってDAGであること
- [ ] **weak/強相互**: 双方向とも強 → エラー片側はWeakNew経由で弱化
- [ ] **RefSetの安全**: 強→強の差し替え時は旧所有元からのReleaseが伴うこと
- [ ] **WeakLoad/WeakCheck**: 失効時はnull/falseを返す例外禁止、決定的挙動
- [ ] **TailCall**: 末尾位置のみ可Return直前
- [ ] **Send/Recv**: at-least-once契約を満たすか、契約を明示
## 🚀 実装範囲・優先度
### Phase 8.5A: コア命令実装(最優先)
- [ ] **Tier-0完全実装**: 8命令の基盤確立
- [ ] **Tier-1 Box操作**: NewBox, BoxFieldLoad/Store, BoxCall
- [ ] **Tier-1 weak参照**: WeakNew, WeakLoad, WeakCheck
- [ ] **効果システム**: Effect注釈とVerifier基盤
### Phase 8.5B: 高度機能(重要)
- [ ] **所有移管**: Adopt, Release命令実装
- [ ] **最適化**: TailCall, MemCopy実装
- [ ] **並行制御**: AtomicFence実装
- [ ] **Bus操作**: Send, Recv統合
### Phase 8.5C: 検証・最適化(完成度)
- [ ] **Verifier完全実装**: 所有森・strong循環・安全性検証
- [ ] **バックエンド対応**: Interpreter/VM/WASM全対応
- [ ] **最適化パス**: pure再順序化・mut依存保持・io順序保証
## 🧪 代表的ロワリング実装例
### 1. look参照のロワリング
```nyash
// Nyashソース
local weak_ref = look parent.child
// MIRロワリング
%0 = WeakNew %parent_child_ref
%1 = WeakLoad %0 // 読み取り時に生存チェック
```
### 2. borrow{}ブロックのロワリング
```nyash
// Nyashソース
borrow parent.field {
use_field(parent.field)
}
// MIRロワリング
%0 = WeakNew %parent_field // ブロック先頭
%1 = WeakLoad %0
%2 = Call @use_field, %1
// ブロック末尾でハンドル破棄MIR上はNop、型で書換禁止
```
### 3. Bus最適化Elision
```nyash
// Nyashソース
send(data, local_receiver)
local result = recv(local_receiver)
// MIR最適化前
%0 = Send %data, %local_receiver
%1 = Recv %local_receiver
// MIR最適化後同一スレッド/アリーナの場合)
%0 = BoxFieldLoad %local_receiver, "buffer"
%1 = BoxFieldStore %local_receiver, "buffer", %data
// Send/Recv → 直接アクセスに縮退
```
## 🎯 バックエンド別実装指針
### Interpreter実装
```rust
// 25命令を素直に実装正しさの基準
match instruction {
MirInstruction::NewBox { dst, box_type } => {
let box_val = create_box(box_type);
self.set_value(dst, box_val);
},
MirInstruction::WeakCheck { dst, weak_ref } => {
let is_alive = self.check_weak_alive(weak_ref);
self.set_value(dst, Value::Bool(is_alive));
},
MirInstruction::TailCall { func, args } => {
self.prepare_tail_call(func, args);
return TailCallResult::Jump;
},
// ... 他23命令
}
```
### VM実装
```rust
// Register-VM + direct-threading
// Send/Recvはローカル判定時にインライン化
impl VM {
fn execute_send(&mut self, data: RegId, target: RegId) {
if self.is_local_target(target) {
// ローカル最適化: 直接バッファ書き込み
self.local_buffer_write(target, data);
} else {
// 通常のBus送信
self.bus_send(data, target);
}
}
}
```
### WASM実装
```rust
// Send/Recvはhost import、MemCopyはmemory.copyに対応
fn compile_mem_copy(&mut self, dst: WasmAddr, src: WasmAddr, size: u32) {
self.emit_wasm_instruction(&WasmInstruction::MemoryCopy {
dst_offset: dst,
src_offset: src,
size,
});
}
fn compile_send(&mut self, data: ValueId, target: ValueId) {
// host importとして実装
self.emit_call_import("env.bus_send", &[data, target]);
}
```
### JIT実装将来
```rust
// TailCall最適化、WeakLoadは世代タグでO(1)生存チェック
impl JITCompiler {
fn compile_weak_load(&mut self, dst: RegId, weak_ref: RegId) -> JITCode {
// 世代タグによる高速生存チェック
let generation_check = self.emit_generation_check(weak_ref);
let load_value = self.emit_conditional_load(weak_ref, generation_check);
self.emit_store_register(dst, load_value)
}
}
```
## 🧪 テスト戦略
### 1. Golden MIR テスト
```bash
# 各サンプルのMIRダンプが全バックエンドで一致
./target/release/nyash --dump-mir test_golden_mir.nyash > golden.mir
./target/release/nyash --backend vm --dump-mir test_golden_mir.nyash > vm.mir
./target/release/nyash --backend wasm --dump-mir test_golden_mir.nyash > wasm.mir
diff golden.mir vm.mir && diff vm.mir wasm.mir
```
### 2. 行動一致テスト
```bash
# 同入力→同出力weak失効時のnull/false含む
./target/release/nyash --backend interpreter test_behavior.nyash > interp.out
./target/release/nyash --backend vm test_behavior.nyash > vm.out
./target/release/nyash --backend wasm test_behavior.nyash > wasm.out
diff interp.out vm.out && diff vm.out wasm.out
```
### 3. 性能スモークテスト
```bash
# 5種の代表ケースで性能継続検証
./target/release/nyash --benchmark add_loop.nyash
./target/release/nyash --benchmark map_getset.nyash
./target/release/nyash --benchmark alloc_free.nyash
./target/release/nyash --benchmark bus_local.nyash
./target/release/nyash --benchmark bus_actor.nyash
# 期待値: VMがinterp以上、WASMがVM以上
```
## ✅ 成功基準
### 必須基準Phase 8.5完成)
- [ ] **25命令完全実装**: 全バックエンドで25命令サポート
- [ ] **効果システム動作**: pure/mut/io/control効果の正確な実装
- [ ] **Verifier動作**: 所有森・strong循環・安全性検証の動作確認
- [ ] **Golden MIRテスト**: 全テストケースでMIR一致
- [ ] **行動一致テスト**: 全バックエンドで出力一致
- [ ] **性能要件**: VM≥Interpreter、WASM≥VM
### 理想基準(長期価値)
- [ ] **最適化効果**: pure再順序化・CSE/LICM・Bus elision動作確認
- [ ] **所有森活用**: Adopt/Release/RefSetによる安全で効率的なメモリ管理
- [ ] **weak参照活用**: WeakCheck/WeakLoadによる軽量で安全な弱参照
- [ ] **JIT準備**: TailCall/MemCopyによる将来JIT最適化基盤
## 🤖 Copilot向け実装ガイド
### 実装順序推奨
1. **Tier-0基盤**: 8命令の確実な実装
2. **Box操作**: NewBox, BoxFieldLoad/StoreEverything is Box核心
3. **weak参照**: WeakNew, WeakLoad, WeakCheck循環参照対策
4. **効果システム**: Effect注釈とVerifier統合
5. **高度機能**: Adopt/Release, TailCall等
6. **テスト**: Golden MIR・行動一致・性能検証
### 重要な設計原則
- **Everything is Box**: BoxFieldLoad/Storeで明確にBox中心設計
- **所有森**: strong in-degree ≤ 1を常時保証
- **決定的挙動**: WeakLoad/WeakCheckの失効時動作を一貫化
- **効果注釈**: 最適化パスの基盤となる正確な効果分類
### デバッグ支援
```bash
# MIR命令別実行トレース
./target/release/nyash --trace-mir-execution test.nyash
# 所有森検証
./target/release/nyash --verify-ownership-forest test.nyash
# 効果システム確認
./target/release/nyash --dump-mir-effects test.nyash
```
## 📊 期待される効果
### 技術的効果
- **所有森weakBus**のIRレベル実現
- JIT/AOT最適化の強固な基盤確立
- バックエンド間の実装一貫性向上
### 開発効率向上
- 意味明確なMIRによるデバッグ性向上
- 最適化パス開発の大幅な容易化
- 長期保守コストの劇的削減
### パフォーマンス向上
- Bus elisionによる通信最適化
- pure命令の積極的再順序化
- TailCall/MemCopyによる実行効率化
---
**優先度**: CriticalPhase 8.4完了直後)
**担当**: Copilot + Claude協調実装
**仕様策定**: ChatGPT5 + AI大会議Gemini+Codex完全一致決定
**最終目標**: Nyashコア価値の完璧なIR化実現

View File

@ -1,5 +1,8 @@
# Phase 8.5: MIR 35→26命令削減プロジェクト緊急実装
Status: In ProgressTypeOp/WeakRef/Barrier統合の整合中
Last Updated: 2025-08-25
## 🚨 **緊急度: Critical**
**発見日**: 2025年8月17日
@ -256,4 +259,4 @@ fn verify_ownership_forest_constraints(mir: &MirModule) -> Result<(), VerifyErro
**想定完了**: 2025年8月17日中本日中
**優先度**: Critical他全作業に優先
**驚異的な進捗**: 当初5週間想定だった作業を1日で90%完了!
**驚異的な進捗**: 当初5週間想定だった作業を1日で90%完了!

View File

@ -1,5 +1,8 @@
# Phase 8.6: VM性能改善実装緊急修正
Status: In ProgressCritical; 0.9×→2×目標
Last Updated: 2025-08-25
## 🚨 Issue概要
**緊急課題**: VMがインタープリターより性能劣化0.9倍)している根本問題の解決
@ -435,4 +438,4 @@ echo "✅ 全テスト完了"
**期間**: 2週間
**担当**: Copilot + Claude協調
この問題解決によりNyash言語のVM実行性能が飛躍的に向上しPhase 9 JIT実装への道筋が確立されます 🚀
この問題解決によりNyash言語のVM実行性能が飛躍的に向上しPhase 9 JIT実装への道筋が確立されます 🚀

View File

@ -1,4 +1,4 @@
# 🚀 Phase 9.75h-0 Complete: Unified Plugin System Developer Guide
# 🚀 Phase 9.75g-0 Complete: Unified Plugin System Developer Guide
**Completion Date**: 2025-08-18
**Status**: ✅ **PRODUCTION READY**
@ -404,4 +404,4 @@ Phase 9.75g-0 **perfectly positions** Nyash for Phase 10 (LLVM AOT):
**Last Updated**: 2025-08-19
**Author**: Claude (AI Assistant)
**Review Status**: Ready for Team Review
**Confidentiality**: Open Source Development Documentation
**Confidentiality**: Open Source Development Documentation

View File

@ -1,5 +1,8 @@
# Phase 9.78b: インタープリター・VM統合アーキテクチャ再設計
Status: Not Started設計完了、実装未着手
Last Updated: 2025-08-25
**作成日**: 2025-08-21
**優先度**: 最高Phase 9.78aの前提条件)
**設計者**: Codex exec (天才的洞察)
@ -209,4 +212,4 @@ use core::model::BoxDeclaration as InterpreterBoxDecl;
---
**総工数見積もり**: 14日各ステップにバッファ含む
**推奨アプローチ**: Step 1-2を先行実施して感触を掴む
**推奨アプローチ**: Step 1-2を先行実施して感触を掴む

View File

@ -0,0 +1,72 @@
# Phase 9.78h: MIRパイプライン前提整備P2P/Cranelift前の全作業
Status: In Progress9.79 P2PBox前のゲート
Last Updated: 2025-08-25
## 🎯 目的
P2PBoxPhase 9.79に着手する前に、MIRパイプラインBuilder/SSA/MIR26/Verifier/Optimizer/VM整合を完全に安定化し、26命令セットで凍結する。これにより、P2P/Craneliftの土台を強固にする。
## 📦 スコープMIRまわりの全タスク
0) 命令セットの凍結26命令が正
- 命令セットの単一出典: `docs/reference/mir/INSTRUCTION_SET.md` を唯一の参照に統一
- コード側の列挙とテスト: `src/mir/instruction.rs` の列挙と一致、総数26のテストで保証ドキュメント≧コードではなくコード≡ドキュメント
- 25命令文献はアーカイブへ移動本流は26命令
1) Builder/Loweringの確定
- Builder移行完了: `builder.rs``builder_modularized/*`(命令フィールド名・効果一致: `function→func`, `arguments→args`
- Loop SSA復帰: `loop_api` によるPhi挿入・seal・predecessor更新の段階適用、簡易lowering除去
- TypeOp早期lowering網羅: `is/as/isType/asType` の関数/メソッド両パスで確実に `TypeOp(Check/Cast)` 生成、`print(isType(...))` 直下もdst化
2) MIR26命令ダイエットの凍結
- TypeOp統合: Check/Castの意味論確定、Printer表示/エフェクト統一
- WeakRef/Barrier統合: flag ON/OFFで差分固定PoC featureで比較可能に
- 命令リストの合意化: 26命令でのPrinter/Verifier/Optimizer整合
3) Verifier/Printer/Optimizer整合
- Verifier: mergeでのphi未使用検知/支配関係、Barrier位置/WeakRef整合のチェック
- Printer: `--mir-verbose` で TypeOp/WeakRef/Barrier を明示、`--mir-verbose-effects``pure|readonly|side`
- Optimizer: 未lowering安全ネットCall/BoxCall→TypeOp強化、`NYASH_OPT_DIAG_FAIL=1` で診断をCIゲート化
4) VM整合ホットパス健全化
- BinOp: `and`/`or` 実装、BoxRef×BoxRefの数値演算サポート
- Compare/Branch: 既定のVoid/Bool/Intセマンティクスを維持、回帰テスト
- Array/Map/BoxCall: get/set/push/size のfast-path・identity shareの確認
- VM Stats: `--vm-stats`, `--vm-stats-json` の代表ケース更新
5) スナップショット/CI導線
- 軽量スナップショット: TypeOp/extern_call/loop/await/boxcall の含有チェックを代表ケースで固定
- ゴールデン比較: `tools/snapshot_mir.sh` + `tools/ci_check_golden.sh` の運用整備
- CLI分離テスト: `cargo test -p core` のみで回る構成CLI変更で止まらない
6) ランタイム/API整備
- ResultBox移行: `box_trait::ResultBox``boxes::ResultBox` へ全面置換、互換層の段階削除
- ドキュメント同期: CURRENT_TASK/CLAUDE/phase-docを更新し参照経路を一本化
## ✅ 受け入れ基準P2P着手ゲート
- [ ] MIR26整合完了Printer/Verifier/Optimizer一致・効果表記統一
- [ ] Loop SSA復帰Phi/Seal/Pred更新がVerifierで合格
- [ ] TypeOp網羅is/as/isType/asTypeの早期loweringOptimizer診断ONで回帰ゼロ
- [ ] 軽量スナップショット緑TypeOp/extern_call/loop/await/boxcall
- [ ] VM未実装の解消And/Or・BoxRef演算
- [ ] CLI分離テスト導線`cargo test -p core`)安定
- [ ] ResultBox移行完了旧参照なし
- [ ] 命令セットの単一出典化INSTRUCTION_SET.mdと総数26のテストがCIで緑
## 🪜 タスク分解(実行順)
1. Builder移行完了命令フィールド名・効果一致
2. Loop SSA復帰Phi/Seal/Pred更新の段階適用
3. TypeOp早期loweringの網羅 + Optimizer安全ネットの強化
4. MIR26統合TypeOp/WeakRef/BarrierとPrinter/Verifier/Optimizer整合
5. VM補強and/or, BoxRef演算, Array/Map fast-path確認
6. 軽量スナップショット + CLI分離テスト + ResultBox移行の仕上げ
## 🔗 依存/参照
- 次フェーズP2P本体: [phase_9_79_p2pbox_rebuild.md](phase_9_79_p2pbox_rebuild.md)
- CURRENT_TASKの「近々/中期」および「Phase 10 着手ゲート」
- `docs/reference/execution-backend/p2p_spec.md`P2Pは9.79で実装)
## 🚫 非スコープ
- P2PBox/IntentBox/MessageBus実装9.79で扱う)
- Cranelift JIT/LLVM AOTPhase 10以降
---
メモ: 9.78hは「MIRの足場を固める」段階。ここで26命令・SSA・検証・スナップショット・VM整合・ResultBox移行までを完了し、9.79(P2P)→Phase 10(Cranelift)へ安全に進む。

View File

@ -0,0 +1,44 @@
# Phase 9.79: P2PBox再設計・実装Cranelift前に完了
Status: Planned (Pre-Cranelift priority)
Last Updated: 2025-08-25
## 🎯 目的
Cranelift導入前にP2P通信基盤P2PBox/IntentBox/MessageBus/Transportsを再設計・実装し、VM/インタープリター双方で安定動作させる。
## 📦 スコープ
1) モデル/API
- IntentBoxTLV/serde互換
- MessageBus単一共有・購読/発行・ログ)
- P2PBoxnew/on/send/pack、デリゲーション整合
2) Transports段階導入
- InProcess同プロセスbus
- WebSocketWSクライアント/サーバ連携)
- WebRTC将来、 signalingはOut of Scope
3) 実行統合
- VM/InterpreterのBoxCall経由で同一API
- プラグイン/ExternCallと競合しない設計BIDと将来統合
## ✅ 受け入れ基準
- `p2p_spec.md` の代表ケースがVM/Interpreterで成功
- E2E: `node_a.send("bob", IntentBox(...))` が InProcess で往復確認
- `NYASH_VM_DEBUG_BOXCALL=1` でも追跡容易(ログ整備)
## 🪜 実装ステップ
前提9.78h: [phase_9_78h_mir_pipeline_stabilization.md](phase_9_78h_mir_pipeline_stabilization.md) の受け入れ基準を満たすこと。
1. IntentBoxの最小実装payload: MapBox/ArrayBox
2. MessageBus購読/発行、ハンドラ登録)
3. P2PBoxnew/on/send、packはビルトインのみ
4. InProcessTransport同プロセス配送
5. WebSocketTransport PoC非同期I/OはInterpreter側、VMはフォールバック
6. E2E/スナップショット・ドキュメント整備
## 🔗 参考
- docs/reference/execution-backend/p2p_spec.md
- docs/guides/p2p-guide.md
---
備考: 既存 `src/boxes/p2p_box.rs` は古い設計。完全新規で実装する。

View File

@ -1,5 +1,8 @@
# Phase 9.8: BIDレジストリ + 自動コード生成ツールWASM/VM/LLVM/言語)
Status: PlannedPhase 8.6完了後に着手)
Last Updated: 2025-08-25
目的What/Why
- 外部ライブラリをBoxBIDとして配布・発見・利用するための基盤を用意する。
- 当面は nyash.toml にBID情報を“埋め込む”方式で回し、将来は外部BID(manifest)参照+自動生成へ段階拡張する。