112 lines
3.2 KiB
Markdown
112 lines
3.2 KiB
Markdown
|
|
# Paper D: From JIT to Native - A Unified Compilation Pipeline for Box-based Languages
|
|||
|
|
|
|||
|
|
## 📋 概要
|
|||
|
|
|
|||
|
|
NyashのJIT実行からネイティブEXE生成までの統一コンパイルパイプラインに関する論文。
|
|||
|
|
MIR13という極小IRからCranelift経由でネイティブバイナリを生成する革新的アプローチ。
|
|||
|
|
|
|||
|
|
## 🎯 論文の新規性
|
|||
|
|
|
|||
|
|
### 1. **極小IR(MIR13)による統一実行**
|
|||
|
|
- たった13命令で全機能実現
|
|||
|
|
- JIT/インタープリター/AOT/WASMすべてに対応
|
|||
|
|
- Box哲学による統一的メモリモデル
|
|||
|
|
|
|||
|
|
### 2. **Cranelift + lld内蔵戦略**
|
|||
|
|
- 外部コンパイラ依存の完全排除
|
|||
|
|
- JITコンパイル結果をそのままEXE化
|
|||
|
|
- プラットフォーム非依存の美しい設計
|
|||
|
|
|
|||
|
|
### 3. **C ABIファサード**
|
|||
|
|
```c
|
|||
|
|
// 最小限の美しいインターフェース
|
|||
|
|
ny_mir_to_obj(mir_bin, target_triple) -> obj_bytes
|
|||
|
|
ny_mir_jit_entry(mir_bin) -> exit_code
|
|||
|
|
ny_free_buf(buffer)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. **パフォーマンス最適化**
|
|||
|
|
- ホットパス検出→選択的JIT
|
|||
|
|
- JIT結果のキャッシュ→AOT変換
|
|||
|
|
- TypedArray bounds-check併合
|
|||
|
|
|
|||
|
|
## 📊 評価計画
|
|||
|
|
|
|||
|
|
### ベンチマーク対象
|
|||
|
|
1. **コンパイル時間**: MIR→EXE
|
|||
|
|
2. **実行性能**: JIT vs AOT
|
|||
|
|
3. **バイナリサイズ**: 最小実行ファイル
|
|||
|
|
4. **起動時間**: JIT warmup vs AOT instant
|
|||
|
|
|
|||
|
|
### 比較対象
|
|||
|
|
- Go(単一バイナリ生成)
|
|||
|
|
- Rust(ネイティブコンパイル)
|
|||
|
|
- Node.js(JIT実行)
|
|||
|
|
- GraalVM(JIT→AOT)
|
|||
|
|
|
|||
|
|
## 🔬 技術的詳細
|
|||
|
|
|
|||
|
|
### パイプライン構成
|
|||
|
|
```
|
|||
|
|
AST → MIR13 → Cranelift IR → Machine Code → Object File → EXE
|
|||
|
|
↓ ↓ ↓
|
|||
|
|
Interpreter JIT Direct Execute
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 実装のポイント
|
|||
|
|
1. **MIR最適化パス**
|
|||
|
|
- デッドコード除去
|
|||
|
|
- 定数畳み込み
|
|||
|
|
- インライン展開
|
|||
|
|
|
|||
|
|
2. **Cranelift統合**
|
|||
|
|
- Module構築
|
|||
|
|
- Function定義
|
|||
|
|
- コード生成
|
|||
|
|
|
|||
|
|
3. **リンカー統合**
|
|||
|
|
- lld-link(Windows)
|
|||
|
|
- ld.lld(Linux)
|
|||
|
|
- nyashrtランタイム
|
|||
|
|
|
|||
|
|
## 📅 執筆スケジュール
|
|||
|
|
|
|||
|
|
### Phase 1: 実装(2-3週間)
|
|||
|
|
- [ ] JIT→Object生成実装
|
|||
|
|
- [ ] lld統合
|
|||
|
|
- [ ] 基本的なEXE生成
|
|||
|
|
|
|||
|
|
### Phase 2: 評価(1-2週間)
|
|||
|
|
- [ ] ベンチマーク実装
|
|||
|
|
- [ ] 性能測定
|
|||
|
|
- [ ] 結果分析
|
|||
|
|
|
|||
|
|
### Phase 3: 執筆(2週間)
|
|||
|
|
- [ ] Abstract作成
|
|||
|
|
- [ ] 各章執筆
|
|||
|
|
- [ ] 図表作成
|
|||
|
|
|
|||
|
|
## 🎯 投稿先候補
|
|||
|
|
|
|||
|
|
### トップ会議
|
|||
|
|
- **PLDI 2026**: プログラミング言語設計の最高峰
|
|||
|
|
- **CC 2026**: コンパイラ構築専門
|
|||
|
|
- **CGO 2026**: コード生成最適化
|
|||
|
|
|
|||
|
|
### ジャーナル
|
|||
|
|
- **TOPLAS**: ACM最高峰ジャーナル
|
|||
|
|
- **Software: Practice and Experience**: 実装重視
|
|||
|
|
|
|||
|
|
## 💡 期待されるインパクト
|
|||
|
|
|
|||
|
|
1. **学術的**: 極小IRによる統一実行モデルの提案
|
|||
|
|
2. **実用的**: 外部依存ゼロのコンパイラ実現
|
|||
|
|
3. **教育的**: シンプルで理解しやすい実装
|
|||
|
|
4. **産業的**: 組み込みシステムへの応用可能性
|
|||
|
|
|
|||
|
|
## 🔗 関連資料
|
|||
|
|
|
|||
|
|
- [Phase 10: JIT実装](../../development/roadmap/phases/phase-10/)
|
|||
|
|
- [Phase 15: 自己ホスティング](../../development/roadmap/phases/phase-15/)
|
|||
|
|
- [MIR13仕様書](../../reference/mir/INSTRUCTION_SET.md)
|
|||
|
|
- [Cranelift統合設計](../../development/roadmap/phases/phase-15/self-hosting-lld-strategy.md)
|