|
|
96a17c616d
|
refactor(builder): Boxification Phase 2 - CalleeResolverBox実装完了
箱理論の実践:Callee解決ロジックを独立した箱に集約
- 単一責務:CallTarget → Callee の型安全な解決のみ
- 状態最小:型情報参照のみ保持(変更なし)
- ピュア関数的:入力→解決・検証→出力
実装内容:
1. 新規ファイル作成
- src/mir/builder/calls/resolver.rs
- CalleeResolverBox構造体(~300行、テスト含む)
- 3つの主要メソッド:resolve/classify_box_kind/validate_args
2. 既存関数の移動・統合
- call_unified::convert_target_to_callee → CalleeResolverBox::resolve
- call_unified::classify_box_kind → CalleeResolverBox::classify_box_kind
- call_unified::validate_call_args → CalleeResolverBox::validate_args
3. emit.rs更新
- CalleeResolverBoxを使用するように変更
- 2箇所でインスタンス化(resolve用、validate用)
4. call_unified.rs整理
- 旧関数をDEPRECATEDコメントに置き換え(参照用に残す)
- ~150行削減
5. テスト完備
- 5つのユニットテスト(all passed ✅)
- 既存テスト互換性維持(guard tests, mir_stageb tests passed)
箱化効果:
- 責務分離:Callee解決ロジックが独立したモジュールに
- 再利用性:CalleeResolverBoxは他のコンテキストでも使用可能
- テスト容易性:モックや型情報を簡単に注入できる設計
- 保守性向上:変更箇所が明確(resolver.rs のみ)
Phase 25.1d 進捗:
- Phase 1: CalleeGuardBox ✅ 完了
- Phase 2: CalleeResolverBox ✅ 完了(本コミット)
- 次候補: 統合的boxification(オプショナル)
ビルド・テスト:
- cargo build --release: ✅ 成功
- guard tests (3): ✅ all passed
- resolver tests (5): ✅ all passed
- mir_stageb tests (5/6): ✅ passed(1つは既存のusing問題)
|
2025-11-17 23:35:04 +09:00 |
|
|
|
e67c8dc8d5
|
refactor(builder): 箱化 - CalleeGuardBox抽出(構造ガード専用箱)
🎯 箱理論の実践: 単一責務の箱を作る
## 箱化内容
✅ CalleeGuardBox(約150行、テスト込み約200行)
- 責務: 構造ガード専任(静的Box/ランタイムBox混線防止)
- 状態: value_typesのみ保持(最小化)
- ピュア関数的: Callee入力 → 検証・変換 → Callee出力
## 実装
- src/mir/builder/calls/guard.rs: 新ファイル
- CalleeGuardBox::apply_static_runtime_guard()
- CalleeGuardBox::is_me_call()
- CalleeGuardBox::get_box_type()
- 単体テスト3件追加(me-call検出、正規化)
- src/mir/builder/calls/emit.rs: 箱化移行
- emit_unified_call_impl内でCalleeGuardBox使用
- 古いapply_static_runtime_guardメソッド削除(約50行削減)
- src/mir/builder/calls/mod.rs: モジュール追加
- pub mod guard;(Phase 25.1d完了マーク)
## 箱理論原則
✅ 箱にする: 構造ガード機能を1箱に集約
✅ 境界を作る: MirBuilderから分離、独立した責務
✅ 戻せる: 独立箱なので切り離し・差し替え可能
✅ テスト容易: 単体テスト3件で検証済み
## 効果
- コード整理: emit.rs 約50行削減
- 保守性向上: 構造ガードロジックが1ファイルに集約
- テスト品質: 単体テストで挙動保証
- 拡張容易: 将来の構造ガード追加が容易
## テスト結果
- ✅ CalleeGuardBox単体テスト 3件パス
- ✅ 既存テスト mir_stageb_like系 パス
- ✅ ビルド成功(0エラー)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-17 23:21:36 +09:00 |
|
|
|
2706d7ae9a
|
refactor(builder): 箱理論リファクタリング Phase 2完了 - 驚異的94%削減達成!
🎯 目標75%削減を大幅に超える94%削減を達成!
## Phase 2 成果
✅ builder_calls.rs: 766行 → 60行(706行削減、92%削減)
✅ calls/emit.rs: 415行(新規、Call命令発行専用)
✅ calls/build.rs: 505行(新規、Call構築専用)
✅ ビルド・テスト成功(0エラー)
## 累積削減効果
Phase 1: 982行 → 766行(216行削減、22%削減)
Phase 2: 766行 → 60行(706行削減、92%削減)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
合計: 982行 → 60行(922行削減、94%削減達成!)
## 箱理論実装詳細
### 1. 責務ごとに箱に分離
- emit.rs: Call命令発行専用
- emit_unified_call, emit_legacy_call等
- 統一Call/LegacyCallの明確な分離
- build.rs: Call構築専用
- build_function_call, build_method_call等
- 関数Call/メソッドCallの段階的構築
- lowering.rs: 関数lowering専用(Phase 1)
- utils.rs: ユーティリティ専用(Phase 1)
### 2. 境界を明確に
- 各モジュールで公開インターフェース明確化
- calls/mod.rs で統一的にre-export
- 内部関数は適切に隠蔽
### 3. いつでも戻せる
- builder_calls.rs で既存API完全保持
- re-exportによる完全な後方互換性
- 段階的移行で各ステップでビルド確認
### 4. 巨大関数は分割
**emit.rs**:
- emit_unified_call (元231行) → 複数の小関数に分割
- try_global_fallback_handlers (~50行)
- materialize_receiver_in_callee (~30行)
- emit_global_unified (~20行)
**build.rs**:
- build_function_call (元134行) → 7つの小関数に分割
- try_build_typeop_function (~25行)
- try_handle_math_function (~60行)
- build_call_args (~7行)
- 各関数30-60行に収まる
- build_method_call (元107行) → 5つの小関数に分割
- try_build_static_method_call (~10行)
- try_build_me_method_call (~35行)
- 各関数が単一の明確な責務
## ファイル構成
src/mir/builder/
├── calls/
│ ├── mod.rs # 公開インターフェース
│ ├── lowering.rs # 関数lowering(354行)
│ ├── emit.rs # Call発行(415行)✨ NEW
│ ├── build.rs # Call構築(505行)✨ NEW
│ └── utils.rs # ユーティリティ(45行)
└── builder_calls.rs # 最小限(60行、94%削減!)
## 技術的成果
- 可読性向上: 100行超 → 30-60行の小関数
- 保守性向上: 責務分離で影響範囲最小化
- 再利用性向上: 明確なIF定義で安全使用
- テスト容易性: 小さな単位でテスト可能
## 次のステップ候補
- Phase 3: handlers.rs 作成(オプション)
- さらなる細分化(emit/unified.rs 等)
- ValueId(6)エラーの根本原因調査
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Task先生 <task@anthropic.com>
|
2025-11-17 17:11:21 +09:00 |
|
|
|
eee3dfaa83
|
refactor(builder): 箱理論リファクタリング Phase 1完了
🎯 builder_calls.rs (982行) を箱理論で責務別にモジュール分割
## 成果
✅ builder_calls.rs: 982行 → 766行(-216行、22%削減)
✅ calls/lowering.rs: 354行(新規、箱理論6段階パターン)
✅ calls/utils.rs: 45行(新規、ユーティリティ統一)
✅ ビルド・テスト完全成功(0エラー)
## 箱理論の実装
1. 責務ごとに箱に分離:
- lowering: 関数lowering専用
- utils: ユーティリティ統一
- emit/build: Phase 2で実装予定
2. 境界を明確に:
- mod.rs で公開インターフェース定義
- pub(in crate::mir::builder) で適切な可視性制御
3. いつでも戻せる:
- 段階的移行、各ステップでビルド確認
- 既存API完全保持(互換性100%)
4. 巨大関数は分割:
- lower_static_method_as_function: 125行 → 6段階に分解
- lower_method_as_function: 80行 → 6段階に分解
## 箱理論6段階パターン
1. prepare_lowering_context - Context準備
2. create_function_skeleton - 関数スケルトン作成
3. setup_function_params - パラメータ設定
4. lower_function_body - 本体lowering
5. finalize_function - 関数finalize
6. restore_lowering_context - Context復元
## ファイル構成
src/mir/builder/
├── calls/
│ ├── mod.rs # 公開インターフェース
│ ├── lowering.rs # 関数lowering(354行)
│ └── utils.rs # ユーティリティ(45行)
└── builder_calls.rs # 削減版(766行)
## 次のステップ
Phase 2: emit.rs 作成(~500行移行)
Phase 3: build.rs 作成(~350行移行)
最終目標: builder_calls.rs を200行以内に
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Task先生 <task@anthropic.com>
|
2025-11-17 17:02:01 +09:00 |
|
|
|
dda65b94b7
|
Phase 21.7 normalization: optimization pre-work + bench harness expansion
- Add opt-in optimizations (defaults OFF)
- Ret purity verifier: NYASH_VERIFY_RET_PURITY=1
- strlen FAST enhancement for const handles
- FAST_INT gate for same-BB SSA optimization
- length cache for string literals in llvmlite
- Expand bench harness (tools/perf/microbench.sh)
- Add branch/call/stringchain/arraymap/chip8/kilo cases
- Auto-calculate ratio vs C reference
- Document in benchmarks/README.md
- Compiler health improvements
- Unify PHI insertion to insert_phi_at_head()
- Add NYASH_LLVM_SKIP_BUILD=1 for build reuse
- Runtime & safety enhancements
- Clarify Rust/Hako ownership boundaries
- Strengthen receiver localization (LocalSSA/pin/after-PHIs)
- Stop excessive PluginInvoke→BoxCall rewrites
- Update CURRENT_TASK.md, docs, and canaries
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-13 16:40:58 +09:00 |
|
|
|
149ec61d4d
|
refactor(builder): extract call annotation module (Phase 3 complete!)
Split builder_calls.rs (1041→973 lines, -68 lines, -6.5%)
Changes:
- Created calls/annotation.rs (82 lines)
- Extracted annotate_call_result_from_func_name function
- Handles call result type annotation
- Specialized logic for JsonParser/JsonToken/JsonTokenizer
- Updated calls/mod.rs to declare new module
- Updated builder_calls.rs to redirect to new module
- Build verified: 0 errors, 85 warnings
Phase 1-3 Complete Summary:
- Phase 1: Legacy deletion (2,997 lines)
- Phase 2: handlers/boxes.rs split (686 lines)
- boxes_object_fields.rs (360 lines)
- boxes_instance.rs (151 lines)
- boxes_plugin.rs (175 lines)
- Phase 3: builder/builder_calls.rs split (68 lines)
- calls/annotation.rs (82 lines)
Total reduction: 3,751 lines deleted across 3 phases
Ultrathink Strategy Success:
- Focused on clear, low-risk refactorings
- Sequential execution minimized errors
- Modular organization improved maintainability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-01 12:50:18 +09:00 |
|
|
|
2f306dd6a5
|
feat: 大規模リファクタリング - SRP原則に基づくモジュール分割
## MIR builder_calls.rs リファクタリング
- 879行 → 629行 (28%削減) + 7専門モジュール
- calls/ ディレクトリに機能別分割:
- call_target.rs: CallTarget型定義
- method_resolution.rs: メソッド解決ロジック
- extern_calls.rs: 外部呼び出し処理
- special_handlers.rs: 特殊ハンドラー
- function_lowering.rs: 関数変換ユーティリティ
- call_unified.rs: 統一Call実装
- mod.rs: モジュール統合
## Parser statements.rs リファクタリング
- 723行 → 8専門モジュール
- statements/ ディレクトリに機能別分割:
- control_flow.rs: if/loop/break/continue/return
- declarations.rs: 宣言系ディスパッチャー
- exceptions.rs: try/throw/catch/cleanup
- helpers.rs: ヘルパー関数
- io_async.rs: print/nowait
- modules.rs: import/using/from
- variables.rs: local/outbox/assignments
- mod.rs: 統合モジュール
## 効果
✅ 単一責任原則(SRP)の達成
✅ 保守性・再利用性の向上
✅ ChatGPT5 Pro設計の型安全Call解決システム実装
✅ スモークテスト通過確認済み
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-09-25 09:01:55 +09:00 |
|