66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
|
|
# Phase 22: Nyash LLVM Compiler - コンパイラもBoxの世界へ
|
|||
|
|
|
|||
|
|
## 📋 概要
|
|||
|
|
|
|||
|
|
LLVMコンパイラ自体をNyashで実装する革命的アプローチ。
|
|||
|
|
C++で最小限のグルー層(20-30関数)を作り、コンパイラロジックの大部分をNyashで記述。
|
|||
|
|
**究極の目標:2,500行のRust実装を100-200行のNyashで置き換える。**
|
|||
|
|
|
|||
|
|
## 🎯 フェーズの目的
|
|||
|
|
|
|||
|
|
1. **開発サイクルの革命**: ビルド時間5-7分 → 即座の変更反映
|
|||
|
|
2. **究極のシンプルさ**: Everything is Boxでコンパイラも簡潔に
|
|||
|
|
3. **セルフホスティング深化**: NyashでNyashをコンパイルする真の実現
|
|||
|
|
4. **保守性の劇的向上**: 誰でも読める100行のコンパイラ
|
|||
|
|
|
|||
|
|
## 🤔 なぜこのアプローチか?
|
|||
|
|
|
|||
|
|
### 現在の課題(2025-09-11)
|
|||
|
|
- **Rust + LLVM (inkwell)**: 複雑で長いビルド時間
|
|||
|
|
- **2,500行のコード**: 理解と保守が困難
|
|||
|
|
- **依存地獄**: inkwellのバージョン管理
|
|||
|
|
|
|||
|
|
### ユーザーの洞察
|
|||
|
|
「MIR解釈して出力するだけなのに、メモリーリークの心配なんてあるんだろうか?」
|
|||
|
|
→ その通り!短命なバッチ処理にRustの複雑さは過剰。
|
|||
|
|
|
|||
|
|
## 📐 設計概要
|
|||
|
|
|
|||
|
|
```nyash
|
|||
|
|
// 究極のシンプルなLLVMコンパイラ
|
|||
|
|
box LLVMCompiler {
|
|||
|
|
context: LLVMContextBox
|
|||
|
|
module: LLVMModuleBox
|
|||
|
|
|
|||
|
|
compileMir(mirJson) {
|
|||
|
|
local mir = JsonBox.parse(mirJson)
|
|||
|
|
mir.functions.forEach(me.compileFunction)
|
|||
|
|
return me.module.emitObject()
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔗 関連ドキュメント
|
|||
|
|
- [Geminiとの議論](gemini-discussion.md) - 技術的実現可能性
|
|||
|
|
- [Codexとの議論](codex-discussion.md) - 詳細技術分析
|
|||
|
|
- [統合まとめ](synthesis.md) - 両AIの知見を統合
|
|||
|
|
- [実装ロードマップ](ROADMAP.md) - 段階的実装計画
|
|||
|
|
|
|||
|
|
## 📅 実施時期
|
|||
|
|
- **開始条件**: Phase 15 LLVMバックエンド完成後
|
|||
|
|
- **推定開始**: 2026年後半
|
|||
|
|
- **推定期間**: 3-4ヶ月(PoCは数週間)
|
|||
|
|
|
|||
|
|
## 💡 期待される成果
|
|||
|
|
|
|||
|
|
1. **ビルド時間**: 5-7分 → ゼロ(スクリプト実行のみ)
|
|||
|
|
2. **コード量**: 2,500行 → 100-200行(95%削減!)
|
|||
|
|
3. **理解容易性**: 週末どころか1時間で理解可能
|
|||
|
|
4. **開発効率**: 即座に変更・テスト可能
|
|||
|
|
|
|||
|
|
## 🌟 夢の実現
|
|||
|
|
|
|||
|
|
> 「コンパイラもBox、Everything is Box」
|
|||
|
|
> 「2,500行→100行、これこそ革命」
|
|||
|
|
|
|||
|
|
最小限のC++グルーとNyashの表現力で、世界一シンプルなLLVMコンパイラへ。
|