56 lines
3.7 KiB
Markdown
56 lines
3.7 KiB
Markdown
|
|
# Phase 25.4 — Naming & Stage‑1 CLI Cleanup
|
|||
|
|
|
|||
|
|
Status: design only(小さな箱の片付けフェーズ)
|
|||
|
|
|
|||
|
|
目的:
|
|||
|
|
- static box / global 呼び出しまわりの命名規約を NamingBox に一本化し、レガシーなフォールバック経路を整理する。
|
|||
|
|
- Stage‑1 CLI の env/トグル解釈を 1 箇所の「設定箱」にまとめ、stage1_main の責務を薄くする。
|
|||
|
|
- MIR デバッグログ(`__mir__.log`)のタグと配置をドキュメントで見える化し、将来の正式機能化に備える。
|
|||
|
|
|
|||
|
|
## 1. NamingBox SSOT 化(static box naming)
|
|||
|
|
|
|||
|
|
- 対象:
|
|||
|
|
- `src/mir/naming.rs`
|
|||
|
|
- `src/mir/builder/decls.rs`(`build_static_main_box` など)
|
|||
|
|
- `src/backend/mir_interpreter/handlers/calls/global.rs`
|
|||
|
|
- ゴール:
|
|||
|
|
- static box 名に触るコードはすべて NamingBox (`canonical_box_name`, `encode_static_method`, `normalize_static_global_name`) 経由に揃える。
|
|||
|
|
- VM 側の global 呼び出しは canonical 名(例: `Main._nop/0`)のみを見る。レガシーな「元名での再探索」フォールバックは撤去済みの状態を維持。
|
|||
|
|
- テスト: `src/tests/mir_static_box_naming.rs` を維持し、`apps/tests/minimal_to_i64_void.hako` が Main._nop/0 → StringHelpers.to_i64 経由で実行されることを固定。
|
|||
|
|
|
|||
|
|
## 2. Stage1 CLI 設定箱(env→Config 変換)
|
|||
|
|
|
|||
|
|
- 対象:
|
|||
|
|
- `lang/src/runner/stage1_cli.hako`
|
|||
|
|
- 新規: `Stage1CliConfigBox`(案)
|
|||
|
|
- ゴール:
|
|||
|
|
- NYASH_USE_STAGE1_CLI / STAGE1_EMIT_* / STAGE1_BACKEND / STAGE1_SOURCE / STAGE1_PROGRAM_JSON / NYASH_TO_I64_* などの env を、1 箇所で構造体 `Config` に変換する箱を作る。
|
|||
|
|
- stage1_main(args) は、この `Config` に対する分岐ロジックだけを持つ(env.get を散在させない)。
|
|||
|
|
- env の一覧と既定値/優先順位を docs(Phase 25.x or env-var reduction report)に反映し、将来の環境変数削減フェーズの入力にする。
|
|||
|
|
|
|||
|
|
## 3. MIR ログ観測リスト(__mir__.log の整理)
|
|||
|
|
|
|||
|
|
- 対象:
|
|||
|
|
- `__mir__.log` を使用している .hako ファイル(例: `lang/src/runner/stage1_cli.hako`, `lang/src/shared/common/string_helpers.hako`)
|
|||
|
|
- docs 新規: `docs/development/architecture/mir-logs-observability.md`(案)
|
|||
|
|
- ゴール:
|
|||
|
|
- どのタグ(例: `[stage1_main] ...`, `[string_helpers/to_i64] ...`)がどのレイヤ/目的のためのデバッグかを一覧にする。
|
|||
|
|
- dev 用ログと将来残したい観測ログを分けておき、Phase 25.x 以降で `__mir__` を正式な「MIR 観測 API」として設計するための下地にする。
|
|||
|
|
|
|||
|
|
## 4. Fixture の最小化(optional / 後続タスク)
|
|||
|
|
|
|||
|
|
- 対象:
|
|||
|
|
- `apps/tests/minimal_to_i64_void.hako`
|
|||
|
|
- StringHelpers 系のテスト用 .hako(将来新設)
|
|||
|
|
- ゴール:
|
|||
|
|
- Void → 数値変換など、特定の型崩れバグを再現するための fixture を「本当に必要な最小の箱」に分解する。
|
|||
|
|
- 代表テストの MIR ログが過度に肥大化しないようにしつつ、numeric core / to_i64 の仕様を小さな .hako で固定していく。
|
|||
|
|
|
|||
|
|
## 5. 他フェーズとの関係
|
|||
|
|
|
|||
|
|
- Phase 21.7(Normalization / Methodize Static Boxes):
|
|||
|
|
- NamingBox による static 名正規化(`main` → `Main`)はすでに導入済みで、本フェーズはその SSOT 化と VM 側フォールバックの整理にあたる。
|
|||
|
|
- 実際の「Global(\"Box.method\") → Method{receiver=static singleton}」リライトは Phase 21.7 本体で実装する予定。
|
|||
|
|
- Phase 25.1(Stage‑1 UsingResolver / CLI 本線):
|
|||
|
|
- 本フェーズは 25.1 の「片付け+観測」側タスクとして扱い、CLI 本体や UsingResolver の仕様変更は行わない(構造整理のみ)。
|