Files
hakorune/docs/予定/native-plan/copilot_issues.txt
Moe Charm e0f0a658e6 docs: Phase 9.75 Box設計根本革命 - SocketBox Arc<Mutex>責務一元化
 Phase 9.75実装計画追加:
- copilot_issues.txtにPhase 9.75追加(Phase 9.7と9.8の間)
- Arc<Mutex>二重化問題の根本解決計画
- 段階的実装戦略(Phase A-D)定義

📚 Box設計ドキュメント完全体系化:
- docs/説明書/reference/box-design/ 新設
- everything-is-box.md: 核心哲学の完全解説
- memory-management.md: Arc<Mutex>設計・fini/weak参照
- delegation-system.md: 完全明示デリゲーション仕様
- box-types-catalog.md: 全Box型の完全カタログ
- ffi-abi-specification.md: FFI/ABI仕様(移動済み)

🔧 実装ノート完備:
- current-issues.md: 現在進行中の設計課題
- socket-box-problem.md: Arc<Mutex>二重化問題詳細分析
- phase-9-75-redesign.md: 実装計画詳細

👥 Copilot実装ガイド作成:
- phase9_75_socketbox_arc_mutex_redesign.md
- SocketBox優先対応の具体的実装手順
- 完全テストスイート設計
- 段階的実装戦略(Step 1-5)

📋 CURRENT_TASK.md更新:
- Box設計ドキュメント完成記録
- Phase 9.75準備完了状況

🎯 効果:
- Everything is Box哲学の体系的文書化
- SocketBox問題解決の明確な道筋
- Copilot協調実装の準備完了
- 新規開発者オンボーディング改善

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-15 07:47:09 +09:00

1205 lines
46 KiB
Plaintext
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.

# 🤖 Copilot様 作業予定・課題整理 (Phase 0-14 全体ロードマップ)
# Generated: 2025-08-14 (Git履歴から復元・更新)
# Purpose: Claude×Copilot協調開発のための情報共有
================================================================================
🎯 次期最優先タスク (Phase 8.5以降)
================================================================================
## 🚀 Phase 8.4完了報告 (2025-08-14)
Status: ✅ 完了 (Copilot PR #56マージ済み)
### ✅ AST→MIR Lowering完全実装
- User-defined Box: `box DataBox { init { value } }`
- Object creation: `new DataBox(42)`
- Field access: `obj.value`
- Method calls: `c.increment()`
- Delegation: `from Parent.greet()`
- Static Main互換性維持
### 🧪 統合テスト結果2025-08-14
- ✅ **AST→MIR**: 完全動作
- ✅ **インタープリター**: 完全動作結果30
- 🚨 **VM**: 動作するが結果が`void`(要修正)
- 🚨 **WASM**: String constant未対応Phase 8.5で解決)
### 📋 発見された課題
- VM実行結果問題: BoxCall後の戻り値が正しく返らない
- WASM対応不足: 複雑なMIR命令String constant, BoxCallに未対応
- 次期Phase 8.5での25命令MIR階層化が必要
================================================================================
## 🔧 Phase 8.5: MIR 26命令階層化最優先
Status: ⭐ **CRITICAL**
Priority: **最重要** (Phase 8.4完了直後の次期目標)
### 🎯 実装目標
ChatGPT5 + AI大会議決定版26命令MIR実装ExternCall追加
- 期間: 3週間
- 効果: VM/WASM問題根本解決
- 詳細仕様: `/docs/予定/native-plan/issues/phase_8_5_mir_25_instruction_specification.md`
### 📋 26命令セマンティック階層化
**Tier-0: 普遍コア8命令**
```mir
Const, BinOp, Compare, Branch, Jump, Phi, Call, Return
```
**Tier-1: Nyashセマンティクス13命令**
```mir
NewBox, BoxFieldLoad, BoxFieldStore, BoxCall, ExternCall, Safepoint,
RefGet, RefSet, WeakNew, WeakLoad, WeakCheck, Send, Recv
```
**Tier-2: 実装補助・最適化友好5命令**
```mir
TailCall, Adopt, Release, MemCopy, AtomicFence
```
### 🎯 期待される効果
- **VM問題解決**: BoxCallの正しい実装で戻り値問題修正
- **WASM対応**: 階層化により複雑MIR→単純WASM変換
- **Everything is Box**: BoxFieldLoad/Storeで明確なBox中心設計
- **JIT準備**: セマンティクス保持で高度最適化基盤確立
================================================================================
## 🏎️ Phase 8.6: VM性能改善緊急
Status: 🚨 **緊急**
Priority: **High** (Phase 8.5完了後)
### 🚨 緊急問題
**現状**: VM119.80ms< Interpreter110.10ms= 0.9倍の性能劣化
**新問題**: VM BoxCall後の戻り値が`void`Phase 8.4テストで発見)
### 📋 技術的課題
- VM実行エンジンのプロファイリング
- 命令ディスパッチ最適化threaded code等
- レジスタベースVM化検討
- メモリプール最適化
- BoxCall実装修正戻り値問題
### 🎯 成功基準
- VM性能 > Interpreter性能最低2倍目標
- BoxCall戻り値の正常動作
- MIR→VM変換時間の短縮
================================================================================
## 🧪 Phase 8.7: Real-world Memory Testing
Status: 📋 **計画済み**
Priority: **High** (Phase 8.5-8.6完了後)
### 🎯 実装目標
kiloテキストエディタ実装によるfini/weak参照システム実証
- 期間: 2週間
- 詳細仕様: `/docs/予定/native-plan/issues/phase_8_7_real_world_memory_testing.md`
### 📋 検証項目
- 1000+オブジェクト管理テスト
- 循環参照回避確認weak参照
- fini()伝播の正確性確認
- WASM環境での動作確認
================================================================================
🗺️ Phase 0-14 全体ロードマップ (復元完了)
================================================================================
## Phase 0: Stabilize native CLI build (Linux/Windows)
Summary:
- CLIバイナリ nyash を最小構成で安定ビルド・実行できる状態にする。
- examples/GUI をデフォルトのビルド対象から外し、開発の足場を固める。
Why:
- 以降の MIR/VM/JIT 開発を素早く検証できる基盤づくり。
Scope:
- Cargo の features で GUI/examples 等を切り分け、デフォルトは CLI 最小にする。
- CLI オプションの動作点検(--dump-mir / --verify
- ローカル実行導線を README に明記docs/guides/how-to-build-native/README.md
Tasks:
- Cargo.toml: examples/GUI を feature でガードdefault は CLI 最小)。
- ビルド検証: `cargo build --bin nyash`Linux/Windows
- 実行検証: `cargo run -- ./local_tests/sample.nyash`。
- ドキュメント: 上記手順を how-to-build-native に追記/点検。
Acceptance Criteria:
- Linux/Windows で `cargo build --bin nyash` が成功する。
- `local_tests/` 配下の簡単な .nyash が実行できる。
- 他 bin/examples が壊れていても `--bin nyash` だけで通る。
Out of Scope:
- examples/GUI の修理・最適化。
- JIT/AOT/WASM。
References:
- docs/guides/how-to-build-native/README.md
- docs/nativebuild大作戦/chatgptネイティブビルド大作戦.txtPhase 0
- CURRENT_TASK.md
Copilot Notes:
- まずは features 分離と `--bin nyash` でビルドが通る状態を作る。README の手順確認まで含めて PR に反映。
------------------------------------------------------------
## Phase 1: Minimal MIR + VM backend (lowering + runner)
Summary:
- AST → MIR の最小 lowering と、VM バックエンドでの実行を通す。
Scope:
- MIR: Const, BinOp, Compare, Branch, Jump, Phi, Return の最小命令
- Lowering: リテラル/二項演算/if/loop/return のみ
- VM: 上記命令の最小実装
Tasks:
- instruction.rs: 最小命令の定義
- builder.rs: 上記 AST 範囲を lowering
- vm.rs: 実装 + stats命令数
Acceptance Criteria:
- `--dump-mir` が最小サンプルで期待通り
- `--backend vm` で実行して結果一致
Out of Scope:
- 例外/関数/Box 参照/弱参照
------------------------------------------------------------
## Phase 2: Control-flow coverage (if/else/loop/phi correctness)
Summary:
- 制御フローの網羅と Phi の整合性検証を拡充。
Scope/Tasks:
- if/else nested, loop with breaks, nested loops のスナップショット
- Phi の入力ブロック/値の対応を Verifier で強化
Acceptance Criteria:
- 代表制御フローの snapshot が安定し、verify も通る
------------------------------------------------------------
## Phase 3: Exceptions (throw/try/catch/finally) minimal lowering
Summary:
- 例外機構の最小 lowering を導入(詳細設計は簡素)。
Scope/Tasks:
- MIR: Throw, TryBegin/TryEnd, Catch, FinallyBegin/End最小
- builder.rs: try/catch/finally ノードの下ろし
- VM: 例外伝播を最小で(未捕捉はエラー)
Acceptance Criteria:
- 代表 try/catch/finally のスナップショットと VM 実行
Out of Scope:
- 例外の型体系、詳細な stack map
------------------------------------------------------------
## Phase 4: Functions and calls (BoxCall minimal)
Summary:
- 関数呼び出し/BoxCall を最小導入(効果注釈は保守的)。
Scope/Tasks:
- MIR: Call, BoxCalleffects = READS_HEAP など保守)
- builder.rs: FunctionCall/MethodCall の最小対応
- VM: 呼び出し/戻り値
Acceptance Criteria:
- 簡単な関数定義/呼び出しの MIR/VM が通る
Out of Scope:
- 可変長/キーワード引数、FFI
------------------------------------------------------------
## Phase 5.0: Parser/AST stabilization for lowering
Summary:
- lowering 対象 AST の表現ぶれを修正、安定化。
Scope/Tasks:
- AST: If/Loop/Return/Assignment/Local などの統一
- Parser: エラー復帰/スパン情報の見直し
Acceptance Criteria:
- builder.rs の分岐がシンプル化、テストが安定
------------------------------------------------------------
## Phase 5.1: Control-flow edge cases + verifier hardening
Summary:
- ブロック未終端/未到達/自己分岐等の検証強化でクラッシュ回避。
Scope/Tasks:
- Verifier: 未終端ブロック検出、到達不能検出
- Builder: Jump/Branch の生成前後の状態管理改善
Acceptance Criteria:
- 不正ケースを含むスナップショット/verify が緑
------------------------------------------------------------
## Phase 5.2: Lowering for static box Main (BoxDeclaration → main body)
Summary:
- static box Main { main() { ... } } を MirBuilder で受け、main() の body を Program として lowering する経路を実装。
Scope/Tasks:
- AST: BoxDeclaration(is_static=true, name=Main) を検出 → main() を抽出
- Lowering: body を Program に変換して既存経路に渡す
- Tests: local_tests/mir_loop_no_local.nyash で dump/VM が通る
Acceptance Criteria:
- `--dump-mir` が static Main サンプルで成功
- `--backend vm` で実行成功
References:
- docs/guides/how-to-build-native/issues/phase5_2_static_main_lowering.md
------------------------------------------------------------
## Phase 6: Box ops minimal (Ref/Weak + Barriers no-op)
Summary:
- 参照/弱参照/バリアno-opを最小導入。
Scope/Tasks:
- MIR: RefNew/RefGet/RefSet/WeakNew/WeakLoad/BarrierRead/Write
- Lowering: New/FieldAccess/MethodCall の最小対応
- VM: 参照テーブル/weak テーブルで動作fini 不変は維持)
Acceptance Criteria:
- 代表サンプルで dump/VM/verify が通る
References:
- docs/guides/how-to-build-native/issues/phase6_box_ops_minimal.md
------------------------------------------------------------
## Phase 7: Async model (nowait/await) in MIR
Summary:
- nowait/await を MIR に導入し、現行 FutureBox と連携。
Scope/Tasks:
- MIR: FutureNew/FutureSet/Awaitスレッドベース
- Lowering: nowait→Future 作成、await→wait_and_get
- VM: FutureBox 実装を利用
Acceptance Criteria:
- 代表ケースで正しく並行実行→await 回収
References:
- docs/guides/how-to-build-native/issues/phase7_async_mir.md
------------------------------------------------------------
## Phase 8: MIR→WASM codegen (browser/wasmtime; sandboxed; Rust runtime free)
Summary:
- MIR から素の WebAssembly を生成し、ブラウザ/wasmtimeWASIでサンドボックス実行する。
- Rust はコンパイラ本体のみ。実行は純WASMホストimportenv.print など)。
Scope/Tasks:
- ABI/Imports/Exports 定義exports: main/memory、imports: env.print(i32) 等の最小)
- 線形メモリと簡易ヒープbump/自由リスト)
- 命令カバレッジ(段階導入): 算術/比較/分岐/loop/return/print、RefNew/RefSet/RefGetPhase 6 整合、Weak/Barrier はダミー
Acceptance Criteria:
- wasmtime 実行で戻り値/print が期待通りPoC12
- Ref 系がメモリ上で正しく動作PoC2
- Weak/Barrier のダミー実装を含むWASMが生成・実行PoC3
- CLI `--backend wasm` は未実装でもよいが、実装する場合は明瞭にエラーメッセージ/誘導
References:
- docs/予定/native-plan/README.mdPhase 8 節)
- docs/説明書/wasm/*(ユーザー向けメモ)
### Phase 8.3 完了状況 (2025-08-14)
✅ Box操作WASM実装 (RefNew/RefGet/RefSet)
✅ ベンチマークシステム統合 (13.5倍実行高速化実証)
✅ CLI統合完了
------------------------------------------------------------
## 🔧 Phase 8.4: AST→MIR Lowering完全実装 (最優先)
Summary:
- ユーザー定義Box、フィールドアクセス等の未実装部分を完成
- Phase 8.3のBox操作WASMを実際にテスト可能にする
Priority: **Critical** (現在の最優先事項)
Expected Duration: 1週間
### 実装範囲
- [ ] ユーザー定義Box: `box DataBox { init { field } }`
- [ ] オブジェクト生成: `new DataBox()`
- [ ] フィールドアクセス: `obj.field`
- [ ] フィールド代入: `obj.field = value`
- [ ] from構文: `from Parent.method()`
- [ ] override構文: `override method() { ... }`
### 成功基準
- Phase 8.3のBox操作WASMが実際に動作
- test_wasm_box_ops.nyash が正常実行
- ユーザー定義Boxの完全サポート
------------------------------------------------------------
## 🧠 Phase 8.5: MIRセマンティック階層化AI大会議決定版
Summary:
- 方針転換: ChatGPT5の20命令intrinsic戦略 → Gemini+Codex一致推奨の26命令階層化ExternCall追加
- 理由: JIT/AOT最適化阻害・Everything is Box意味喪失・長期コスト増の問題判明
- 二相ロワリング: 26命令維持パスVM/JIT/AOT+ 21+intrinsic降格パスWASM/最小実装)
Priority: High (Phase 8.4完了後)
Expected Duration: 3週間
### AI大会議分析結果
**Gemini先生理論**: 「賢いコンパイラは、賢いMIRから生まれる」
- RefNew/WeakLoadのintrinsic化は最適化機会を失う悪手
- セマンティック階層化で意味保持が最適化の鍵
**Codex先生実装**: 二相ロワリング戦略が実用的最適解
- 実装コスト: 5命令追加で10-20人日intrinsic戦略より安い
- マイクロベンチ実測でパフォーマンス検証
### 確定版MIR26命令- ChatGPT5完全仕様 + ExternCall統合
**Tier-0: 普遍的コア8命令**
```mir
Const, BinOp, Compare, Branch, Jump, Phi, Call, Return
```
**Tier-1: Nyashセマンティクス13命令**
```mir
NewBox, // 強所有のBox生成所有森のード
BoxFieldLoad, // Boxのフィールド読みEverything is Box核心
BoxFieldStore, // Boxのフィールド書きmut効果
BoxCall, // Boxのメソッド呼び出し動的/静的両方)
ExternCall, // 外部ライブラリをBoxとして呼び出しUniversal Exchange
Safepoint, // 分割finiや割込み許可ポイント
RefGet, // 参照(強/弱を問わず)を値として取得
RefSet, // 参照の差し替え(所有規則検証付き)
WeakNew, // weak ハンドル生成(非所有リンク作成)
WeakLoad, // weak から生存チェック付きで強参照取得失効時null
WeakCheck, // weak の生存確認bool
Send, // Bus送信io効果
Recv // Bus受信io効果
```
**Tier-2: 実装補助・最適化友好5命令**
```mir
TailCall, // 末尾呼び出し(スタック節約)
Adopt, // 所有移管: this が子を強所有に取り込む
Release, // 強所有を解除weak化 or null化
MemCopy, // 小さなメモリ移動(構造体/配列最適化フック)
AtomicFence // 並行時の順序保証Actor/Port境界で使用
```
### 二相ロワリング戦略
- パスA: VM/JIT/AOT向け26命令のまま最適化
- パスB: WASM/最小実装向け26→21+intrinsic降格
- バックエンド能力に応じて最適形式選択
### 効果EffectシステムChatGPT5設計 + ExternCall統合
- **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, ExternCall呼び先効果に従属・BID定義に基づく
**最適化ルール**: 「pure同士の再順序化OK」「mutは同一Box/同一Fieldで依存保持」「ioは再順序化禁止」
### 検証Verifier要件
- **所有森**: `strong in-degree ≤ 1`NewBox/Adopt/Release/RefSetで常時検査
- **強循環禁止**: 強エッジのみ辿ってDAGであること
- **weak/強相互**: 双方向とも強 → エラー片側はWeakNew経由で弱化
- **WeakLoad/WeakCheck**: 失効時はnull/falseを返す例外禁止、決定的挙動
### 🤖 Copilot協力期待
- **Tier-0/1実装**: Everything is Box哲学の完璧なIR化BoxFieldLoad/Store核心
- **weak参照システム**: WeakNew/WeakLoad/WeakCheck三位一体実装
- **所有移管**: Adopt/Release命令による安全で効率的なメモリ管理
- **効果システム**: pure/mut/io/control効果の正確な実装とVerifier統合
- **最適化フック**: TailCall/MemCopy/AtomicFenceの実装補助
- **二相ロワリング**: 25命令維持パス + 20+intrinsic降格パス構築
### 成功基準
- [ ] **26命令完全実装**: ChatGPT5仕様 + ExternCall統合の完璧な実装
- [ ] **効果システム動作**: pure再順序化・mut依存保持・io順序保証
- [ ] **Verifier動作**: 所有森・strong循環・安全性検証
- [ ] **Golden MIRテスト**: 全バックエンドでMIR一致
- [ ] **行動一致テスト**: 同入力→同出力weak失効時null/false含む
- [ ] **性能要件**: VM≥Interpreter、WASM≥VM継続検証
### バックエンド指針ChatGPT5設計 + ExternCall統合
- **Interpreter**: 26命令を素直に実装正しさの基準
- **VM**: Register-VM + direct-threading。Send/Recvはローカル判定時にインライン化
- **WASM**: Send/Recvはhost import。MemCopyはmemory.copyに対応
- **JIT将来**: TailCall最適化、WeakLoadは世代タグでO(1)生存チェック
References:
- docs/予定/native-plan/MIR仕様書.txtChatGPT5完全仕様
- docs/予定/native-plan/issues/phase_8_5_mir_25_instruction_specification.md
------------------------------------------------------------
## 🏎️ Phase 8.6: VM性能改善 (緊急)
Summary:
- VMがインタープリターより遅い問題0.9倍)を解決
- MIR→VM実行の最適化でインタープリターを上回る性能へ
Priority: High (Phase 8.5完了後)
Expected Duration: 2週間
### 問題分析
**現状**: VM (119.80ms) < Interpreter (110.10ms)
**推定原因**:
- MIR変換オーバーヘッド
- VM命令ディスパッチの非効率性
- メモリ管理コスト
### 技術的アプローチ
- [ ] VM実行エンジンのプロファイリング
- [ ] 命令ディスパッチ最適化threaded code等
- [ ] レジスタベースVM化検討
- [ ] メモリプール最適化
### 🤖 Copilot協力期待
- VM実装のボトルネック特定
- 効率的な命令ディスパッチ実装
- スタックマシン vs レジスタマシン判断
### 成功基準
- VM性能 > Interpreter性能最低2倍目標
- MIR→VM変換時間の短縮
- メモリ使用量の削減
------------------------------------------------------------
## 🧪 Phase 8.7: Real-world Memory Management Testing (ChatGPT協調設計)
Summary:
- 実用アプリケーション開発によるNyashメモリ管理システムの実証テスト
- finiシステム・weak参照の実用性を複雑なアプリケーションで検証
Priority: High (Phase 8.4-8.6完了直後)
Expected Duration: 2週間
### Phase 8.7A: kiloテキストエディタ
**技術的特徴**:
- サイズ: <1k LOC超小型、最初の成功体験
- メモリパターン: Editor -> (Rows -> Syntax) 木構造+相互参照
- ChatGPT設計: Editor削除でRows自動解放、逆参照をweak化
**実装範囲**:
- [ ] Editor/Row/EditorState基本構造実装
- [ ] weak参照による循環参照回避`me.editor = weak editor_ref`
- [ ] fini()システムによる自動メモリ解放
- [ ] 大量オブジェクト1000+ Rows管理テスト
**検証ポイント**:
- [ ] Editor削除でRows自動解放確認
- [ ] 相互参照でメモリリークなし確認
- [ ] weak参照の自動null化確認
- [ ] fini()伝播の正確性確認
### Phase 9.5予定: tiny-web-serverHTTPサーバ
**将来実装**JIT実装後:
- 複雑度: 中〜高Server -> Clients -> Requests並行処理
- I/O管理: ソケット・ファイルハンドルの確実解放
- 同時接続・早期切断・例外経路でのfini伝播テスト
### 🤖 Copilot協力期待
- 実用的なメモリ管理パターンの実装
- weak参照構文の適切な使用
- デバッグ支援機能(--debug-memory, --trace-weak
- WASM環境でのメモリ管理互換性
### 成功基準
- [ ] 全テストケースでメモリリークなし
- [ ] 循環参照でも正常解放確認
- [ ] WASM実行でもメモリ管理正常
- [ ] ベンチマーク性能劣化なし
### 期待される効果
- Nyashメモリ管理システムの実用性実証
- Everything is Box哲学の実用レベル確認
- メモリ安全なプログラミングパターン確立
References:
- docs/予定/native-plan/issues/phase_8_7_real_world_memory_testing.md
------------------------------------------------------------
## 🚀 Phase 9: AOT WASM実装最優先
Summary:
- wasmtime compileによるAOT実行ファイル生成で確実なユーザー価値提供
Scope/Tasks:
- `wasmtime compile` 統合実装
- `--compile-native` / `--aot` CLI追加
- 単一バイナリ梱包(`include_bytes!`
- 起動時間・配布サイズ最適化
Acceptance Criteria:
- `nyash --compile-native app.nyash -o app.exe` 動作
- 起動時間大幅短縮JIT起動コスト除去
- 配布可能実行ファイル生成
Priority: **Critical** (Phase 8.6完了直後)
Expected Duration: 2-3週間
### 技術的実装詳細
🤖 Copilot協力期待:
- wasmtime::Config統一実装
- .cwasm生成・実行パイプライン
- 互換性キー管理CPU機能・wasmtimeバージョン
- パッケージング(単一バイナリ梱包)
### パフォーマンス目標
- 現在のWASM JIT (13.5倍実行) → AOT (500倍目標起動含む)
- 配布ファイルサイズ: <10MB目標
- 起動時間: <100ms目標
### 期待される効果
- **即座実用価値**: 配布可能実行ファイル生成
- **差別化優位**: Everything is BoxのネイティブAOT実現
- **LLVM準備**: AOT基盤確立でLLVM移行準備
------------------------------------------------------------
## 🔴 Phase 9.51: WASM Jump/Branch実装とHTTPサーバー実用化 **【緊急修正】**
Status: 🔴 **Critical Issue**Phase 9実用化ブロッカー
Summary:
- Phase 9 (PR #67) 完了後に判明した重大制約の修正
- WASM/AOT実用化の最終仕上げ
### 🚨 現在の問題(実用化を阻害)
1. **WASM/AOT コンパイルエラー(最重要)**
```bash
$ ./target/release/nyash --compile-wasm test_simple_loop.nyash
❌ Unsupported instruction: Jump { target: BasicBlockId(1) }
```
**影響**: ループ・条件分岐を含む全プログラムがWASM/AOT化不可
2. **HTTPServerBox listen()常に失敗**
- server.bind() ✅, server.listen() ❌ always false
**影響**: HTTPサーバーが実際には動作しない
3. **エラーハンドリング脆弱性**
- unwrap()使用箇所: 26箇所 → パニック多発リスク
### Scope/Tasks:
**🔴 Task 1**: WASM Jump/Branch命令実装2日
- `src/backend/wasm/codegen.rs`にJump/Branch追加
- ブロック深度管理(`get_block_depth`メソッド)
- ループ構造のblock/loop/end生成
**🔴 Task 2**: SocketBox listen()修正1日
- `src/boxes/socket_box.rs`の実装修正
- SocketStatus::Listening状態管理
**🟡 Task 3**: エラーハンドリング改善2日
- HTTPServerBox/SocketBoxのunwrap()除去
- Result<T,E>ベースのエラー処理
**🟡 Task 4**: HTTPサーバー実用化2日
- スレッドプール実装(固定サイズワーカー)
- グレースフルシャットダウン
Acceptance Criteria:
- ✅ `nyash --compile-wasm test_loop.nyash` 成功
- ✅ HTTPサーバー実動作curl http://localhost:8080/
- ✅ unwrap()使用箇所: 26 → 5以下
- ✅ WASM性能: 11.5倍 → 13.5倍達成
Priority: **🔴 Critical** (Phase 9.5開始前の必須修正)
Expected Duration: 1週間
### 詳細設計・実装指示
📋 **完全実装ガイド**: `docs/予定/native-plan/issues/phase9_51_wasm_jump_http_fixes.md`
🤖 **Copilot協力依頼**:
- WASM br/br_if命令実装
- HTTPサーバーリファクタリング
- エラーハンドリング統一
### 期待される効果
- **実用性達成**: ループ・HTTPサーバーのWASM/AOT化
- **安定性向上**: パニックフリーな実装
- **Phase 9.5準備**: 複雑アプリケーションテストの基盤確立
------------------------------------------------------------
## 🌐 Phase 9.5: HTTPサーバー実用テストAOT検証
Summary:
- AOT実装完了後の複雑アプリケーション検証並行処理・メモリ管理・実用性能
Scope/Tasks:
- tiny-web-server実装HTTP/1.1対応)
- 同時接続・早期切断・例外経路テスト
- AOT環境での真の性能測定
- 配布可能HTTPサーバーデモ
Acceptance Criteria:
- `http_server.exe`として配布可能
- 同時100接続でメモリリークなし
- fini()システム確実動作I/Oハンドル解放
- AOT性能でベンチマーク測定
Priority: High (Phase 9完了直後)
Expected Duration: 2週間
### 技術的複雑度
```nyash
box HTTPServer {
init { clients, requests, handlers }
acceptConnections() {
loop(me.running) {
local client = me.socket.accept()
nowait me.handleClient(client) // 非同期並行処理
}
}
handleClient(client) {
local request = client.readRequest()
local response = me.processRequest(request)
client.sendResponse(response)
client.fini() // 重要: 確実なリソース解放
}
}
```
### 検証ポイント
- **並行処理**: nowait/awaitのAOT実行性能
- **メモリ管理**: Server→Clients→Requests木構造+weak参照
- **I/Oリソース**: ソケット・ファイルハンドルの確実解放
- **実用性能**: リアルHTTP負荷でのAOT効果測定
### 🤖 Copilot協力期待
- Socket・HTTP実装の効率化
- 複雑なメモリ管理パターン検証
- 負荷テスト・ベンチマーク整備
- AOT最適化効果の定量測定
------------------------------------------------------------
## 🏆 Phase 10: LLVM Direct AOT最高性能実現
Summary:
- MIR→LLVM IR直接変換による最高性能AOT実現Cranelift JITスキップ
Scope/Tasks:
- MIR→LLVM IR lowering実装
- エスケープ解析・ボックス化解除
- LTO・PGO・高度最適化統合
- Everything is Box最適化
Acceptance Criteria:
- 1000倍高速化達成
- プロダクションレベル最適化
- 他言語との競争力確立
Priority: Medium (Phase 9.5完了後)
Expected Duration: 4-6ヶ月
### 技術アプローチ
🤖 Copilot協力期待:
- **LLVM統合**: MIR→LLVM IR変換基盤
- **エスケープ解析**: Box→スタック値最適化
- **型特殊化**: コンパイル時型推論・特殊化
- **LTO統合**: Link-time optimization
- **PGO対応**: Profile-guided optimization
### Everything is Box最適化戦略
- **Box回避**: スタック割り当て・直接レジスタ配置
- **NaN Boxing**: 効率的な値表現
- **型推論**: コンパイル時型特定・最適化
- **メモリレイアウト**: 連続配置・キャッシュ効率
### パフォーマンス目標
- **実行性能**: 1000倍高速化現在13.5倍 → 目標13500倍相当
- **メモリ効率**: Box割当数80%削減
- **起動時間**: ネイティブレベル(<10ms
- **競合比較**: C/C++/Rust並みの性能
### Cranelift JIT位置づけ変更
**Phase 12以降の将来オプション**:
- JIT開発体験向上nyashプログラマー向け
- REPL・インタラクティブ実行
- プロファイル駆動最適化
- 言語完成後の付加価値機能
------------------------------------------------------------
## 🔭 Phase 9.7: Box FFI/ABI基盤 + MIR ExternCall 追加RuntimeImports対応
Summary:
- 「あらゆるライブラリを箱に」を実現するための共通ABIBox FFI/ABIとBIDBox Interface Definitionを策定。
- MIRに `ExternCall` 命令を導入し、WASM/VM/言語出力で外部Box APIを一貫呼び出しできる基盤を整える。
- WASM向けには RuntimeImports をABI準拠で拡張console/canvasの最小セットから
Why:
- nyashがRustに依存せずnyasuをビルドできるように実行時は純WASMホストimport
- MIR→任意言語出力時に、外部ライブラリ=Box APIをBID→各言語FFIへ写像しやすくする。
- Everything is BoxのAPI設計を、外部ライブラリにも一貫適用。
Scope/Tasks:
- [ ] 1) ABI/BIDの策定最優先
- 型: i32/i64/f32/f64/string(ptr,len)/bool/boxref/array、null/void
- 呼出規約: 名前解決namespace.box.method、エラー/例外、同期/非同期
- 効果: pure/mut/io/controlMIR効果と整合
- 成果物: `docs/予定/native-plan/box_ffi_abi.md`、BIDサンプルconsole/canvas
- [ ] 2) MIR拡張: `ExternCall`
- 命令: `ExternCall(dst, iface_name, method_name, args[])`
- Verifier: BIDと型/効果の整合、最適化pure再順序化/ mut依存維持
- Lowering: 既存のBoxCall/Field opsとの橋渡し
- [ ] 3) WASM RuntimeImportsABI準拠
- import群: `env.console.log(ptr,len)`, `env.canvas.fillRect(...)`, `env.canvas.fillText(...)`
- Host(JS): importObject実装DOM解決→Canvas/Console呼び出し
- [ ] 4) コード生成: ExternCall→バックエンド写像
- WASM: import呼び出し線形メモリから文字列復元
- VM: ホスト関数テーブルでスタブ実装(最小はログ/ダミー)
- 言語出力: TypeScript/Python/Rust等へのFFI雛形後続
- [ ] 5) E2Eデモ
- Nyash→MIR(ExternCall)→WASM→ブラウザconsole/canvas
Acceptance Criteria:
- `docs/予定/native-plan/box_ffi_abi.md` 初版BIDサンプルconsole/canvasが存在
- MIRに `ExternCall` が追加され、WASMコード生成で import 呼び出しが生成される
- ブラウザで「直接WASM出力」→Canvas描画/Console出力が成功
- 既存PlaygroundAPIとABI経由APIが概ね一致
Timeline:
- Week 1: ABI/BID仕様初版MIR `ExternCall` 雛形
- Week 2: WASM RuntimeImports最小console/canvasE2Eデモ
- Week 3: Verifier効果整合WASMコード生成の安定化
- Week 4+: 他ライブラリBID追加、言語FFI生成の着手
References:
- docs/説明書/reference/box-design/ffi-abi-specification.md
------------------------------------------------------------
## 🔧 Phase 9.75: Box設計根本革命 - Arc<Mutex>責務一元化(緊急)
Summary:
- SocketBoxで発覚した「責務の二重化」問題を全Box型で根本解決
- Box内部のArc<Mutex>を除去し、インタープリターが一元管理
- Everything is Box哲学を守りながらシンプルで正しい設計へ
Priority: Critical (Phase 9.7完了直後・9.8より優先)
Expected Duration: 2-3週間
GitHub Issue: #80
### 問題分析
**現状**: 15個のBox型が二重ロック構造
```rust
// 🚨 問題構造
Box内部: Arc<Mutex<データ>> // 内部ロック
インタープリター: Arc<Mutex<Box>> // 外部ロック
→ デッドロック・状態不整合・デバッグ困難
```
### 技術的アプローチ
**新設計**: 純粋データコンテナ + ロック責務一元化
```rust
// ✅ 解決策
pub struct PlainSocketBox {
pub listener: Option<TcpListener>,
pub is_server: bool, // Arc<Mutex>完全除去!
}
// インタープリターがArc<Mutex<dyn NyashBox>>で一元管理
```
### 実装計画
- [ ] Phase A: 設計ガイドライン策定3日
- Box実装パターンドキュメント作成
- 内部Arc<Mutex>禁止ルール明文化
- 新Box実装時のテンプレート作成
- [ ] Phase B: 最優先Box修正1週間
- SocketBox/HTTPServerBox最も問題顕著
- テストスイート作成(状態保持・並行アクセス)
- パフォーマンス計測
- [ ] Phase C: ステートフルBox修正1週間
- ArrayBox, MapBox, FileBox
- P2PBox, IntentBox, StreamBox
- weak参照との整合性確認
- [ ] Phase D: 残りのBox統一3日
- その他9個のBox型
- 全体統合テスト
- ベンチマーク確認
### 🤖 Copilot協力期待
- Arc<Mutex>除去の機械的リファクタリング
- Clone実装の適切な修正
- テストケース自動生成
- 並行アクセステスト実装
### 成功基準
- [ ] 全Box型で内部Arc<Mutex>ゼロ
- [ ] SocketBox状態保持テスト成功
- [ ] デッドロック完全排除
- [ ] パフォーマンス向上(ロック競合削減)
- [ ] デバッグ容易性向上
### 期待される効果
- デッドロック・状態不整合の根絶
- パフォーマンス向上(二重ロック除去)
- コード可読性・保守性の大幅改善
- 新Box実装時の混乱防止
References:
- GitHub Issue #80SocketBox状態保持問題
- CURRENT_TASK.mdGemini先生の根本原因分析
------------------------------------------------------------
## 📦 Phase 9.8: BIDレジストリ + 自動コード生成ツールWASM/VM/LLVM/言語)
Summary:
- BIDレジストリと、BID→各ターゲットのスタブ生成import/extern宣言を自動化。
Scope/Tasks:
- BIDレジストリ仕様署名・効果・バージョン・依存関係
- 生成: WASM(importObject), VM(関数テーブル), LLVM(declare), TS/Python(RTEラッパ)
- CLI: `nyash bid gen --target wasm|vm|llvm|ts|py bid.yaml`
Acceptance:
- console/canvasのBIDから各ターゲットの骨子が自動生成される
------------------------------------------------------------
## 🔒 Phase 9.9: ExternCall 権限/ケイパビリティモデルSandbox/Allowlist
Summary:
- 外部API呼び出しの安全化。BIDに必要権限を宣言し、ホスト側で許可/拒否。WASMはimport allowlist、VM/LLVMは関数テーブルで制御。
Scope/Tasks:
- 権限種別console, canvas, storage, net, audio...)とポリシー
- 実行時プロンプト/設定ファイル/環境変数での許可
- 失権時の挙動(明示エラー)
Acceptance:
- 禁止権限のExternCallが実行時にブロックされ、明確なエラーが返る
------------------------------------------------------------
## 🧱 Phase 9.10: NyIR公開IR仕様化 + フォーマット + 検証器
Summary:
- 26命令MIRを公開IRNyIR v1として基本セマンティクス凍結。バージョニング、バイナリ`.nybc`/テキスト`.nyir`、厳格検証器を用意。
Scope/Tasks:
- docs/nyir/spec.mdCoreExt骨子
- nyir-parser/nyir-serializer.nyir/.nybc
- Verifier: 所有森/weak/効果/Bus整合
- ツール: `nyashel -S`, `nyir-run`
Acceptance:
- 代表サンプルがNyIRで保存・検証・実行可能
References:
- docs/nyir/spec.md
- docs/予定/native-plan/issues/phase_9_10_nyir_spec.md
------------------------------------------------------------
## 🧪 Phase 9.11: Golden NyIR + Differential 実行テストCI
Summary:
- NyIRダンプをゴールデンとし、interp/vm/wasm/jitの出力一致をCIで検証。
Scope/Tasks:
- golden/*.nyir の整備
- CIで各バックエンド実行→結果一致チェック
Acceptance:
- 主要サンプルで全バックエンド一致
------------------------------------------------------------
## 🧰 Phase 10.0: LLVM Backend SkeletonMIR→LLVM IR AOT 最小実装)
Summary:
- MIRからLLVM IRへの直接変換と最小AOTパイプライン。ExternCallはprintf等へ写像しデモ可能に。
Implementation Steps要約
1) `src/backend/llvm/` 追加mod.rs/lower.rs/passes.rs/build.rs
2) 依存: Cargoへ`llvm-sys`feature化、ビルド要件整備
3) `LLVMBackend::compile_mir`lower→passes→emit object
4) `main`: i32()、voidは0に正規化
5) 型写像: i32/i64/f32/f64/bool, 文字列は(i8*,i32)、Box参照はi32 or i8*
6) 命令: Const/BinOp/Compare/Branch/Jump/Phi/Call/Return ほか基本
7) ExternCall: console.log(ptr,len)→printf("%.*s",len,ptr)、canvasはnoop/ログ
8) 文字列定数: @.str + getelementptr
9) 出力: TargetMachineで.o生成、`clang app.o -o app`
10) CLI: `--backend llvm --emit obj`
11) 最小テスト: 四則/分岐/ループ/ExternCall出力
References:
- docs/予定/native-plan/issues/phase_10_x_llvm_backend_skeleton.md
------------------------------------------------------------
## 🧰 Phase 10.1: LLVM 外部関数マッピング方針(プラットフォーム抽象)
Summary:
- ExternCallのFQN→ネイティブ関数printf等への写像レイヤーと、OS差の抽象。初手はLinux/clang、他OSは後続。
Scope/Tasks:
- env.console.log → printfテンプレート、他は段階的拡張
- プラットフォーム切替featureとリンク方針
Acceptance:
- 代表ExternCallconsole.logがAOTバイナリで出力可能
------------------------------------------------------------
## 🧩 Phase 10.2: Host API層C-ABI `ny_host_*` / WASM `nyir_host`
Summary:
- Rust依存を薄い宿主APIへ集約。C-ABI公開ファイル/メモリ/時間等、WASMは`nyir_host` importで提供。
Scope/Tasks:
- `ny_host_*`関数群read_file/free/clockなどをC-ABIで実装
- Nyash側extern宣言と所有移管`*_from_raw`/`*_into_raw`
- WASM: import `nyir_host` 名前空間で最低限の関数提供
Acceptance:
- 代表I/OがHost API経由で動作し、Rust実装置換が容易
------------------------------------------------------------
## 🧱 Phase 10.3: ランタイム層の切り分けcorelang/rt/sys/std
Summary:
- corelang純Nyash, rtBox ABI/所有/weak/Safepoint/Bus, sysプラットフォーム, stdNyash実装に整理。
Scope/Tasks:
- ドキュメント化+最小コードの配置替えスケルトン
Acceptance:
- 層構造が明文化され、新規実装がガイドに従って進められる
------------------------------------------------------------
## 🧬 Phase 10.4: Box ABIfat ptrとLLVM属性Effects
Summary:
- Boxのfat pointerdata*, typeid, flagsの定義、Weakの世代タグ、SafepointのLLVM降ろし、Effect→LLVM属性readonly/readnone等
Scope/Tasks:
- LLVM IR側のstruct宣言・属性付与の雛形
Acceptance:
- 代表関数で属性が付与され、最適化に寄与noalias/argmemonly等は可能な範囲で
------------------------------------------------------------
## 📚 Phase 10.5: コア標準String/Array/MapNyash実装Rust依存の段階的削減
Summary:
- 現在Rust実装に依存している基本コンテナString/Array/Mapを、rt/sys層を活用してNyash実装に置換。
Scope/Tasks:
- String: {ptr,len,cap}, new/push_str/substr/len、`ny_host_alloc/realloc/free`
- Array<T>: {ptr,len,cap}, push/get/set/len/reserve、要素fini
- Map<K,V>: 簡易hash、set/get/remove/len、所有規則順守
Acceptance:
- 代表サンプルでString/Array/MapがNyash実装で動作し、Rust実装をリンクせずに通る
References:
- docs/予定/native-plan/issues/phase_10_5_core_std_nyash_impl.md
## Phase 11-14: Infrastructure & Polish
### Phase 11: MIR Optimization Framework
- エスケープ解析基盤
- 型特殊化・ボックス化解除
- デッドコード除去
### Phase 12: Advanced JIT Features
- Profile-guided optimization
- インライン展開
- レジスタ割り当て最適化
### Phase 13: Production Readiness
- GC統合最適化
- メモリ使用量最適化
- 起動時間短縮
### Phase 14: Packaging/CI polish
Summary:
- Windows/Linux の配布パッケージ化と CI 整備。
Scope/Tasks:
- GitHub Actions: Windows(MSVC)/WSL+cargo-xwin のマトリクス
- dist/: nyash(.exe) + LICENSE/README 同梱
Acceptance Criteria:
- リリースアーティファクトが自動生成される
================================================================================
🧠 AI大会議 + 実用優先戦略で得られた技術的知見 (2025-08-14更新)
================================================================================
## Gemini先生の助言修正適用
✅ エスケープ解析・ボックス化解除が性能の鍵
✅ wasmtime compileは短期的に実用的 → **Phase 9で最優先実装**
✅ WASM実行は確実に高速13.5倍実証済み)
🔄 Cranelift → LLVM段階的アプローチ → **実用優先でLLVM直接へ**
## codex先生の助言重点化
✅ MIR前倒し実装推奨全バックエンドが恩恵
✅ wasmtime互換性管理が重要 → **AOT実装で最重要**
✅ CPU差異対応 (baseline/v3二段ビルド)
✅ 起動時間・割当削減・配布体験がKPI → **AOT価値の核心**
## Claude統合分析実用優先
✅ 実用価値最大化: WASM+AOTで十分な競争力
✅ 開発効率: Cranelift JITの恩恵限定的cargo build変わらず
✅ Everything is Box最適化が差別化の核心
✅ 時間効率: 2-3ヶ月節約でLLVM集中投資
## 🎯 実用優先戦略の確定理由
- **ユーザー体験**: WASM既に動作、AOTで配布価値追加
- **開発効率**: Cranelift JITは重複投資Rust開発環境改善せず
- **競合優位**: AOT+LLVM早期実現で差別化
- **リソース効果**: 限られた開発時間の最大効率化
================================================================================
💡 Copilot様への具体的お願い・相談事項
================================================================================
## 🔧 Phase 8.3完了・次期フェーズ準備
### MIRダイエット準備
❓ 現在35命令→20命令削減のintrinsic戦略実装は
❓ ChatGPT5推奨の3-point setアプローチ最適化は
❓ Portability Contract v0での互換性確保方法は
### Phase 9 AOT WASM実装最優先
❓ wasmtime compileの実用配備方法は
❓ .cwasm生成・単一バイナリ梱包戦略は
❓ 互換性キー管理CPU機能・wasmtimeバージョン
❓ 起動時間最適化の実装アプローチは?
### Phase 9.5 HTTPサーバー検証
❓ Socket・HTTP実装の効率的な設計は
❓ 並行処理でのメモリ管理パターンは?
❓ AOT環境でのI/Oリソース管理は
❓ 負荷テスト・ベンチマーク設計は?
### Phase 10 LLVM Direct AOT
❓ MIR→LLVM IR変換の効率実装は
❓ エスケープ解析・ボックス化解除の実装戦略は?
❓ LTO・PGO統合の技術的ハードルは
## 🚀 長期戦略相談
### Everything is Box最適化
❓ Box操作の根本的高速化戦略は
❓ エスケープ解析によるスタック化判定は?
❓ 型特殊化・ボックス化解除の実装戦略は?
### ベンチマーク拡張
❓ AOT性能測定の追加指標は
❓ 1000倍高速化実現のマイルストーン設計は
❓ 他言語(JavaScript V8, Rust, C++)との競争力分析は?
❓ HTTPサーバー負荷テストの効率設計は
================================================================================
📊 進捗管理・コミュニケーション
================================================================================
## 🤝 協調開発ルール
### コミット・マージ戦略
✅ 大きな変更前にはdocs/CURRENT_TASK.mdで情報共有
✅ ベンチマーク機能は最優先で維持
✅ CLI統合は両機能を統合的に対応
✅ 競合発生時は機能優先度で解決
### 進捗報告
📅 週次: 進捗状況をCURRENT_TASK.mdに反映
📅 完了時: 新機能のベンチマーク結果を共有
📅 問題発生: AI大会議で技術的相談
### 品質保証
✅ cargo check でビルドエラーなし
✅ 既存ベンチマークが regression なし
✅ 新機能のドキュメント整備
✅ テストケース追加・CI通過
================================================================================
🎯 期待される成果・インパクト
================================================================================
## Phase 8完了時の成果 (達成済み)
🏆 RefNew/RefGet/RefSet WASM完全動作
🏆 Box操作ベンチマーク追加
🏆 メモリレイアウト最適化効果測定
🏆 オブジェクト指向プログラミングWASM対応
🏆 26命令MIR階層化完了Phase 8.5
🏆 VM性能改善完了Phase 8.6
## Phase 9-10実用優先展望
🚀 **AOT WASM実装** (Phase 9 - 2-3週間): 配布可能実行ファイル
🚀 **HTTPサーバー検証** (Phase 9.5 - 2週間): 実用アプリデモ
🚀 **LLVM Direct AOT** (Phase 10 - 4-6ヶ月): 1000倍高速化
🚀 **実用競争力確立**: 他言語との差別化完成
## 言語としての完成度向上
💎 Everything is Box哲学のネイティブ実現
💎 開発効率性と実行性能の両立
💎 4つの実行形態対応Interpreter/VM/WASM/AOT+ 将来JIT
💎 現代的言語としての地位確立
================================================================================
📞 連絡・相談方法
================================================================================
技術的相談や進捗報告は、以下の方法でお気軽にどうぞ:
1. 📝 GitHub Issues・Pull Request
2. 📋 docs/CURRENT_TASK.md コメント
3. 🤖 AI大会議 (重要な技術決定)
4. 💬 コミットメッセージでの進捗共有
どんな小さなことでも相談大歓迎です!
一緒にNyashを最高の言語にしていきましょう🚀
================================================================================
最終更新: 2025-08-14 (実用優先戦略・Phase 9-10再設計完了)
作成者: Claude (AI大会議結果 + 実用優先戦略統合)
🎯 重要な変更点:
- Phase 9: JIT planning → AOT WASM実装最優先
- Phase 9.5: HTTPサーバー実用テスト追加AOT検証
- Phase 10: AOT exploration → LLVM Direct AOT最高性能
- Cranelift JIT: Phase 12以降の将来オプションに変更
- HTTPサーバー: kilo後のタイミングで実用性能検証に特化
================================================================================