インタープリタの塔を崩壊させる [pdf]
本論文は、多層に積み重なったインタプリタ(インタプリタの塔)がもたらす実行時オーバーヘッドを削減する手法を提案する。複数の言語レベルを経由する解釈実行を1つの効率的な実行に融合することで、抽象化によるコストを大幅に低減できることを示す。
背景メモ
- 本論文は、プログラミング言語処理系に「インタプリタのタワー(多層的なインタプリタの積み重ね)」が生む性能問題を、部分評価(partial evaluation)の技法で解決する手法を提案した、POPL 2018(プログラミング言語理論のトップ国際会議)の採択論文。
- 著者のNada Amin氏(当時ケンブリッジ大学/現ハーバード大学)とTiark Rompf氏(パデュー大学)は、言語の実行時メタプログラミングやコンパイラ生成で知られる研究者。Amin氏は特に「型付きタグレス最終インタプリタ」などを手がける。
- 「インタプリタのタワー」とは、例えば「JavaScriptで書かれたPythonインタプリタが、さらにその上で動くSchemeインタプリタ」のような多段階の言語階層。このような構造は合成時に指数関数的なオーバーヘッドが生じ、現実に使うのは困難だった。
- 本研究の核心は、**多段階部分評価(multi-stage partial evaluation)**と**融合変換(fusion transformation)**により、タワー全体を一段の実行可能コードに「崩落(collapse)」させる理論と実装。これにより、複数言語が関わる高度なメタプログラミングを実用的な速度で実行できるようになる。
- この成果は、言語ワークベンチやドメイン固有言語(DSL)の積み重ね、ステージング(LMSなどの段階的コンパイル)に直接応用され、以降の"multi-stage programming"研究に大きな影響を与えた。