Files
hakorune/docs/private/papers/paper-a-mir13-ir-design/OUTLINE.md

2.6 KiB
Raw Blame History

論文A アウトラインMIR14/最小IR設計

0. タイトル候補

  • From Interpreter to Native Apps: A Universal Execution with 14 Core Instructions
  • Nyash MIR14: A Minimal but Practical IR for Unified Backends

1. 問題設定 / 貢献

  • 問題: 実用言語で Interpreter/VM/JIT/AOT/GUI を一貫する最小IR設計は難しい。
  • 核となる貢献:
    • Core13 + UnaryOp による MIR14 命令セットの設計と根拠。
    • BoxCall を軸とした一貫した呼出しモデルと ABI 境界の単純化。
    • PyVM/llvmlite/JIT/Interpreter 間のパリティ維持手法(観測・スモーク・ハーネス)。
    • LLVM Harness での PHI 不変条件(ブロック先頭集約、型付き incomingの確立。
    • 実アプリGUI含むを動かす実用性の実証。

2. 背景と設計原理

  • Everything is Box / BoxCall 統一の哲学。
  • 命令縮約の歴史: 27 → 13 → 14UnaryOp の復活理由)。
  • MIR 命令の役割と境界const/binop/compare/branch/jump/ret/phi/call 系)。
  • プラグイン/Box ABITypeBox, BIDFFIの要点。

3. 実装概要

  • 実行系レイヤ: Interpreter, VM(PyVM), JIT(Cranelift), LLVM(AOT)。
  • Lowering/Builder と HarnessPHI 配線、短絡表現、観測トレース)。
  • 仕様差の扱い: llvmlite を規範とし、PyVM を意味論リファレンスとする方針。

4. 評価設計

  • パリティ検証: tools/parity.sh による PyVM ↔ llvmlite の一致率。
  • 性能比較: Interpreter/VM/JIT/AOT の速度・起動時間・メモリ。
  • 実アプリ評価: GUI 応答性(<16ms、代表スモークの通過。
  • 安定性: PHI 不変条件違反の検出率、短絡(&&/||)の副作用検証。

5. 関連研究

  • 汎用 IRLLVM/MLIRとミニマル IR の位置付け。
  • Truffle/Graal など多層実行系との比較。

6. 結果と考察

  • 14 命令の妥当性(拡張を要さない範囲、限界)。
  • BoxCall を中心に据えた設計の利点/欠点。
  • 将来: LoopFormMIR17への道筋。

7. まとめ

  • 最小 IR で多様なバックエンドを統一できる設計指針を提示。

付録候補

  • 命令セット一覧(参照: ../../../../reference/mir/INSTRUCTION_SET.md
  • Harness の PHI 仕様(不変条件と実装ノート)。

執筆メモ(短期タスク)

  • MIR13/14 呼称の整合を本文で明示(歴史 → 現在は14
  • 図表: 命令縮約の年表 / BoxCall 呼出し経路 / PHI 配線模式図。
  • スモーク: tools/llvm_smoke.sh, tools/pyvm_stage2_smoke.sh の代表結果を引用。