162 lines
6.0 KiB
Plaintext
162 lines
6.0 KiB
Plaintext
|
|
================================================================================
|
|||
|
|
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の究極の姿。
|