Files
hakorune/docs/development/roadmap/phases/phase-15/self-hosting-plan.txt

162 lines
6.0 KiB
Plaintext
Raw Normal View History

================================================================================
Phase 15: Nyashセルフホスティング計画 - 内蔵Craneliftによる夢の実現
================================================================================
【ビジョン】
NyashでNyashコンパイラを書き、Nyashプログラムをコンパイル・実行する
完全なセルフホスティング環境の実現
================================================================================
1. なぜセルフホスティングか
================================================================================
■ 言語の成熟度の証明
├─ 自分自身をコンパイルできる = 実用的な言語
├─ ドッグフーディング = 実際に使って改善
└─ エコシステムの完成 = 外部依存からの解放
■ Everything is Box哲学の究極形
├─ コンパイラもBox
├─ JITエンジンもBox
└─ すべてがNyashで完結
================================================================================
2. 技術的実現可能性
================================================================================
■ Cranelift埋め込みの利点
├─ 軽量: 3-5MB程度の追加LLVMは50-100MB
├─ Rustライブラリ: 静的リンクで配布容易
├─ JIT特化: メモリ上でのコンパイル・実行に最適
└─ 依存が少ない: ビルド時間短縮
■ 既存の準備状況
├─ ✅ Cranelift統合準備済みCargo.toml
├─ ✅ MIR15確定シンプルなIR
├─ ✅ プラグインシステム(拡張可能)
└─ 🔄 Phase 10でJIT実装予定
================================================================================
3. 段階的実装計画
================================================================================
■ Phase 15.1: CompilerBox設計1-2週間
box CompilerBox {
init { cranelift, mir_builder, optimizer }
compile(source) {
local ast = me.parse(source)
local mir = me.mir_builder.lower(ast)
local optimized = me.optimizer.optimize(mir)
return me.cranelift.compile(optimized)
}
parse(source) { /* Nyashで書かれたパーサー */ }
}
■ Phase 15.2: Nyashパーサー実装2-3ヶ月
├─ 現在のRustパーサーをNyashで再実装
├─ トークナイザー → パーサー → AST生成
└─ エラー処理・位置情報の保持
■ Phase 15.3: MIR Lowerer実装1-2ヶ月
├─ AST → MIR15変換をNyashで
├─ 型チェック・名前解決
└─ 最適化パスの実装
■ Phase 15.4: Cranelift統合1ヶ月
├─ CraneliftBox: Cranelift JITのラッパー
├─ MIR → Cranelift IR変換
└─ メモリ上でのコード実行
■ Phase 15.5: ブートストラップ2週間
├─ NyashコンパイラでNyashコンパイラをコンパイル
├─ 完全なセルフホスティング達成
└─ 性能・正確性の検証
================================================================================
4. 実装上の課題と解決策
================================================================================
■ 課題1: パフォーマンス
├─ 問題: Nyashで書いたコンパイラは遅い
└─ 解決: ホットパスをCraneliftでJIT最適化
■ 課題2: メモリ使用量
├─ 問題: Everything is Boxのオーバーヘッド
└─ 解決: コンパイラ特有の最適化Box設計
■ 課題3: デバッグの難しさ
├─ 問題: セルフホスティングのデバッグは複雑
└─ 解決: 段階的移行・既存コンパイラとの比較検証
================================================================================
5. 期待される成果
================================================================================
■ 技術的成果
├─ 完全なセルフホスティング言語
├─ 外部コンパイラ依存からの解放
├─ Nyashエコシステムの完成
└─ 言語の実用性の証明
■ 教育的価値
├─ コンパイラ実装の教材として
├─ Nyashで学ぶコンパイラ理論
└─ シンプルで理解しやすい実装
■ コミュニティへの影響
├─ 開発者の参入障壁低下
├─ Nyashだけで開発環境構築
└─ 真の「Everything is Box」体験
================================================================================
6. 成功指標
================================================================================
□ NyashコンパイラがNyash自身をコンパイル可能
□ 性能: Rustコンパイラの50%以上
□ バイナリサイズ: 10MB以下Cranelift込み
□ コンパイル時間: 中規模プロジェクトで10秒以内
□ 100%のテストケース互換性
================================================================================
7. ロードマップ依存関係
================================================================================
必須完了フェーズ:
├─ Phase 10: Cranelift JIT統合
├─ Phase 11.8: MIR Core-13最適化
├─ Phase 12: プラグインシステム統一
├─ Phase 12.5: 最適化戦略確立
└─ Phase 14: 実アプリでの実証
推定開始時期: 2026年前半
推定完了時期: 2026年後半
================================================================================
8. 夢の先にあるもの
================================================================================
セルフホスティング達成後の可能性:
■ Nyash専用最適化
├─ Box境界での特殊最適化
├─ Everything is Box前提の新しい最適化手法
└─ Nyashらしい高速化
■ 新しいバックエンド
├─ WebAssembly直接出力
├─ GPU計算対応
└─ 組み込みターゲット
■ 言語の進化
├─ Nyashで実験的機能を実装
├─ コミュニティ駆動の言語拡張
└─ 真のオープンソース言語
================================================================================
「コンパイラもBox、すべてがBox」
これがNyashの究極の姿。