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

35 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 直接生成へ段階移行(設計単純化のため)。