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

2.5 KiB
Raw Blame 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 既定)。