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

55 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 論文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 の代表結果を引用