Files
hakorune/docs/development/roadmap/phases/phase-18/README.md

40 lines
2.5 KiB
Markdown
Raw Normal View History

# Phase 18: LifeBox 原則と LoopForm 設計(文書化+最小インタフェース)
目的Why
- 「全てはループ」の統一観に基づき、スコープ/関数/例外/Box を LoopSignal で語る設計を文書として固定。
- 実装は最小インタフェースの骨組み。Core13 の実装は維持しつつ、LoopForm はまだ“思想IR”として扱う。
コア概念(最小)
- LifeBox 原則: BoxLoopのインスタンス。`birth → (next)* → signal → fini`。通常Boxは退化next省略
- ScopeLoopループしないループ: 反復1回/Next禁止/単一入出口。`end` 直前に LIFO で fini を直列化。
- LoopSignal: `{ Next, Break, Return, Err, (必要なら Yield) }`。例外は値+Signal で運ぶ。
LoopForm思想IR
- スコープ: `loop.begin → 本体 → loop.signal(Break|Return) → loop.end`
- 例外/try: 本体が `Result` を返し、`is_err` 分岐→ catch/finally 集約。finally は `end` 直前に一括。
- 状態束ね: 局所変数は state tupleループ状態に束ね、`end` で一括 fini。
Core13 への写像(退化)
- ScopeLoop → 既存の `Jump/Branch/Phi`。追加の call/alloc を発生させない(ゼロコスト退化)。
- 例外統一 → `Result` + `TypeOp(is_err)` + `Branch` + `Phi``?` は Err→Return の定型展開。
- Box終了 → 合流ブロックで `fini` を LIFO 直列(検証器で一回性/順序確認)。
決定トグル(提案)
- ASTは単一・IRで分岐: はいPhase17に準拠
- ScopeLoopを正式モデル化: はい(名称は LifeBox に統合。ScopeLoopは表現上の別名
- 例外は Result分岐で統一: はい
- ゼロコスト条件の監視: Phase19 でCI導入ここでは規約と受入れ基準を明記
受入れ基準Docs
- LifeBox/ScopeLoop/LoopSignal の定義が本文にあり、Core13 への退化ルールが列挙されている。
- 検証規約(単一入出口/Next禁止/LIFO fini/追加call禁止が箇条書きで提示されている。
- Q&A に“なぜLoop化するのかゼロコスト条件は何か例外統一の利点”がまとまっている。
アウトオブスコープPhase18
- LoopForm の実装(変換/実行Phase19 以降
- 詳細トレースAPIPhase19 以降
次フェーズへの受け渡し
- Phase19: LoopForm ⇄ Core13 の往復 PoC、可逆性テストと禁則CI、必要最小の LoopBox 実装feature off 既定)。