docs: record Phase 265/266 EdgeCFG progress and research note
This commit is contained in:
@ -1,5 +1,40 @@
|
||||
# Self Current Task — Now (main)
|
||||
|
||||
## 2025-12-21:Phase 266(wires → MIR terminator 生成 - 最小 PoC)✅
|
||||
|
||||
**目的**: wires を MIR terminator に変換する最小 PoC を実装し、Phase 267 での本格適用に備える
|
||||
|
||||
**実装完了内容**:
|
||||
- ✅ emit.rs 作成(emit_wires 実装 + unit test 4個)
|
||||
- from ごとにグループ化して1本だけ許可(1 block = 1 terminator 制約)
|
||||
- Return は target=None を許可(意味を持たない)
|
||||
- Jump/Return 対応(Branch は Phase 267)
|
||||
- ✅ verify_frag_invariants_strict() 追加(段階導入を壊さない)
|
||||
- 既存の verify_frag_invariants() は変更なし(警告のまま)
|
||||
- wires/exits 分離契約を Err 化(Return の target=None は許可)
|
||||
- ✅ mod.rs 更新(emit module エクスポート)
|
||||
|
||||
**テスト結果**:
|
||||
- ✅ edgecfg::api::emit テスト: **4/4 PASS**
|
||||
- test_emit_wires_jump_basic
|
||||
- test_emit_wires_return_basic
|
||||
- test_emit_wires_unwired_stub_fails
|
||||
- test_emit_wires_multiple_from_same_block_fails
|
||||
- ✅ 全 lib テスト: **1392/1392 PASS**(既存 1388 + 新規 4個、退行なし)
|
||||
|
||||
**核心的な設計判断**:
|
||||
1. **from グループ化**: 同じ block に複数 terminator を設定すると上書き → BTreeMap で from ごとにグループ化し、1本だけ許可
|
||||
2. **Return の target=None 許可**: Return は呼び出し元に戻るので target が意味を持たない → Normal/Break/Continue/Unwind のみ target 必須
|
||||
3. **verify strict 版**: 既存の verify_frag_invariants() を Err 化すると既存コードが壊れる → 新規に strict 版を追加し、段階導入
|
||||
4. **Phase 260 terminator 語彙ルール厳守**: Jump は set_jump_with_edge_args()、Return は set_terminator() + set_return_env()
|
||||
|
||||
**重要**: JoinIR/NormalizedShadow には触らない(Phase 267)。Branch terminator 生成も Phase 267 に繰り越し。
|
||||
|
||||
**次フェーズへの橋渡し**:
|
||||
- Phase 267: NormalizedShadow への Frag 適用 + Pattern6/7/8 を Frag 化 + Branch 生成
|
||||
|
||||
**詳細**: `docs/development/current/main/design/edgecfg-fragments.md`
|
||||
|
||||
## 2025-12-21:Phase 265 P2(seq/if_ 実装 - wires/exits 分離)✅
|
||||
|
||||
**目的**: 「解決済み配線(wires)」と「未解決 exit(exits)」を分離し、Frag 合成の基本パターンを完成させる
|
||||
@ -23,11 +58,13 @@
|
||||
2. **if_ は join_frag 受け取り**: join: BasicBlockId では「join block」か「join 以降」か曖昧 → join_frag: Frag で明確化
|
||||
3. **verify は警告のみ**: P2 は wires/exits 分離の証明に集中、Err 化は Phase 266 で MIR 生成時に実施
|
||||
|
||||
**重要**: MIR 命令生成はまだしない(Phase 266+)。Pattern6/7/8 への適用も Phase 266+ に繰り越し。
|
||||
**重要**:
|
||||
- MIR 命令生成の **PoC(emit_wires)**は Phase 266 で完了。
|
||||
- Pattern6/7/8 や NormalizedShadow への **実適用**は Phase 267 以降(層境界維持)。
|
||||
|
||||
**次フェーズへの橋渡し**:
|
||||
- Phase 266: wires を MIR terminator に落とす + NormalizedShadow への Frag 適用
|
||||
- Phase 267: Pattern6/7/8 を Frag 化 + pattern番号分岐削減
|
||||
- Phase 266: wires を MIR terminator に落とす(PoC: emit_wires)✅
|
||||
- Phase 267: NormalizedShadow/JoinIR への適用 + Pattern6/7/8 を Frag 化 + Branch 生成
|
||||
|
||||
**詳細**: `docs/development/current/main/phases/phase-265/` + `docs/development/current/main/design/edgecfg-fragments.md`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user