Files
hakorune/docs/development/roadmap/phases/phase-15/implementation/abi-migration-timing.md
Selfhosting Dev 53a869136f 📚 ABI統合ドキュメント整理 & LLVM BuilderCursor改善
## ABI関連
- docs/reference/abi/ABI_INDEX.md 作成(統合インデックス)
- 分散していたABI/TypeBoxドキュメントへのリンク集約
- CLAUDE.mdに「ABI統合インデックス」リンク追加
- ABI移行タイミング詳細検討(LLVM完成後のPhase 15.5推奨)

## LLVM改善(ChatGPT5協力)
- BuilderCursor導入でposition管理を構造化
- emit_return/jump/branchをcursor経由に統一
- PHI/terminator問題への対策改善
- より明確なbasic block位置管理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 14:12:54 +09:00

3.3 KiB
Raw Blame History

ABI移行タイミング詳細検討

🎯 現状分析

現在のTypeBox実装

  • TLVベース統一 - invoke_idですべてのメソッド呼び出し処理
  • 7つのプラグイン - String/Integer/Array/Map/Console/File/Egui
  • 問題なく動作 - 機能的には十分、パフォーマンスも実用レベル

LLVM層の進捗

  • ChatGPT5がLLVM実装改善中
  • PHI/ターミネーター問題を解決中
  • BuilderCursor導入で構造化
  • EXE生成までもう少し

🔄 移行オプション検討

Option 1: 今すぐ移行開始

メリット

  • プラグイン数が少ない7個今がチャンス
  • 早期のパフォーマンス改善
  • 技術的負債を早めに解消
  • Phase 16に向けた準備

デメリット

  • LLVM作業と並行→リソース分散
  • 優先度の問題LLVM > ABI
  • 現行で問題ないのに変更リスク

Option 2: LLVM完成後に移行推奨

メリット

  • 集中できる - まずLLVM完成に全力
  • 最適化考慮 - LLVM/JITの特性を踏まえた設計
  • 一度の変更 - まとめて最適な形に
  • 実証データ - LLVM性能を見てから判断

デメリット

  • 移行が遅れる(でも急ぐ必要ない)
  • TLVオーバーヘッド継続でも実用上問題なし

Option 3: 段階的準備

今できること

  1. struct_size活用コードの準備
  2. ドキュメント整理(完了
  3. 拡張計画の詳細化
  4. テストコード準備

LLVM後にやること

  1. create/destroy追加
  2. プラグイン順次対応
  3. パフォーマンス測定
  4. 最適化

📊 判断基準

なぜLLVM完成後が最適か

  1. 優先度の明確化

    • 現在の最重要課題:セルフホスティング
    • LLVM完成 → EXE生成 → セルフホスト実現
    • ABIは「改善」であって「必須」ではない
  2. 設計の最適化

    • LLVMの最適化特性を理解してから
    • インライン化可能性の考慮
    • JIT/AOTでの扱いの違い
  3. リスク管理

    • 動いているものを変えるリスク
    • LLVM作業への影響を避ける
    • 一度に大きく変える方が安全
  4. 実装効率

    • ChatGPT5がLLVM集中できる
    • 混乱を避ける
    • 明確なマイルストーン

🚀 推奨ロードマップ

Phase 15現在

  1. LLVM完成に集中
  2. EXE生成実現
  3. セルフホスト基盤確立
  4. ABI拡張の詳細設計並行

Phase 15.5LLVM完成直後

  1. ABI拡張実装
    • create/destroy追加
    • struct_size活用
    • 互換性維持
  2. プラグイン移行
    • 性能重要なものから
    • 段階的に対応
  3. パフォーマンス検証

Phase 16次フェーズ

  1. ABI安定化宣言
  2. 外部開発者向けドキュメント
  3. 他言語バインディング

🎯 結論

LLVM完成後の移行が最適

理由:

  1. 現在のTLVベースで機能的問題なし
  2. LLVM完成が最優先セルフホストへの道
  3. 最適化知見を活かした設計可能
  4. リスク最小化・効率最大化

ただし準備は今から

  • ドキュメント整理(完了
  • 設計詳細化
  • テスト準備
  • 移行計画策定

これにより、LLVM完成後にスムーズに移行開始できる。