Files
hakorune/docs/archive/phases/phase-11/SKIP_PHASE_10_DECISION.md

3.4 KiB
Raw Blame History

🚀 Phase 10スキップ決定Cranelift → LLVM直接移行

Status: Decision Made
Date: 2025-08-31
Author: AI協調開発チーム

📊 決定的な発見

Cranelift JITの実態

期待: MIR → Cranelift → JIT実行高速化
実態: MIR → Cranelift → オブジェクトファイル → リンク → EXE

つまりJITではなくAOTコンパイラとして使用

重要な洞察

  • JIT幻想: "JIT"という名前だが、実行時コンパイルは一切していない
  • AOT専用: cranelift-objectでオブジェクトファイル生成のみ
  • リンカーは同じ: Cranelift/LLVM両方ともシステムリンカーld/lld使用

🎯 LLVM直接移行のメリット

1. パフォーマンス向上2-3倍

Cranelift: 高速コンパイル重視、最適化弱い
LLVM:      30年の最適化技術蓄積
           - ループ最適化
           - インライン展開
           - ベクトル化
           - デッドコード除去

2. ビルド時間削減50%

現在:
- Cranelift依存: 20個のcrate
- ビルドサイズ: 約40MB
- フルビルド: 2-3分

LLVM移行後:
- inkwell薄いラッパー: 1個
- ビルドサイズ: 数MB
- フルビルド: 1-1.5分

3. バイナリサイズ削減40%

現在:     10MBCranelift含む
移行後:   6MBLLVM薄いラッパーのみ

4. エコシステムの充実

  • デバッグ情報DWARF完全対応
  • プロファイラー連携perf, VTune等
  • 各種最適化ツール対応
  • LLVM統計・分析ツール

5. 実装の簡潔さ

// MIR命令が26→15個に削減可能
// 機械的変換で実装可能
match mir_inst {
    MIR::Const(val) => builder.const_int(val),
    MIR::BinOp(op, a, b) => match op {
        Add => builder.build_add(a, b),
        Sub => builder.build_sub(a, b),
        // ...
    },
    // 15命令なので管理容易
}

📈 移行計画

Phase 11.0: 準備1週間

  • inkwell依存追加
  • Cranelift依存削除
  • ビルドシステム調整

Phase 11.1: 基本実装2週間

  • MIR→LLVM IR変換器
  • 15命令の機械的変換
  • 基本的な最適化パス

Phase 11.2: 最適化1週間

  • Box型の最適表現
  • エスケープ解析
  • インライン展開

Phase 11.3: 統合1週間

  • AOTパイプライン完成
  • CI/CD更新
  • ベンチマーク検証

🎉 期待される成果

指標 現在Cranelift LLVM移行後 改善率
実行性能 1x 2-3x 200-300%
ビルド時間 3分 1.5分 50%削減
バイナリサイズ 10MB 6MB 40%削減
依存crate数 20個 1個 95%削減

🚀 結論

Phase 10Cranelift JITをスキップし、Phase 11LLVM AOTを即実装開始

理由:

  1. JITは既に使っていないAOT専用
  2. LLVMの方が全面的に優れている
  3. 実装コストも低い15命令の機械的変換
  4. 開発効率も大幅改善(ビルド時間半減)

📝 次のアクション

  1. マスターロードマップ更新
  2. Phase 11実装計画詳細化
  3. inkwell調査・プロトタイプ
  4. Cranelift依存削除計画

「JIT幻想から解放され、真の高速化への道が開けた🎊