Files
hakorune/docs/private/roadmap/phase-31.4-blockbuilder-cleanup.md

35 lines
2.2 KiB
Markdown
Raw Normal View History

# Phase31.4 — Selfhost BlockBuilder ModuleFunction 依存撤退(設計メモ)
Context
- BlockBuilderBox が `Mir.*``MirSchemaBox.*` の二系統 API を混在使用(約 60 箇所)。
- 生成フェーズで ModuleFunction 解決に依存し、自己ホスト実行時に name 解決ゆらぎUnknown module functionを招く。
- JsonEmitBox は BoxHelpers 経由へ統一済み。StringHelpers の依存は最小int_to_str/json_quoteで妥当。
Goal根治
- BlockBuilderBox から ModuleFunction 依存(`Mir.*`/`MirSchemaBox.*` 呼び出しを撤退し、Map/Array の直接生成(または MirSchemaBox の単一路)に統一する。
- 以後の自己ホスト系は、BoxAPIMapBox/ArrayBox JsonEmitBox だけで MIR(JSON) を構築し、using/探索の影響を受けない。
Plan小さく段階導入
1) API統一P1
- `Mir.*` を全撤退。`MirSchemaBox.*` に一本化inst_const/inst_ret/inst_compare/inst_binop/inst_branch/inst_jump/block/fn_main/module
- import も `using "selfhost/shared/mir/mir_schema_box.hako" as MirSchemaBox` に統一。
- 未使用の `StringHelpers` import を削除。
2) 直接生成P2・最小
- MirSchemaBox 呼び出し自体も Map/Array 直接構築に段階移行(可読性を維持するため mk_inst_* ヘルパを同ファイルに薄く導入)。
- 代表ルートconst_ret/compare_branch/binop/extern_call_retから順次適用。
3) 検証Smokes/Strict
- `selfhost_mircall_extern_from_builder_vm.sh` が GateC→MiniVM で `true`
- GateC Strictquick/quickliteを既定ONのまま緑を維持PARSE_STRICT/VERIFY_CORE_EXTERN
Acceptance
- BlockBuilderBox 内の ModuleFunction 呼び出しが 0。未使用 import なし。
- 生成 JSON 形状は現行のバリデータvalidate_shape/GateC Readerを満たす。
- 自己ホスト quick/selfhost スモークが緑(外部依存なし)。
Notes
- StringHelpers の使用は JsonEmitBox の補助int_to_str/json_quoteのみ許容。数値正規化は BoxHelpers で担保。
- MirSchemaBox は SSOTとして残すが、将来的に Map 直接生成へ段階移行(設計単純化のため)。