Files
hakorune/docs
nyash-codex bb3dd6c2a4 docs(joinir): Phase 121 hako_check JoinIR integration design
## Phase 121: hako_check JoinIR 統合設計 (完了)

### 概要
hako_check経路のJoinIR統合に向けた設計と現状調査を完了。
実装修正なし、設計と調査のみ(Phase 122+で実装予定)。

### 完了タスク
-  設計ドキュメント作成: hako_check_design.md
-  現状調査完了: phase121_hako_check_investigation.md
-  旧MIR/PHI経路特定: phase121_legacy_path_analysis.md
-  統合計画策定: phase121_integration_roadmap.md
-  Phase 120との関係整理完了

### 重要な発見
1. **hako_checkは.hakoスクリプト**
   - Rustバイナリではなく、.hakoスクリプトとして実装
   - tools/hako_check/cli.hako がエントリーポイント
   - VM の MirBuilder に JoinIR 統合すれば自動的に対応

2. **If文は旧経路、Loopは部分統合**
   - If文 (src/mir/builder/if_form.rs):  旧PHI生成器使用中
   - Loop (src/mir/builder/control_flow.rs): ⚠️ Mainline Targetsのみ統合

3. **環境変数未整備**
   - JoinIR経路選択の統一的な環境変数なし
   - Phase 122で `NYASH_HAKO_CHECK_JOINIR=1` 追加予定

### Phase 122-124 統合計画
**3段階移行戦略**:
- **Phase 122**: 環境変数で選択可能(デフォルト旧経路)
- **Phase 123**: JoinIR デフォルト化(旧経路は NYASH_LEGACY_PHI=1)
- **Phase 124**: 旧経路完全削除(JoinIR のみ)

**タイムライン**: 3日で hako_check JoinIR 統合完了見込み

### Phase 122 への指針
**最優先課題**:
1. If文の JoinIR 統合 (src/mir/builder/if_form.rs)
2. Loop の JoinIR 統合拡張 (Mainline Targets 制限解除)
3. 環境変数 NYASH_HAKO_CHECK_JOINIR=1 の追加

**実装ステップ** (Phase 122):
- Step 1: 環境変数読み込み (30分)
- Step 2: If文の JoinIR 統合 (2-3時間)
- Step 3: Loop の JoinIR 統合拡張 (1-2時間)
- Step 4: テスト追加 (1-2時間)
- Step 5: ドキュメント更新 (30分)

### ファイル構成
**新規作成**:
- docs/development/current/main/phase121_hako_check_joinir_design.md (指示書)
- docs/development/current/main/hako_check_design.md (設計)
- docs/development/current/main/phase121_hako_check_investigation.md (調査)
- docs/development/current/main/phase121_legacy_path_analysis.md (旧経路特定)
- docs/development/current/main/phase121_integration_roadmap.md (統合計画)

**修正**:
- CURRENT_TASK.md (Phase 121完了記録追加)

### 技術的成果
- Phase 120: selfhost経路のベースライン確立
- Phase 121: hako_check統合計画の設計 ← Complete
- Phase 122+: 段階的実装(予定)

設計First原則の実践により、実装前に明確な指針を確立しました。

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 04:42:32 +09:00
..

📚 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.mdPluginBoxV2のライフサイクル、singleton、nyash.tomlの要点

📚 guides/ - 利用者向けガイド

  • getting-started.md - はじめに(統一版)
  • tutorials/ - ステップバイステップのチュートリアル
  • examples/ - 実践的なサンプルコード
  • wasm-guide/ - WebAssemblyビルドガイド

🧩 how-to/ - 目的別ハウツー

  • 手順重視の短いガイド(前提→コマンド→検証)

🔧 development/ - 開発者向け

  • current/ - 現在進行中のタスクCURRENT_TASK.md等
  • roadmap/ - 開発計画
    • phases/ - Phase 812の詳細計画
    • phase-12/ - 🆕🔥 TypeBox統合ABI + Nyash ABI C実装セルフホスティング実現
    • native-plan/ - ネイティブビルド計画
  • proposals/ - RFC、新機能提案

🔌 Net PluginHTTP/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.mdUTF8/Byte 二本柱)
  • reference/architecture/TECHNICAL_ARCHITECTURE_2025.md
  • reference/architecture/execution-backends.md
  • reference/runtime/gc.md
  • reference/plugin-system/
  • tools/cli-options.mdCLI早見表

デザイン/ガイド

  • guides/language-core-and-sugar.mdコア最小糖衣
  • guides/loopform.mdループ正規化
  • guides/scopebox.md開発時の可視化
  • guides/dev-local-alias.md開発向け: 行頭 @name = expr → local 宣言糖衣)
  • guides/box-patterns.mdBoxパターン集Ownership/Lease/Cancel/Capability/Affinity/Observable
  • guides/box-design-checklist.mdBox 設計チェックリスト)
  • 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最小構文・ゼロランタイム・可視化の原則

開発状況


📋 再編成について / フォルダの見分け方

ドキュメントは2025年8月20日に再編成されました。詳細はREORGANIZATION_REPORT.mdを参照してください。

旧パスから新パスへの主な変更:

  • 説明書/guides/reference/ に分割
  • 予定/development/roadmap/
  • 散在していたファイル → 適切なカテゴリに整理

補足:

  • reference/ は正本(仕様)。
  • guides/ は読み物、how-to/ は手順書。
  • design/ は公開できる設計ノート。
  • private/ は下書き保管庫(将来 reference//design/ に昇格)。

Nyash は「Everything is Box」哲学に基づく言語です。詳細はコア概念とガイドを参照してください。