## 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>
📚 Nyash Documentation
🚀 はじめに(導線)
- 現在のタスクと進行状況: ../CURRENT_TASK.md
- コア概念の速習: reference/architecture/nyash_core_concepts.md
- 設計ブループリント(文字列/文字コード): development/design/blueprints/strings-utf8-byte.md
📂 ドキュメント構造(指針)
📖 reference/ - 正式な技術仕様
- language/ - 言語仕様(構文、型システム、Box仕様)
- architecture/ - システムアーキテクチャ(MIR、VM、実行バックエンド)
- api/ - ビルトインBoxのAPI仕様
- plugin-system/ - プラグインシステム、BID-FFI仕様
- 🆕🔥 TypeBox ABI統合 + セルフホスティング - ABIすらBoxとして扱う革命的設計!
- まずはこちら:
reference/boxes-system/plugin_lifecycle.md(PluginBoxV2のライフサイクル、singleton、nyash.tomlの要点)
📚 guides/ - 利用者向けガイド
- getting-started.md - はじめに(統一版)
- tutorials/ - ステップバイステップのチュートリアル
- examples/ - 実践的なサンプルコード
- wasm-guide/ - WebAssemblyビルドガイド
🧩 how-to/ - 目的別ハウツー
- 手順重視の短いガイド(前提→コマンド→検証)
🔧 development/ - 開発者向け
- current/ - 現在進行中のタスク(CURRENT_TASK.md等)
- roadmap/ - 開発計画
- phases/ - Phase 8~12の詳細計画
- phase-12/ - 🆕🔥 TypeBox統合ABI + Nyash ABI C実装(セルフホスティング実現!)
- native-plan/ - ネイティブビルド計画
- proposals/ - RFC、新機能提案
🔌 Net Plugin(HTTP/TCP)
- 使い方と仕様:
reference/plugin-system/net-plugin.md
🗄️ archive/ - アーカイブ
- consultations/ - AI相談記録(gemini/chatgpt/codex)
- decisions/ - 過去の設計決定
- build-logs/ - ビルドログ、ベンチマーク結果
- old-versions/ - 古いドキュメント
🎯 クイックアクセス
すぐ始める
- guides/getting-started.md
- guides/language-guide.md
- guides/p2p-guide.md
技術リファレンス
- reference/language/LANGUAGE_REFERENCE_2025.md
- reference/language/EBNF.md(演算子: ! 採用 / do-while 非採用)
- reference/language/strings.md(UTF‑8/Byte 二本柱)
- reference/architecture/TECHNICAL_ARCHITECTURE_2025.md
- reference/architecture/execution-backends.md
- reference/runtime/gc.md
- reference/plugin-system/
- tools/cli-options.md(CLI早見表)
デザイン/ガイド
- guides/language-core-and-sugar.md(コア最小+糖衣)
- guides/loopform.md(ループ正規化)
- guides/scopebox.md(開発時の可視化)
- guides/dev-local-alias.md(開発向け: 行頭 @name = expr → local 宣言糖衣)
- guides/box-patterns.md(Boxパターン集:Ownership/Lease/Cancel/Capability/Affinity/Observable)
- guides/box-design-checklist.md(Box 設計チェックリスト)
- proposals/concurrency/boxes.md(並行モデルのBox設計:Routine/Channel/Select/Scope)
- reference/concurrency/semantics.md(ブロッキング/close/select/観測の規約)
- design/(設計ノート入口)
- development/design/legacy/flow-blocks.md(矢印フロー/匿名ブロック・設計草案)
- development/proposals/scope-reuse.md(スコープ再利用ブロック・MVP提案)
- reference/language/match-guards.md(ガード連鎖/Range・CharClass設計)
- guides/core-principles.md(最小構文・ゼロランタイム・可視化の原則)
開発状況
- 現在のタスク
- 開発ロードマップ
- Phase別計画
- 🔥 Phase 12: TypeBox統合ABI
- 🔥 Phase 16: マクロ革命
- 🧪 Phase 17: LoopForm Self‑Hosting
- 💡 Rust所有権統合(候補) - Phase 17+候補
- 🧩 Mini‑VM 構築ロードマップ
- 🧭 Using→Loader 統合(最小設計): development/design/legacy/using-loader-integration.md
- 🗂️ Docsの書き方(小さく・リンク駆動): guides/contributing-docs.md
📋 再編成について / フォルダの見分け方
ドキュメントは2025年8月20日に再編成されました。詳細はREORGANIZATION_REPORT.mdを参照してください。
旧パスから新パスへの主な変更:
説明書/→guides/とreference/に分割予定/→development/roadmap/- 散在していたファイル → 適切なカテゴリに整理
補足:
reference/は正本(仕様)。guides/は読み物、how-to/は手順書。design/は公開できる設計ノート。private/は下書き保管庫(将来reference//design/に昇格)。
Nyash は「Everything is Box」哲学に基づく言語です。詳細はコア概念とガイドを参照してください。