## Phase 71-SSA SSA undef 削減 完全達成! ### 🎉 成果 - **SSA undef**: 4件 → **0件** (100%解消!) - **所要時間**: 約2時間 (Task先生調査 + 実装 + 検証) - **修正ファイル**: 3ファイル (.hako実装のみ、MIR/SSAビルダー不変) ### 🔍 根本原因 (Task先生による徹底分析) **ValueId(272) = StringHelpers.starts_with_kw/3 の戻り値** - static boxの委譲でValueIdマッピング失敗 - 引数パラメータ設定ログが一切出力されず - 別関数の戻り値ValueIdが誤って引数として参照される ### 🛠️ 修正内容 **修正1: ParserStringUtilsBox.trim (Quick Win)** - L76: `StringHelpers.skip_ws` → `ParserStringUtilsBox.skip_ws` - 効果: SSA undef 4件 → 2件 - 副次効果: Main._parse_number/ParserBox.parse_block2 消滅 **修正2: ParserCommonUtilsBox.trim (修正案A)** - L50-69: 委譲を廃止、直接実装に変更 - FuncScannerBox.trimの成功パターンを適用 **修正3: ParserBox.trim (修正案A)** - L81-98: 委譲を廃止、直接実装に変更 - 効果: 残り2件のSSA undef完全解消 ### ✅ 検証結果 ```bash grep -c 'ssa-undef-debug' logs/selfhost/stageb_20251202_111409_2674670.log # 出力: 0 ← 🎉 完全解消! ``` ### 📊 SSA undef 推移 | フェーズ | 件数 | 詳細 | |---------|------|------| | Phase 71初回 | 4件 | trim×2, _parse_number, parse_block2 | | Quick Win後 | 2件 | trim×2 (予想外: 他2件消滅) | | 修正案A後 | **0件** | 🎉 **完全解消!** | ### 🎯 残存課題 (次フェーズ) 1. dev verify警告: 1件 (StageBDriverBox birth) 2. Program JSON未出力: extract_ok=0 (rc=0だが行なし) ### 💡 重要な教訓 - static boxの委譲は危険 (ValueIdマッピング失敗) - 静的呼び出し (BoxName.method) が SSA-friendly - 成功パターン (FuncScannerBox.trim) の積極活用 ### 📝 ドキュメント - 詳細レポート: phase71-ssa-trim-fix-20251202.md - Task先生分析: ValueId(272)特定、修正案A-C提案 🤖 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」哲学に基づく言語です。詳細はコア概念とガイドを参照してください。