|
|
f9d100ce01
|
chore: Phase 25.1 完了 - LoopForm v2/Stage1 CLI/環境変数削減 + Phase 26-D からの変更
Phase 25.1 完了成果:
- ✅ LoopForm v2 テスト・ドキュメント・コメント完備
- 4ケース(A/B/C/D)完全テストカバレッジ
- 最小再現ケース作成(SSAバグ調査用)
- SSOT文書作成(loopform_ssot.md)
- 全ソースに [LoopForm] コメントタグ追加
- ✅ Stage-1 CLI デバッグ環境構築
- stage1_cli.hako 実装
- stage1_bridge.rs ブリッジ実装
- デバッグツール作成(stage1_debug.sh/stage1_minimal.sh)
- アーキテクチャ改善提案文書
- ✅ 環境変数削減計画策定
- 25変数の完全調査・分類
- 6段階削減ロードマップ(25→5、80%削減)
- 即時削除可能変数特定(NYASH_CONFIG/NYASH_DEBUG)
Phase 26-D からの累積変更:
- PHI実装改善(ExitPhiBuilder/HeaderPhiBuilder等)
- MIRビルダーリファクタリング
- 型伝播・最適化パス改善
- その他約300ファイルの累積変更
🎯 技術的成果:
- SSAバグ根本原因特定(条件分岐内loop変数変更)
- Region+next_iパターン適用完了(UsingCollectorBox等)
- LoopFormパターン文書化・テスト化完了
- セルフホスティング基盤強化
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: ChatGPT <noreply@openai.com>
Co-Authored-By: Task Assistant <task@anthropic.com>
|
2025-11-21 06:25:17 +09:00 |
|
|
|
51359574d9
|
feat(stage1): Phase 25.1 - Stage1 CLI デバッグ改善 + 環境変数削減計画
- ✅ Stage1 CLI デバッグログ追加
- lang/src/runner/stage1_cli.hako: STAGE1_CLI_DEBUG対応
- 各関数でentry/exit/状態ログ出力
- SSAバグ調査を容易化
- ✅ Rust bridge 実装
- src/runner/stage1_bridge.rs: 子プロセス起動・環境変数配線
- NYASH_ENTRY設定、モジュールリスト生成
- ✅ デバッグヘルパースクリプト
- tools/stage1_debug.sh: 環境変数自動診断・詳細ログ
- tools/stage1_minimal.sh: 推奨5変数のみで実行
- ✅ 環境変数削減計画(25個→5個)
- docs/development/proposals/env-var-reduction-report.md
- 使用箇所マトリックス、依存関係グラフ
- 6段階削減ロードマップ(80%削減目標)
- docs/development/proposals/stage1-architecture-improvement.md
- 他言語事例調査(Rust/Go/Nim)
- アーキテクチャ統一案、実装ロードマップ
- ✅ LoopForm v2 設計ドキュメント
- docs/development/roadmap/phases/phase-25.1/stage1-usingresolver-loopform.md
🎯 成果: Stage1起動の複雑さを可視化、80%削減計画確立
|
2025-11-21 06:22:02 +09:00 |
|
|
|
75f3df2505
|
refactor(mir): Phase 25.1o - do_break/continue 共通化(LoopExitKind型統一)
【変更内容】
1. LoopExitKind enum定義
- Break / Continue の型安全な区別
2. do_loop_exit() 共通メソッド作成(47行)
- スナップショット取得(共通処理)
- kind別のスナップショット保存
- kind別のジャンプターゲット
- unreachable ブロック切り替え(共通処理)
3. do_break/continue をthin wrapperに変換
- do_break: 13行 → 4行
- do_continue: 12行 → 4行
- 合計21行削減
【効果】
- 構造改善: break/continue の共通ロジック一箇所に集約
- 保守性向上: デバッグログなどの共通処理が統一管理
- 拡張性向上: labeled break/continue等の将来拡張が容易
【検証結果】
- ビルド成功(警告なし)
- mir_stageb_loop_break_continue_verifies: PASS
- /tmp/loop_continue_fixed.hako: RC=3(期待通り)
関連: Phase 25.1m (continue PHI修正), Phase 25.1n (レガシー削除)
|
2025-11-19 08:56:44 +09:00 |
|
|
|
f74b7d2b04
|
📦 Hotfix 1 & 2: Parameter ValueId Reservation + Exit PHI Validation (Box-First Theory)
**箱理論に基づく根治的修正**:
## 🎯 Hotfix 1: Parameter ValueId Reservation (パラメータ ValueId 予約)
### 根本原因
- MirFunction counter が params.len() を考慮していなかった
- local variables が parameter ValueIds を上書き
### 箱理論的解決
1. **LoopFormContext Box**
- パラメータ予約を明示的に管理
- 境界をはっきりさせる
2. **MirFunction::new() 改善**
- `initial_counter = param_count.max(1)` でパラメータ予約
- Parameters are %0, %1, ..., %N-1
3. **ensure_counter_after() 強化**
- パラメータ数 + 既存 ValueIds 両方を考慮
- `min_counter = param_count.max(max_id + 1)`
4. **reserve_parameter_value_ids() 追加**
- 明示的な予約メソッド(Box-First)
## 🎯 Hotfix 2: Exit PHI Predecessor Validation (Exit PHI 検証)
### 根本原因
- LoopForm builder が存在しないブロックを PHI predecessor に追加
- 「幽霊ブロック」問題
### 箱理論的解決
1. **LoopFormOps.block_exists() 追加**
- CFG 存在確認メソッド
- 境界を明確化
2. **build_exit_phis() 検証**
- 非存在ブロックをスキップ
- デバッグログ付き
### 実装ファイル
- `src/mir/function.rs`: Parameter reservation
- `src/mir/phi_core/loopform_builder.rs`: Context + validation
- `src/mir/loop_builder.rs`: LoopFormOps impl
- `src/mir/builder/stmts.rs`: Local variable allocation
### 業界標準準拠
- ✅ LLVM IR: Parameters are %0, %1, ...
- ✅ SSA Form: PHI predecessors must exist in CFG
- ✅ Cytron et al. (1991): Parameter reservation principle
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-18 06:39:45 +09:00 |
|
|
|
6856922374
|
Phase 25.1a: selfhost builder hotfix (fn rename, docs)
|
2025-11-15 05:42:32 +09:00 |
|