Phase 122.5-126完了:ConsoleBox 品質改善・最適化・統合
## 実装成果(Phase 122.5-126) ### Phase 122.5: nyash.toml method_id 修正 - println method_id を 2 → 1 に統一(log と同じ) - TypeRegistry slot 400 との整合性確保 ### Phase 123: ConsoleBox WASM/非WASM コード統一化 - マクロ define_console_impl! による重複排除 - 67行削減(27.3% 削減達成) - ビルド成功・全テストパス ### Phase 124: VM Method Dispatch 統一化 - TypeRegistry ベースの統一ディスパッチ (dispatch_by_slot) - String/Array/ConsoleBox を一元化 - 100行削減、メソッド解決の高速化 ### Phase 125: 削除:deprecated builtin ConsoleBox - src/box_factory/builtin_impls/console_box.rs 削除 - Plugin-only 移行で "Everything is Plugin" 実現 - 52行削減 ### Phase 126: ドキュメント統合 - consolebox_complete_guide.md (27KB統合マスター) - core_boxes_design/logging_policy/hako_logging_design 更新 - ~750行の navigation・cross-reference 改善 ## 数値成果 - **総コード削減**: 219行 - **新規ドキュメント**: 1ファイル (+27KB) - **更新ドキュメント**: 6ファイル (+~750行) - **テスト**: Phase 120 representative tests ✅ PASS - **ビルド**: Zero errors ## 設計原則の完全実現 ✅ println/log エイリアス統一(Phase 122) ✅ WASM/非WASM 統一化(Phase 123) ✅ TypeRegistry 統合(Phase 124) ✅ Plugin-only 移行(Phase 125) ✅ ドキュメント統合(Phase 126) 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -363,15 +363,55 @@ console.log("World") // println と同じ動作
|
||||
|
||||
### Phase 122 での統一
|
||||
|
||||
- `ConsoleBox.println` は `ConsoleBox.log` の完全なエイリアス
|
||||
**背景**:
|
||||
- Phase 122 以前: ユーザーコード(.hako)では `println` を使用するが、Rust VM 実装では `log` のみ実装
|
||||
- 問題: selfhost Stage-3 + JoinIR Strict 経路で `Unknown method 'println'` エラー発生
|
||||
|
||||
**解決策**:
|
||||
- `ConsoleBox.println` を `ConsoleBox.log` の完全なエイリアスとして定義
|
||||
- VM の TypeRegistry で slot 400 に正規化される
|
||||
- すべての経路(JSON v0 / selfhost / 通常VM)で一貫性を保つ
|
||||
|
||||
**Hako コンパイラでの対応**:
|
||||
|
||||
Hako コンパイラ(Nyash で書かれたコンパイラ)は `ConsoleBox.println` をサポートします。
|
||||
|
||||
```nyash
|
||||
// Hako コンパイラ内でのログ出力
|
||||
local console = new ConsoleBox()
|
||||
console.println("Compiling: " + filename) // ✅ 動作する
|
||||
|
||||
// JSON v0 経由でも同じ
|
||||
// Hako → JSON v0 → Rust VM
|
||||
// "println" → TypeRegistry → slot 400 → log 実装
|
||||
```
|
||||
|
||||
**技術的詳細**:
|
||||
- Hako コンパイラが生成する JSON v0 に `ConsoleBox.println` が含まれる
|
||||
- Rust VM の TypeRegistry が `println` を slot 400(`log` と同じ)に解決
|
||||
- VM が `log` の実装を実行
|
||||
|
||||
**利点**:
|
||||
- Hako コンパイラで直感的な `println` が使用可能
|
||||
- 他言語(JavaScript, Python など)との一貫性
|
||||
- selfhost Stage-3 経路での完全動作
|
||||
|
||||
**参照**: [Phase 122 詳細ドキュメント](phase122_consolebox_println_unification.md)
|
||||
|
||||
---
|
||||
|
||||
## 関連ドキュメント
|
||||
|
||||
### ConsoleBox について知りたい場合
|
||||
- [ConsoleBox 完全ガイド](consolebox_complete_guide.md) - 統合的なリファレンス
|
||||
- [Phase 122-125 実装記録](phase122_consolebox_println_unification.md) - 詳細な実装背景
|
||||
|
||||
### ログ出力について知りたい場合
|
||||
- [ログポリシー](logging_policy.md) - Nyash のログ出力全体のポリシー
|
||||
- このドキュメント - Hako コンパイラ側のログ設計
|
||||
|
||||
### その他の関連ドキュメント
|
||||
- [logger_box_design.md](logger_box_design.md) - Phase 105 Logger Box フレームワーク
|
||||
- [logging_policy.md](logging_policy.md) - Rust/Ring0.log側方針
|
||||
- [ring0-inventory.md](ring0-inventory.md) - println!分類在庫
|
||||
- [core_optional_design.md](core_optional_design.md) - Optional化設計
|
||||
- [Core Boxes 設計](core_boxes_design.md) - Core Box の全体設計
|
||||
|
||||
Reference in New Issue
Block a user