2.5 KiB
2.5 KiB
レビュアー想定Q&A
査読で聞かれそうな質問と、準備しておくべき回答集。
Q1: 15命令で本当に足りる?
質問の意図: 実用言語に必要な機能が本当に15命令で表現可能なのか疑問
回答:
高機能はプラグインへ押し出し、MIRは「What」だけを表現します。ExternCall 経由で任意の拡張が可能で、IR拡張は不要です。例えば:
- 文字列操作 → StringBoxプラグイン
- ネットワーク → NetworkBoxプラグイン
- GPU計算 → CudaBoxプラグイン(将来)
Q2: フォールバックは?
質問の意図: JIT未実装の命令に遭遇した時の挙動
回答: フォールバックは全廃しました。VM=仕様、JIT=高速版という明確な位置づけです。未実装は即エラー+該当VM関数への誘導で修正サイクルを短縮します。これにより:
- 複雑性の排除
- デバッグの容易化
- 性能予測可能性の向上
Q3: 最適化は弱くない?
質問の意図: 15命令では高度な最適化が困難では?
回答: O1/O2を表駆動で段階導入しています。等価性を崩さず、ホット箇所はプラグイン側の vtable 直結とAOT/LTOで補完します。現状:
- O1: 正規化/ピープホール/DCE
- O2: 基本的なインライン展開
- 将来: エスケープ解析/LICM
Q4: 既存比較(Wasm/LLVM/Smalltalk)との差は?
質問の意図: 先行研究との新規性
回答: Box でメタ情報を一元管理し、IRを増やさずVM/JIT/AOT等価を実証しました。実装規模と到達速度が新規性です:
- WebAssembly: 170命令 → Nyash: 15命令(91%削減)
- 開発期間: Go(3年) vs Nyash(30日)
- 等価性検証: trace_hashによる自動検証(世界初)
Q5: 再現可能性は?
質問の意図: 論文の主張を第三者が検証可能か
回答:
完全にオープンソースで、make smoke コマンド一発で検証可能です:
make smoke # {VM,JIT,AOT}×{GC on,off} の trace_hash 自動検証
GitHubで全履歴公開、CIで継続的検証も実施中。
Q6: 実用性は?
質問の意図: 研究だけでなく実際に使える言語か
回答: 既に以下のアプリケーションが動作:
- Chip-8エミュレータ
- テキストエディタ(Kilo)
- LISPインタープリター
- 統計計算ツール
配布可能なネイティブEXE生成も実現済み。