適応的メタJITコンパイラフレームワーク
メタJust-In-Timeコンパイラは、プログラミング言語のインタプリタ定義からコンパイラを生成する枠組みです。特定の言語処理系を生成するだけでなく、最近ではRPythonやGraal/Truffleのように、色々な言語の処理系を生成することや、複数言語間の相互乗り入れを可能にすることや、言語機能を拡張することなどに成功しており、今後の発展に期待が持たれています。
我々はメタJITコンパイラを適応的にする研究を行っています。適応的とは、実行するプログラムの静的・動的な情報をもとにしてJITコンパイルの対象を適切に選択したり、適切な水準の最適化を施したりすることを指します。例えばRPythonが生成するJITコンパイラはプログラムの実行履歴を追跡してコンパイルする手法 (実行履歴コンパイル) しか行いませんが、これを拡張してメソッドを対象としたコンパイル (メソッドコンパイル) も行えるようにしたPyPy (RPythonが生成するPython処理系) を作ることは、我々の1つの目標です。
研究の最初の段階として、我々はBacCamlと呼ぶ実験的なメタ実行履歴コンパイラフレームワークを作りました。この枠組はRPython流の実行履歴コンパイルをMinCamlコンパイラを基にして実現しています。その上で我々は、BacCamlにメソッドコンパイルを可能する技術を提案し、プログラムの性質によって得られる実行性能がどうなるかについて調べました。
次の段階として、RPythonに「基本コンパイル」を行わせる技術を研究しています。基本コンパイルは、単純かつ高速なコード生成を行うことでプログラム実行の早期に適用するために (メタJITコンパイラ以外では) 広く用いられている技術です。我々はRPythonの実行履歴型コンパイラを (1) 対象プログラム中の特定のメソッド内だけを (2) 高価な最適化を行わないようにコンパイルするような制御手法を提案しました。さらにそのような制御をインタプリタ定義の一部分の交換だけで可能にすることを行っています。
さらなる情報
- BacCaml ソースコード @ github
お知らせ
- 適応的RPythonのMoreVMs’23ワークショップでの発表
- 博士論文公聴会: 伊澤侑祐
- ICOOOLPSにおいて適応的RPythonに関する講演
- 第9回SIGPXにて3名が発表を行いました。
- Adaptive RPythonに関する発表 (@東北大学電気通信研究所共同プロジェクト研究発表会)
- 適応的メタJITコンパイラに関する論文 (@ PEPM’22)
- 適応的メタJITコンパイラに関するJOT論文
- 情報処理学会プログラミング研究会にてライブプログラミング環境の実現方式に関する発表とネイティブイメージコンパイラの性能評価に関する発表
- メタ混合JITコンパイラに関する発表 (@ ICOOOLPS ’21)
- PPL’21にて論文・ポスター発表
- DLS’20にてメタ複合JITコンパイラに関する論文発表
- 伊澤がACT-X研究者に採用されました
- PPL2020でのポスターとデモ発表
- 伊澤、田辺、叔が修士論文を発表しました
- JSSST 2019 における発表と受賞
- 伊澤侑祐 と Jeanine Adkisson が <Programming> 2019 での ACM Student Research Competition で第二位と第三位を受賞しました
- <Programming>での論文・ポスター・デモ発表
- 第20回プログラミングおよびプログラミング言語ワークショップ(PPL2018)で伊澤, 田辺, 奥河がポスターの発表
- 奥河が修士論文を、田辺, 伊澤が学士論文を発表
関連する技術
- PyPy, (R)Python上のメタコンパイラフレームワーク。実行履歴単位のコンパイルを行う。
- Truffle/Graal, Java上のメタコンパイラフレームワーク。メソッド単位のコンパイルを行う。
- The HipHop Virtual Machine, PHP言語のためのJITコンパイラ付仮想機械。実行履歴単位・メソッド単位両方のコンパイルが行える。