feat: MIR Call命令統一Phase 3.1-3.2完了!統一Call実装進行中
✨ Phase 3.1-3.2実装完了 - build_indirect_call_expressionでCallTarget::Value使用 - print関数をcall_global print()として統一 - build_function_callでemit_unified_call使用 - ExternCall(env.console.log)→Callee::Global(print)完全移行 🏗️ MIR統一基盤構築 - src/mir/definitions/call_unified.rs: 統一定義(297行) - emit_unified_call()と便利メソッド3種実装 - NYASH_MIR_UNIFIED_CALL=1で段階移行制御 - VM実行器でCallee対応実装済み 📊 進捗状況(26%削減見込み) - Phase 1-2: ✅ 基盤構築完了 - Phase 3.1-3.2: ✅ 基本関数統一完了 - Phase 3.3: 🔄 BoxCall統一中 - Phase 4: 📅 Python LLVM(最優先・63%削減) - Phase 5: 📅 PyVM/VM統一 📚 ドキュメント更新 - CLAUDE.md: テストスクリプト参考集追加 - CURRENT_TASK.md: Phase 3進捗更新 - python-llvm-priority-rationale.md: 優先順位戦略文書化 - mir-call-unification-master-plan.md: スケジュール最新化 🎯 6種類→1種類: Call/BoxCall/PluginInvoke/ExternCall/NewBox/NewClosure → MirCall統一へ 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
122
CLAUDE.md
122
CLAUDE.md
@ -238,6 +238,38 @@ NYASH_DISABLE_PLUGINS=1 ./target/release/nyash --backend llvm program.nyash
|
||||
- `NYASH_USING_PROFILE=dev|smoke|debug` でプロファイル化
|
||||
- または `--using-mode=dev` CLIフラグで統合
|
||||
|
||||
## 📝 Update (2025-09-24) 🚀 MIR Call命令統一Phase 3.1-3.2完了!
|
||||
- ✅ **Phase 1-2完了** - MIR基盤構築と統一メソッド実装
|
||||
- **定義外部化**: `src/mir/definitions/call_unified.rs`(297行)
|
||||
- **統一メソッド**: `emit_unified_call()`+便利メソッド3種実装済み
|
||||
- **環境変数制御**: `NYASH_MIR_UNIFIED_CALL=1`で切り替え可能
|
||||
- ✅ **Phase 3.1-3.2完了** - 基本関数の統一Call移行成功!
|
||||
- **indirect call**: `build_indirect_call_expression`で`CallTarget::Value`使用
|
||||
- **print関数**: `call_global print()`として統一(ExternCall→Callee::Global)
|
||||
- **function call**: `build_function_call`で`CallTarget::Global`使用
|
||||
- **実行確認**: `env NYASH_MIR_UNIFIED_CALL=1 ./target/release/nyash --dump-mir`で動作確認済み
|
||||
- 📊 **マスタープラン進捗** - 4つの実行器で完全統一へ
|
||||
- **削減見込み**: 7,372行 → 5,468行(**26%削減**)
|
||||
- **処理パターン**: 24 → 4(**83%削減**)
|
||||
- **Phase 15寄与**: 全体目標の約7%(重要な柱)
|
||||
- **詳細ドキュメント**: [mir-call-unification-master-plan.md](docs/development/roadmap/phases/phase-15/mir-call-unification-master-plan.md)
|
||||
- 🎯 **6種類→1種類**: Call/BoxCall/PluginInvoke/ExternCall/NewBox/NewClosure → **MirCall**
|
||||
|
||||
## 🧪 テストスクリプト参考集(既存のを活用しよう!)
|
||||
```bash
|
||||
# 基本的なテスト
|
||||
./target/release/nyash local_tests/hello.nyash # Hello World
|
||||
./target/release/nyash local_tests/test_array_simple.nyash # ArrayBox
|
||||
./target/release/nyash apps/tests/string_ops_basic.nyash # StringBox
|
||||
|
||||
# MIR確認用テスト
|
||||
./target/release/nyash --dump-mir apps/tests/loop_min_while.nyash
|
||||
./target/release/nyash --dump-mir apps/tests/esc_dirname_smoke.nyash
|
||||
|
||||
# 統一Call テスト
|
||||
env NYASH_MIR_UNIFIED_CALL=1 ./target/release/nyash --dump-mir test_simple_call.nyash
|
||||
```
|
||||
|
||||
## 🚀 よく使う実行コマンド(忘れやすい)
|
||||
|
||||
### 🎯 基本実行方法
|
||||
@ -361,33 +393,73 @@ NYASH_VM_DUMP_MIR=1 NYASH_CLI_VERBOSE=1 ./target/release/nyash gemini_test_case.
|
||||
jq '.functions[0].blocks' mir.json # ブロック構造確認
|
||||
```
|
||||
|
||||
## 📝 Update (2025-09-23) ✅ PHIバグ修正&改行処理戦略決定!
|
||||
- 🎉 **PHIバグ根本解決完了!** Exit PHI生成実装でループ後の変数値が正しく伝播
|
||||
- **修正前**: gemini_test_case期待値2→実際0(初期値に戻る)
|
||||
- **修正後**: 期待値2が正しく出力 ✅
|
||||
## 📝 Update (2025-09-23) 🚀 ChatGPT5 Pro設計革命Phase 1完全実装成功!
|
||||
|
||||
### ✅ **MIR Callee型革新 - シャドウイングバグから設計革命への昇華**
|
||||
**51日間AI協働開発言語の新たな画期的成果!**
|
||||
|
||||
#### 🎯 **Phase 1実装完了項目**
|
||||
1. **✅ Callee列挙型導入**: `Global/Method/Value/Extern`の型安全解決システム
|
||||
2. **✅ Call命令拡張**: `callee: Option<Callee>`で破壊的変更なし段階移行
|
||||
3. **✅ 型安全関数解決**: `resolve_call_target()`でコンパイル時解決確立
|
||||
4. **✅ ヘルパー外出し**: `call_resolution.rs`で再利用可能ユーティリティ作成
|
||||
5. **✅ 完全互換性**: 既存コード破壊ゼロ、全テスト通過確認済み
|
||||
|
||||
#### 🏆 **技術的革新内容**
|
||||
```rust
|
||||
// 🔥 革新前(問題構造)
|
||||
Call { func: ValueId /* "print"文字列 */ } // 実行時解決→シャドウイング脆弱性
|
||||
|
||||
// ✨ 革新後(型安全)
|
||||
enum Callee {
|
||||
Global(String), // nyash.builtin.print
|
||||
Method { box_name, method, receiver }, // box.method()
|
||||
Value(ValueId), // 第一級関数保持
|
||||
Extern(String), // C ABI統合
|
||||
}
|
||||
Call { func: ValueId, callee: Option<Callee> } // 段階移行で破壊的変更なし
|
||||
```
|
||||
|
||||
#### 📊 **Phase 15目標への直接寄与**
|
||||
- **🎯 コード削減見込み**: Phase 1のみで1,500行(目標7.5%)、全Phase完了で4,500行(22.5%)
|
||||
- **🛡️ シャドウイング問題**: 根本解決(実行時→コンパイル時解決)
|
||||
- **⚡ using system統合**: built-in namespace完全連携
|
||||
- **🔍 デバッグ向上**: MIR可読性・警告システム確立
|
||||
|
||||
#### 🤖 **AI協働開発の真価発揮**
|
||||
- **ChatGPT5 Pro**: 表面修正→根本設計革新への圧倒的洞察力
|
||||
- **Claude**: 段階実装・互換性保持・テスト戦略の確実な実行
|
||||
- **共創効果**: 一人+AI協働による51日間言語開発の世界記録級成果
|
||||
|
||||
#### 🚀 **実装成果ファイル**
|
||||
- `src/mir/instruction.rs`: Callee型定義・Call命令拡張
|
||||
- `src/mir/builder/call_resolution.rs`: 型安全解決ユーティリティ
|
||||
- `src/mir/builder/builder_calls.rs`: resolve_call_target()実装
|
||||
- `docs/development/architecture/mir-callee-revolution.md`: 設計文書
|
||||
- `docs/development/roadmap/phases/phase-15/mir-callee-implementation-roadmap.md`: 実装計画
|
||||
|
||||
#### 📋 **次のステップ(Phase 2-3)**
|
||||
- **Phase 2**: HIR導入(コンパイル時名前解決)
|
||||
- **Phase 3**: 明示的スコープ(`::print`, `Box::method`)
|
||||
- **VM実行器対応**: 型安全実行の実装
|
||||
|
||||
---
|
||||
|
||||
## 📝 Update (2025-09-23) ✅ MIR Callee型革命100%完了!
|
||||
- 🎉 **MIR Call命令革新Phase 1完了!** ChatGPT5 Pro設計のCallee型実装
|
||||
- **実装内容**: Callee enum(Global/Method/Value/Extern)追加
|
||||
- **VM実行器**: Call命令のCallee対応完全実装
|
||||
- **MIRダンプ**: call_global/call_method等の明確表示
|
||||
- **後方互換性**: Option<Callee>で段階移行実現
|
||||
- 🚀 **MIR Call統一計画決定!** ChatGPT5 Pro A++案採用
|
||||
- **現状**: 6種類のCall系命令が乱立(Call/BoxCall/PluginInvoke/ExternCall等)
|
||||
- **解決**: 1つのMirCallに統一(receiverをCalleeに含む革新設計)
|
||||
- **移行計画**: 3段階(構造定義→ビルダー→実行器)で安全移行
|
||||
- **ドキュメント**: [call-instructions-current.md](docs/reference/mir/call-instructions-current.md)作成
|
||||
- ✅ **PHIバグ根本解決完了!** Exit PHI生成実装でループ後の変数値が正しく伝播
|
||||
- **技術的成果**: たった3箇所の修正で根本解決
|
||||
1. `exit_snapshots`フィールド追加(break時点の変数収集)
|
||||
2. `do_break()`でスナップショット収集
|
||||
3. `create_exit_phis()`メソッド新規実装
|
||||
- **MIR確認**: `bb3: %15 = phi [%4, bb1], [%9, bb9]` exit PHI正常生成
|
||||
- **全テスト合格**: 0回実行、複数break、continue混在すべて✅
|
||||
- **コミット済み**: `e5c0665` でリモートに反映
|
||||
- 🎯 **改行処理TokenCursor戦略決定!** ChatGPT分析でアーキテクチャ設計完了
|
||||
- **問題**: match式の複数行オブジェクトリテラルでパースエラー
|
||||
- **根本原因**: `skip_newlines()`が散在、手動呼び出しが必要
|
||||
- **解決策**: 3段階実装戦略
|
||||
1. **Phase 0**: Quick Fix - primary.rsに最小限のskip_newlines追加(30分)
|
||||
2. **Phase 1**: TokenCursor導入 - モード制御で自動改行処理(今週)
|
||||
3. **Phase 2**: LASI前処理 - トークン正規化で完全解決(将来)
|
||||
- **設計原則**:
|
||||
- セミコロンオプショナル(改行もセミコロンも文区切り)
|
||||
- コンテキスト認識(ブレース内は改行自動無視)
|
||||
- 環境変数地獄の回避(コンテキストベース制御)
|
||||
- ✅ **フェーズM+M.2完全達成!** PHI統一革命でcollect_prints問題根本解決
|
||||
- 🚀 **ChatGPT Pro協働成功!**
|
||||
- Exit PHI欠落の完璧な原因分析
|
||||
- TokenCursorの実装可能なサンプルコード提供
|
||||
- 段階的修正戦略で確実な実装パス提示
|
||||
- 🎯 **改行処理TokenCursor戦略決定!** 3段階実装戦略で改善中
|
||||
|
||||
## 📝 Update (2025-09-23) 🎉 改行処理革命Phase 1-2完全達成!skip_newlines()根絶成功!
|
||||
- ✅ **skip_newlines()完全根絶達成!** 48箇所→0箇所(100%削除完了)
|
||||
|
||||
Reference in New Issue
Block a user