docs: Phase 100 rollout plan (Pinned then mutable carrier)
This commit is contained in:
@ -33,3 +33,12 @@ loop(i < n) {
|
||||
- Phase 100 は「ループ外の値が loop 内で見えない」問題(capture/wiring)を解く。
|
||||
- Loop Canonicalizer は「ループ内の不変式を外に出す」AST 変換であり、別ユースケース。
|
||||
|
||||
## 予定(段階投入)
|
||||
|
||||
この Phase は「自由度を上げるほどバグが出やすい領域」なので、段階投入で進める。
|
||||
|
||||
- **P1(read‑only)**: ループ外 local を `Pinned` として `CapturedEnv` に取り込み、receiver 解決を通す。
|
||||
- Fail‑Fast: loop body 内で再代入される変数は pinned 禁止(理由付き)
|
||||
- **P2(mutable)**: loop body 内で再代入される外側変数は `Pinned` では扱わず、LoopState(carrier/env)に昇格して運ぶ。
|
||||
- 初期は “更新形を限定” して shape guard を作り、未対応は Fail‑Fast(曖昧に通さない)
|
||||
- **P3(hoist)**: ループ内の不変式の巻き上げは Loop Canonicalizer 側で扱う(別ユースケースとして分離)
|
||||
|
||||
Reference in New Issue
Block a user