120 lines
3.4 KiB
Markdown
120 lines
3.4 KiB
Markdown
|
|
# JIT→EXE実装スケジュール
|
|||
|
|
|
|||
|
|
## 📅 全体スケジュール(6週間)
|
|||
|
|
|
|||
|
|
### Week 0: 準備期間(リファクタリング待ち)
|
|||
|
|
- ChatGPT5のリファクタリング完了待機
|
|||
|
|
- Cranelift/lld調査・準備
|
|||
|
|
- テスト環境構築
|
|||
|
|
|
|||
|
|
### Week 1-2: 基礎実装
|
|||
|
|
- [ ] C ABIファサード実装(`ny_mir_to_obj`)
|
|||
|
|
- [ ] Cranelift統合(基本的なMIR→CLIF変換)
|
|||
|
|
- [ ] 簡単なプログラムでの動作確認
|
|||
|
|
|
|||
|
|
### Week 3: リンカー統合
|
|||
|
|
- [ ] lld内蔵実装
|
|||
|
|
- [ ] プラットフォーム別リンカーラッパー
|
|||
|
|
- [ ] nyashrtランタイム作成
|
|||
|
|
|
|||
|
|
### Week 4: 最適化・改善
|
|||
|
|
- [ ] プロファイルベースJIT判定
|
|||
|
|
- [ ] オブジェクトファイルキャッシュ
|
|||
|
|
- [ ] エラーハンドリング改善
|
|||
|
|
|
|||
|
|
### Week 5: 評価・ベンチマーク
|
|||
|
|
- [ ] 性能測定スイート作成
|
|||
|
|
- [ ] 他言語との比較
|
|||
|
|
- [ ] ボトルネック分析
|
|||
|
|
|
|||
|
|
### Week 6: 論文執筆
|
|||
|
|
- [ ] データ整理・グラフ作成
|
|||
|
|
- [ ] 各セクション執筆
|
|||
|
|
- [ ] レビュー・推敲
|
|||
|
|
|
|||
|
|
## 🔧 技術的マイルストーン
|
|||
|
|
|
|||
|
|
### Phase 1: Minimum Viable Compiler
|
|||
|
|
```bash
|
|||
|
|
# 最小動作確認
|
|||
|
|
echo 'box Main { main() { print("Hello from EXE!") } }' > test.ny
|
|||
|
|
nyash build test.ny --backend=cranelift
|
|||
|
|
./test.exe # or ./test on Linux
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Phase 2: Real-World Programs
|
|||
|
|
- サイコロRPGのEXE化
|
|||
|
|
- 統計計算ツールのスタンドアロン化
|
|||
|
|
- ベンチマークプログラムの移植
|
|||
|
|
|
|||
|
|
### Phase 3: Self-Hosting Preparation
|
|||
|
|
- Nyashコンパイラ自身のAOTコンパイル
|
|||
|
|
- ブートストラップテスト
|
|||
|
|
- 配布パッケージ作成
|
|||
|
|
|
|||
|
|
## 📊 成功指標
|
|||
|
|
|
|||
|
|
### 技術的指標
|
|||
|
|
- [ ] Hello WorldがEXE化できる
|
|||
|
|
- [ ] 全スモークテストがAOTで通る
|
|||
|
|
- [ ] JIT性能の90%以上を達成
|
|||
|
|
- [ ] バイナリサイズ < 5MB
|
|||
|
|
|
|||
|
|
### 論文的指標
|
|||
|
|
- [ ] 13命令での完全性証明
|
|||
|
|
- [ ] 性能評価データ収集完了
|
|||
|
|
- [ ] 関連研究との差別化明確
|
|||
|
|
- [ ] 実装の再現可能性確保
|
|||
|
|
|
|||
|
|
## 🎯 リスクと対策
|
|||
|
|
|
|||
|
|
### リスク1: Cranelift API変更
|
|||
|
|
- **対策**: バージョン固定、抽象化層
|
|||
|
|
|
|||
|
|
### リスク2: プラットフォーム依存
|
|||
|
|
- **対策**: CI/CDでの継続的テスト
|
|||
|
|
|
|||
|
|
### リスク3: 性能目標未達
|
|||
|
|
- **対策**: プロファイリング、段階的最適化
|
|||
|
|
|
|||
|
|
## 💡 論文投稿戦略
|
|||
|
|
|
|||
|
|
### 投稿先優先順位
|
|||
|
|
1. **PLDI 2026** (締切: 2025年11月)
|
|||
|
|
- プログラミング言語の最高峰
|
|||
|
|
- JIT/AOT統合は完璧にマッチ
|
|||
|
|
|
|||
|
|
2. **CC 2026** (締切: 2025年10月)
|
|||
|
|
- コンパイラ専門会議
|
|||
|
|
- 技術的深さを評価
|
|||
|
|
|
|||
|
|
3. **ASPLOS 2026** (締切: 2025年8月)
|
|||
|
|
- システム寄りだが可能性あり
|
|||
|
|
- 性能面を強調
|
|||
|
|
|
|||
|
|
### 差別化ポイント
|
|||
|
|
- **極小IR(13命令)**: 前代未聞のシンプルさ
|
|||
|
|
- **完全自立**: 外部ツールチェーン不要
|
|||
|
|
- **実証済み**: 自己ホスティング成功
|
|||
|
|
- **実用性**: 実際のアプリケーションで検証
|
|||
|
|
|
|||
|
|
## 🚀 実装開始チェックリスト
|
|||
|
|
|
|||
|
|
### 環境準備
|
|||
|
|
- [ ] Cranelift最新版の調査
|
|||
|
|
- [ ] lldのビルド方法確認
|
|||
|
|
- [ ] Windows/Linux両環境準備
|
|||
|
|
|
|||
|
|
### コード準備
|
|||
|
|
- [ ] MIR→Cranelift変換の設計
|
|||
|
|
- [ ] C ABIヘッダー作成
|
|||
|
|
- [ ] テストケース整理
|
|||
|
|
|
|||
|
|
### ドキュメント準備
|
|||
|
|
- [ ] API仕様書
|
|||
|
|
- [ ] ビルド手順書
|
|||
|
|
- [ ] トラブルシューティング
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**次のステップ**: ChatGPT5のリファクタリング完了を待ちながら、Cranelift APIの学習とプロトタイプ作成を開始!
|