================================================================================
Phase 15: Nyashセルフホスティング計画 - 80k→20k行への革命的圧縮
================================================================================

【ビジョン】
NyashでNyashコンパイラを書き、Nyashプログラムをコンパイル・実行する
完全なセルフホスティング環境の実現 + 劇的なコード圧縮（75%削減）
MIR 13命令の美しさを最大限に活かした究極の実装

【数値目標】
現在: 80,000行（Rust実装）
第一目標: 20,000行（Nyash実装）
削減率: 75%
究極の夢: さらなる最適化で更に小さく！

【革命的要素】
MIR命令数: たった13個で全機能実現
バックエンド選択: Cranelift/直接x86/テンプレート方式
バイナリサイズ: 2-3KBの超小型も可能

================================================================================
1. なぜセルフホスティングか + コード圧縮の価値
================================================================================

■ 言語の成熟度の証明
├─ 自分自身をコンパイルできる = 実用的な言語
├─ ドッグフーディング = 実際に使って改善
├─ エコシステムの完成 = 外部依存からの解放
└─ 75%コード削減 = 保守性・理解容易性の劇的向上

■ Everything is Box哲学の究極形
├─ コンパイラもBox
├─ JITエンジンもBox
├─ リンカーもBox
└─ すべてがNyashで完結

■ コード削減の主要因
├─ Arc<Mutex>パターンの自動化（-30%）
├─ 型システムの簡略化（-20%）
├─ エラーハンドリングの統一（-15%）
└─ パターンマッチングの動的ディスパッチ化（-10%）

================================================================================
2. 技術的実現可能性
================================================================================

■ Cranelift埋め込みの利点
├─ 軽量: 3-5MB程度の追加（LLVMは50-100MB）
├─ Rustライブラリ: 静的リンクで配布容易
├─ JIT特化: メモリ上でのコンパイル・実行に最適
└─ 依存が少ない: ビルド時間短縮

■ 既存の準備状況
├─ ✅ MIR 13命令に削減完了（究極のシンプルさ）
├─ ✅ Cranelift統合準備済み（Cargo.toml）
├─ ✅ 直接x86エミッタ選択肢（dynasm-rs/iced-x86）
├─ ✅ プラグインシステム（拡張可能）
└─ ✅ Phase 12で統一実行パス確立

================================================================================
3. 段階的実装計画 - ChatGPT5戦略による最速ルート
================================================================================

■ Phase 15.0: バックエンド選択戦略（新規追加）
├─ 選択肢1: Cranelift（現在の主力、安定）
├─ 選択肢2: 直接x86エミッタ（dynasm-rs使用、高速）
├─ 選択肢3: テンプレート・スティッチャ（2-3KB超小型）
└─ 段階的移行: Cranelift→x86→テンプレート

■ Phase 15.1: YAML自動生成基盤（1-2週間）【最優先】
├─ boxes.yaml: Box型定義（type_id, method_id対応表）
├─ externs.yaml: 外部関数定義（C ABI境界）
├─ semantics.yaml: MIR13セマンティクス定義（13命令！）
└─ build.rs: 自動生成システム（重複コード即削除）

効果: Array/Instance/Console等で即座に1-2万行削減

■ Phase 15.1: 外部リンカー統合（1週間）
box LinkerBox {
    link(objects, output) {
        if Platform.isWindows() {
            return exec("lld-link", objects + ["nyrt.lib", "/out:" + output])
        } else {
            return exec("ld.lld", ["-o", output, objects, "nyrt.a"])
        }
    }
}

■ Phase 15.2: Nyashパーサー最小実装（2-3週間）
├─ 再帰下降パーサー（800行目標）
├─ MIR15 JSON出力（既存VMで即実行可能）
├─ エラー処理の簡略化（Result祭り解消）
└─ ny-echo/ny-calcで動作確認

■ Phase 15.3: MIR実行器のNyash化（2-3週間）
box MirExecutor {
    // 動的ディスパッチで15命令を処理
    execute(inst) { return me[inst.type](inst) }
    
    Const(inst) { me.values[inst.result] = inst.value }
    BinOp(inst) { /* 実装 */ }
    // ... 15命令分のメソッド
}

■ Phase 15.4: Boxes高レベル実装移植（1ヶ月）
├─ String/Array/Map等の表層メソッドをNyashへ
├─ NyRT側は最小プリミティブのみ維持
├─ プラグインBox統合
└─ 目標: 3,000行以下

■ Phase 15.5: インタープリターコア移植（1ヶ月）
├─ 評価ループのNyash化（3,000行目標）
├─ Arc<Mutex>自動管理の恩恵
├─ GCフックはNyRT委譲
└─ 自己コンパイル可能ラインへ

■ Phase 15.6: ブートストラップ（2週間）
├─ c0（Rust版）→ c1（Nyash版）コンパイル
├─ c1 → c1' 自己コンパイル
├─ パリティテスト（trace_hash一致）
└─ 完全セルフホスティング達成

================================================================================
4. EXEファイル生成・リンク戦略（ChatGPT5提案）
================================================================================

■ 段階的アプローチ（現実的順序）
├─ Phase 1: 外部リンカー利用（lld/gcc）【最速】
├─ Phase 2: lld内蔵（配布容易性）
└─ Phase 3: ミニリンカー自作（究極の自立）

■ C ABI境界設計（ny_プレフィクス統一）
├─ 呼出規約: Windows(fastcall) / Linux(sysv_amd64)
├─ 型マッピング: ny_handle=uint64_t, 数値=int64_t/double
├─ シンボル: ny_v1_console_log, ny_init, ny_fini
└─ 必須: 16Bスタックアライン、32B Shadow Space（Win64）

■ リンク形態の選択
├─ 静的リンク: nyrt.lib/.a同梱（配布楽・サイズ大）
├─ 動的リンク: nyrt.dll/.so依存（サイズ小・管理難）
└─ バンドル方式: スタブEXEにMIR埋め込み（初期案）

■ 最小リンカー実装（将来ロマン）
box MiniLinkerBox {
    // PE/ELFサブセット実装
    link(objects) {
        local exe = new ExecutableBuilder()
        exe.addSections(objects)
        exe.resolveSymbols()
        exe.applyRelocations()
        return exe.build()
    }
}

================================================================================
5. 実装上の課題と解決策
================================================================================

■ 課題1: パフォーマンス
├─ 問題: Nyashで書いたコンパイラは遅い？
└─ 解決: ホットパスをCraneliftでJIT最適化

■ 課題2: メモリ使用量
├─ 問題: Everything is Boxのオーバーヘッド
└─ 解決: コンパイラ特有の最適化Box設計

■ 課題3: デバッグの難しさ
├─ 問題: セルフホスティングのデバッグは複雑
└─ 解決: 段階的移行・既存コンパイラとの比較検証

■ 課題4: ABI互換性
├─ 問題: プラットフォーム毎の呼出規約差異
└─ 解決: 統一FFI層（type_id, method_id）で抽象化

================================================================================
6. 期待される成果
================================================================================

■ 技術的成果
├─ 完全なセルフホスティング言語
├─ 外部コンパイラ依存からの解放
├─ Nyashエコシステムの完成
├─ 言語の実用性の証明
└─ 【革命】71,000行→15,000行（75%削減）

■ 教育的価値
├─ コンパイラ実装の教材として
├─ Nyashで学ぶコンパイラ理論
├─ シンプルで理解しやすい実装
└─ 15,000行で読破可能なコンパイラ

■ コミュニティへの影響
├─ 開発者の参入障壁低下
├─ Nyashだけで開発環境構築
├─ 真の「Everything is Box」体験
└─ コントリビューション容易化

■ コード削減の具体例（80k→20k）
├─ Boxes実装: 13,000行 → 3,000行（77%削減）
├─ Interpreter: 15,000行 → 4,000行（73%削減）
├─ MIR: 12,000行 → 2,000行（83%削減、13命令化の効果）
├─ Parser: 5,000行 → 1,500行（70%削減）
├─ Backend: 15,000行 → 4,000行（73%削減）
└─ その他: 20,000行 → 5,500行（72%削減）

================================================================================
7. 成功指標
================================================================================

□ NyashコンパイラがNyash自身をコンパイル可能
□ コード行数: 20,000行以内（75%削減達成）
□ MIR 13命令での完全実装
□ 性能: Rustコンパイラの50%以上
□ バイナリサイズ: 
  - Cranelift版: 10MB以下
  - 直接x86版: 5MB以下
  - テンプレート版: 1MB以下（夢の2-3KBも視野）
□ コンパイル時間: 中規模プロジェクトで10秒以内
□ 100%のテストケース互換性
□ trace_hash/heap_hashパリティ（VM/JIT/AOT）

================================================================================
8. ロードマップ依存関係
================================================================================

必須完了フェーズ:
├─ Phase 10: Cranelift JIT統合
├─ Phase 11.8: MIR Core-13最適化
├─ Phase 12: プラグインシステム統一
├─ Phase 12.5: 最適化戦略確立
└─ Phase 14: 実アプリでの実証

推定開始時期: 2026年前半
推定完了時期: 2026年後半

================================================================================
9. 実装優先順位（ChatGPT5推奨）
================================================================================

■ 今すぐ着手（2日以内）
├─ boxes.yaml/externs.yaml/semantics.yaml スキーマ設計
├─ build.rs自動生成（Array/Instance/Console）
└─ 生成物でのパリティテスト

■ 今週中
├─ 外部リンカー呼び出し実装
├─ ny_プレフィクスABI仕様書作成
└─ echo/calcのリンク動作確認

■ 今月中
├─ Nyashパーサー骨格（MIR15 JSON出力）
├─ MirExecutorのNyash実装開始
└─ 1万行削減の実証

■ 3ヶ月以内
├─ c0→c1ブートストラップ
├─ 主要Box型のNyash移植
└─ 3万行削減達成

================================================================================
10. 夢の先にあるもの
================================================================================

セルフホスティング達成後の可能性:

■ Nyash専用最適化
├─ Box境界での特殊最適化
├─ Everything is Box前提の新しい最適化手法
└─ Nyashらしい高速化

■ 新しいバックエンド
├─ WebAssembly直接出力
├─ GPU計算対応
└─ 組み込みターゲット

■ 言語の進化
├─ Nyashで実験的機能を実装
├─ コミュニティ駆動の言語拡張
└─ 真のオープンソース言語

■ 究極の姿
├─ 15,000行で完全なコンパイラ
├─ 誰でも読めて改造できる
├─ 教育用言語の決定版
└─ Everything is Boxの証明

================================================================================

「コンパイラもBox、リンカーもBox、すべてがBox」
「71,000行→15,000行、これが革命」

これがNyashの究極の姿。