feat(box_factory): Phase 86 BoxFactory Priority normalization
Phase 86: BoxFactory Priority 正常化プロジェクト完了 目的: - BoxFactory のデフォルトポリシーを BuiltinFirst から StrictPluginFirst に変更 - プラグイン版 StringBox/ArrayBox/MapBox が正常に使用できるよう正常化 - Phase 85 (Ring0/Ring1-Core 境界設計) の土台準備 実装内容: 1. ドキュメント作成 - docs/development/current/main/factory_priority.md: 完全仕様文書化 2. コード修正 (1行のみ) - UnifiedBoxRegistry::new() が with_env_policy() を使用 - デフォルトポリシーが StrictPluginFirst に変更 3. テスト追加 (5件, 全パス) - test_default_policy_is_strict_plugin_first: デフォルトポリシー確認 - test_env_policy_override: 環境変数制御確認 - test_reserved_type_protection: 予約型保護動作確認 - test_plugin_override_with_env: 予約型 override 確認 - test_non_reserved_plugin_priority: 非予約型プラグイン優先確認 効果: - ✅ プラグイン版 StringBox/ArrayBox/MapBox が正常に使用可能 - ✅ core_required Box の予約名保護維持 - ✅ 環境変数による柔軟な制御が可能 - ✅ テスト改善: 500→506 passed, 34→33 failed (+6 passed, -1 failed) core_required Box リスト (暫定): - Core value types: StringBox, IntegerBox, BoolBox, FloatBox, NullBox - Core containers: ArrayBox, MapBox, ResultBox - Core method indirection: MethodBox 環境変数: - NYASH_BOX_FACTORY_POLICY: ポリシー選択 (default: strict_plugin_first) - NYASH_USE_PLUGIN_BUILTINS: core_required override 許可 - NYASH_PLUGIN_OVERRIDE_TYPES: 個別 Box override 許可 Phase 85 準備: - Ring0/Ring1-Core 境界設計の土台が整った - ConsoleBox の扱いは Phase 85 で最終決定 完了条件: - ✅ factory_priority.md 作成完了 - ✅ UnifiedBoxRegistry::new() 修正完了 - ✅ デフォルトポリシー StrictPluginFirst 確定 - ✅ テスト 5件追加・全パス - ✅ CURRENT_TASK.md 更新完了 - ✅ Phase 85 README 準備完了 参考: - 設計文書: docs/development/current/main/factory_priority.md - Phase 85 計画: docs/private/roadmap2/phases/phase-85-ring0-runtime/README.md 🎉 Phase 86 完了!次は Phase 85 で Ring0/Ring1-Core 境界の文書化へ
This commit is contained in:
@ -205,7 +205,26 @@
|
||||
- `src/mir/builder/utils.rs` に `infer_boxcall_return_type()` ヘルパーを追加し、StringBox/IntegerBox/BoolBox/ArrayBox/MapBox/Result-like(QMark 相当)/Stage1CliBox など計 27 メソッドの戻り値型を一元管理。
|
||||
- BoxCall lowering 経路(emit_box_or_plugin_call 相当)から `infer_boxcall_return_type()` を呼び出し、戻り値 ValueId に対応する MirType を `value_types` に登録。
|
||||
- Await/QMark 系は BoxCall 経路の型登録で全て解消され、追加の Await 専用実装は不要。
|
||||
- `NYASH_PHI_FALLBACK_DISABLED=1 cargo test --release --lib` 実行時の Case D panic は 4 件 → 0 件となり、Case D 完全解消を達成。型生成(Const/BoxCall)・型伝播(CopyTypePropagator/PhiTypeResolver)・統合(GenericTypeResolver)の 3 層構造が箱として完成し、次フェーズでの if_phi フォールバック削除に進める状態になった。
|
||||
- `NYASH_PHI_FALLBACK_DISABLED=1 cargo test --release --lib` 実行時の Case D panic は 4 件 → 0 件となり、Case D 完全解消を達成。型生成(Const/BoxCall)・型伝播(CopyTypePropagator/PhiTypeResolver)・統合(GenericTypeResolver)の 3 層構造が箱として完成し、if_phi フォールバック削除に進める状態になった(Phase 84-5 / 82 の最終仕上げ)。
|
||||
|
||||
11. **Phase 85-ring0-runtime: Ring0/Ring1/Plugin 層の設計整理** ⏳ **設計中**
|
||||
- Ring0 は Box を知らない最小カーネル API(Mem/Io/Time/Log 等)に限定し、実装は `Ring0Context` + adapter 1 箇所に集約する方針を docs に固定。
|
||||
- Ring1-core(StringBox/ArrayBox/MapBox/FileBox/ConsoleBox 等)と ring1-optional/selfhost/user_plugin を 4 層に分類し、「core_required は静的必須セット、optional と user は PluginHost の上に載る」設計を言語化。
|
||||
- `docs/development/current/main/ring0-inventory.md` に println!/eprintln! を含む Ring0 候補呼び出しや Box/プラグイン/カーネル実装数の調査結果をまとめ、Phase 86 以降で Ring0Context に寄せていくためのインベントリを準備。
|
||||
|
||||
12. **Phase 86: BoxFactory Priority 正常化** ✅ **完了**(2025-12-02)
|
||||
- **目的**: BoxFactory のデフォルトポリシーを `BuiltinFirst` から `StrictPluginFirst` に変更し、プラグイン版 Box が正常に使用できるよう正常化。
|
||||
- **実装内容**:
|
||||
- ✅ 現状仕様の文書化(`docs/development/current/main/factory_priority.md`)
|
||||
- ✅ `UnifiedBoxRegistry::new()` を 1 行修正(`with_policy(BuiltinFirst)` → `with_env_policy()`)
|
||||
- ✅ テスト 5 件追加・全パス(default policy / env override / reserved protection / plugin override / non-reserved priority)
|
||||
- ✅ Phase 85 README 準備完了(`docs/private/roadmap2/phases/phase-85-ring0-runtime/README.md`)
|
||||
- **効果**:
|
||||
- プラグイン版 StringBox/ArrayBox/MapBox が正常に使用可能に
|
||||
- core_required Box(StringBox/IntegerBox/BoolBox/ArrayBox/MapBox 等)の予約名保護維持
|
||||
- 環境変数 `NYASH_BOX_FACTORY_POLICY` による柔軟な制御が可能
|
||||
- テスト改善:500 passed, 34 failed → 506 passed, 33 failed(+6 passed, -1 failed)
|
||||
- **詳細**: [factory_priority.md](docs/development/current/main/factory_priority.md)
|
||||
|
||||
### バックログ
|
||||
|
||||
|
||||
Reference in New Issue
Block a user