Commit Graph

1 Commits

Author SHA1 Message Date
024a09c15b feat(core): Phase 122 ConsoleBox.println / log unification
## Phase 122: ConsoleBox.println / log の統一 (完了)

### 概要
ConsoleBox.printlnをlogのエイリアスとしてVM/TypeRegistryレベルで統一。
Phase 120で発見されたesc_dirname_smoke.hakoの「Unknown method 'println'」
エラーを完全解消。

### 完了タスク
-  TypeRegistry修正: printlnをlogのエイリアス(slot 400)として追加
-  ConsoleBox実装: printlnメソッドのラッパ追加
-  VM Method Dispatch: ConsoleBox専用ハンドラ追加
-  Plugin設定: nyash.tomlにprintln (method_id 2)追加
-  ドキュメント更新: 3ファイル(hako_logging/logging_policy/core_boxes)

### 実装詳細

#### 1. TypeRegistry (src/runtime/type_registry.rs)
```rust
const CONSOLE_METHODS: &[MethodEntry] = &[
    MethodEntry { name: "log",     arity: 1, slot: 400 },
    MethodEntry { name: "warn",    arity: 1, slot: 401 },
    MethodEntry { name: "error",   arity: 1, slot: 402 },
    MethodEntry { name: "clear",   arity: 0, slot: 403 },
    // Phase 122: println は log のエイリアス
    MethodEntry { name: "println", arity: 1, slot: 400 },
];
```

#### 2. ConsoleBox (src/boxes/console_box.rs)
- WASM/非WASM両方にprintln()メソッド追加
- 内部的にlog()に委譲

#### 3. VM Method Dispatch (src/backend/mir_interpreter/handlers/calls/method.rs)
- ConsoleBox専用ハンドラ追加
- log/println/warn/error/clearをサポート
- args配列の正しい処理(len > 1時はargs[1]を使用)

#### 4. Plugin設定 (nyash.toml)
- ConsoleBox.methodsにprintln追加(method_id=2)
- method_id整合性: log=1, println=2

### テスト結果
-  esc_dirname_smoke.hako実行成功
  - 旧エラー: "Unknown method 'println'" ← **完全解消**
  - 新出力: `[Console LOG] dir1/dir2`

### Phase 120問題解決
**Phase 120ベースラインでの課題**:
-  esc_dirname_smoke.hako: ConsoleBox.println未実装

**Phase 122での解決**:
-  TypeRegistryレベルでprintln→log正規化
-  全経路(JSON v0/selfhost/通常VM)で一貫性保証

### ファイル構成
**新規作成**:
- docs/development/current/main/phase122_consolebox_println_unification.md

**修正**:
- src/runtime/type_registry.rs (+5行)
- src/boxes/console_box.rs (+14行, WASM/非WASM両対応)
- src/backend/mir_interpreter/handlers/calls/method.rs (+60行)
- nyash.toml (+1メソッド定義)
- docs/development/current/main/hako_logging_design.md (+40行)
- docs/development/current/main/logging_policy.md (+30行)
- docs/development/current/main/core_boxes_design.md (+20行)

### 技術的成果
- **Alias First原則**: VM/TypeRegistryレベルで正規化
- **Phase 120連携**: ベースライン確立→問題発見→根本解決
- **全経路統一**: selfhost/JSON v0/通常VMすべてで動作

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 05:16:06 +09:00