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:
nyash-codex
2025-12-04 06:02:03 +09:00
parent 0b2a7e906b
commit e328be0307
17 changed files with 3469 additions and 355 deletions

View File

@ -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 の全体設計