🎉 Phase 11.8/12.7: MIR Core-13 完全実装 + 糖衣構文ドキュメント更新

主要な変更:
- MIR Core-13命令セット確定(Load/Store削除の革命的設計)
  - Const, BinOp, Compare(値・計算)
  - Jump, Branch, Return, Phi(制御)
  - Call, BoxCall, ExternCall(呼び出し)
  - TypeOp, Safepoint, Barrier(メタ)
- Phase 12.7糖衣構文ドキュメント整理(超圧縮重視、可逆変換保証)
- MIRビルダーのモジュール分割完了
- vtableテストスイート拡充
- AI協調開発ツール追加(並列リファクタリング支援)

詳細:
- src/mir/instruction_introspection.rs: core13_instruction_names()追加
- MIRビルダー分割: decls.rs, exprs_*.rs, fields.rs
- plugin_loader_v2: errors.rs, host_bridge.rs分離
- 論文用データ: mir13-final.md作成

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-09-04 11:34:15 +09:00
parent 4e824fa00e
commit fb2d8e37d5
62 changed files with 3632 additions and 835 deletions

View File

@ -1,4 +1,25 @@
# 🎯 CURRENT TASK - 2025-09-03 SnapshotPhase 12.05: 旧C ABI→新C ABI(TypeBox) 変換 + 差分テスト拡充
# 🎯 CURRENT TASK - 2025-09-04 UpdatePhase 12.7-B: ChatGPT5糖衣構文実装
## 🔄 現在のフェーズ: Phase 12.7-B
### Phase 12.7-A✅ 完了)
- peek式、continue文、?演算子、Lambda式実装完了
- フィールド型アテーションfield: TypeBox実装完了
- birth統一、予約語15個確定
### Phase 12.7-B🔄 実装中)- ChatGPT5糖衣構文
実装優先順位:
1. **パイプライン演算子(|>** - 処理フローの明確化
2. **セーフアクセス(?.)とデフォルト値(??** - null安全性向上
3. **増分代入演算子(+=, -=等)** - 簡潔な記述
4. **デストラクチャリング** - パターン束縛
5. **範囲演算子(..** - ループ・スライス用
6. **高階関数演算子(/:, \:, //** - 関数型プログラミング
7. **ラベル付き引数** - API呼び出しの可読性
---
## 📋 Phase 12.05 完了事項2025-09-03 Snapshot
目的: 既存C ABIプラグインを「統一TypeBox C ABI」に段階移行。LoaderのTypeBoxプローブ + `invoke_id` 優先経路を活用し、コアBoxArray/Map/String/Integer/Consoleから順に resolve/invoke_id を実装していく。
@ -75,9 +96,9 @@ NYASH_DISABLE_TYPEBOX=1 cargo test --lib typebox_tlv_diff -- --nocapture
- 症状: ArrayBox/MapBox の生成で Unknown Box typeplugins-onlyレジストリでBuiltin未登録
- 影響: `tests::vtable_*``backend::vm::tests::test_vm_user_box_*`、MIR周辺BoxCall method_id
- 方針:
- A1) 既定を Builtin + Plugins に戻すランタイム初期化時にBuiltinを常に登録
- A1) 既定を Builtin + Plugins に戻すランタイム初期化時にBuiltinを常に登録→ 実装済20250904
- A2) テスト側で `NyashRuntimeBuilder` に「builtin有効」フラグを追加し明示登録。
- A3) 当面は feature `plugins-only` を導入し、デフォルトは builtin 有効に戻す。
- A3) 当面は feature `plugins-only` を導入し、デフォルトは builtin 有効に戻す。→ 実装済20250904、`plugins-only` 有効時のみBuiltin無効
- P2PBox テスト赤on_once/ping 系)
- 症状: 期待値とズレonce後のカウント、ping応答の記録
@ -203,6 +224,45 @@ NYASH_DISABLE_TYPEBOX=1 cargo test --lib typebox_tlv_diff -- --nocapture
3) Verifier: await前後のcheckpoint検証ルール追加実装済・--verifyで有効
4) CI/Smokes: async系3本を最小マトリクスでtimeoutガード
### 追加メモ2025-09-04 quick fixes / vtable
- VM: BasicBlock terminatorReturnが実行されず常にvoid返却になるバグを修正。
- 影響: vtable 経由で値を設定しても関数戻りが void になるケースを解消。
- 実装: `backend/vm_exec.rs` で terminator を命令列後に必ず実行。
- vtableArrayBox: len/get/set を vtable-first で直処理(ビルトイン)
- ルーティング: `type_registry` のスロット 100(get)/101(set)/102(len)
- 実装: `backend/vm_instructions/boxcall.rs::try_boxcall_vtable_stub`
- テスト: `src/tests/vtable_array_string.rs` のケースを緑化(`NYASH_ABI_VTABLE=1`
### Phase 12 Core Stabilization2025-09-04, new
目的: コア型Array / String / Consoleを vtable 直行で安定化し、STRICT でも穴が出ない最低限を担保。Plugin 系は TypeBox 経路で据え置き、後続で統一を検討。
完了(実装済み)
- Array vtable 直行: len/get/set + P0: push/pop/clear + P1: contains/indexOf/join + P2: sort/reverse/slice
- String vtable 直行: len + 追加: substring/concat汎用経路にも反映
- Console vtable 直行: log/warn/error/clear
- ターゲットテスト: `vtable_array_ext.rs`, `vtable_array_p1.rs`, `vtable_array_p2.rs`, `vtable_string.rs`, `vtable_console.rs` 追加し緑
- トグル方針: 開発検査は `NYASH_ABI_VTABLE=1 NYASH_ABI_STRICT=1`、通常実行は `NYASH_ABI_VTABLE=1`
据え置き(次期以降)
- Plugin 系Math/Encoding/Regex/Path/TOML/Time/Counter/Fileへの全面 vtable 直行化は保留。TypeBox/差分テストで安定運用を維持し、合意後に byslot PluginInvoke ブリッジで統一を検討。
次タスク(小粒・コア内)
1) Map vtable の厚みkeys/values/delete/remove/clearを STRICT 前提で整備slots: 205..208 目安)
2) String 追加メソッドindexOf/replace/trim/toUpper/toLowerの vtable 化+テスト
3) vtable/slot 表の整理(`type_registry` に注釈し HostAPI 番号空間の役割を明記)
4) JIT 最適化の種まき(新規 slots に対する byid パスの追加)
運用ノート
- STRICT 有効時は未 slot 化メソッドを即検知。急がず穴埋めしながら進める。
- Plugin 系は現状 TypeBox 経路を信頼し、vtable 直行は時期を見て段階導入(互換/回帰の監視を優先)。
### vtable カバレッジ拡張提案・P0→P2
- P0今回追加予定: ArrayBox push/pop/clear を vtable 直処理
- slots 103(push)/104(pop)/105(clear) を `type_registry` に追加し、VM vtable スタブに実装
- P1: contains/indexOf/join
- P2: sort/reverse/slice副作用・比較の仕様差に注意
---
**Phase 12.7: 文法改革P0 即実装スコープ)**
@ -1000,3 +1060,27 @@ JIT分割 進捗(継続観点)
- 現行 `cargo test` は既存の vm_e2e.rs別件APIで失敗あり。本変更とは独立。`cargo build` は成功。
- MIR: 直書き Lambda 即時呼び出しのみ Lower 済み。変数に入れた FunctionBox 呼び出しは Interpreter 経由で安定。
- 将来: ClosureEnv の by-ref 完全対応Upvalue セル化の一般化)や me Weak の利用箇所拡大は引き続き検討。
# 🧭 TL;DR Update (2025-09-04)
目的と順序(コンテキスト節約版)
- 1) コア安定化vtable直行: Array / Map / String / Console を STRICTでも穴なしに。
- 2) リファクタリング: vtableスタブ共通化・slot表注釈整備。
- 3) JITはEXEAOT到達後に段階適用by-id最適化を追加
- Plugin系はTypeBox経路を維持将来 by-slot で統一検討)。
現状ステータス(実装済み)
- Array: len/get/set + push/pop/clear + contains/indexOf/join + sort/reverse/sliceテスト緑
- String: len + substring/concat + indexOf/replace/trim/toUpper/toLowerテスト緑
- Console: log/warn/error/clearスモーク緑
- Map: size/len/has/get/set + keys/values/delete/remove/clearテスト緑
- VM: Return未実行バグ修正済terminator実行
次タスク(最小)
- STRICT狙い撃ちの追加境界テスト空/不存在/Unicode/重複)でコアを固める。
- vtableスタブの重複削減変換/バリアを小ヘルパへ)。
- slot表type_registryの役割注釈とHostAPI番号空間の明記。
- AOTスモークに新slotを反映し、EXE経路の最小ケースをGreenに。
運用
- 検査: `NYASH_ABI_VTABLE=1 NYASH_ABI_STRICT=1`
- 通常: `NYASH_ABI_VTABLE=1`