2020 Fiscal Year Research-status Report
モジュール間の安全な相互作用を可能にするメタプログラミング言語機構
Project/Area Number |
20K11757
|
Research Institution | Kanagawa University |
Principal Investigator |
馬谷 誠二 神奈川大学, 理学部, 准教授 (40378831)
|
Project Period (FY) |
2020-04-01 – 2023-03-31
|
Keywords | 静的解析 / 抽象解釈 / インタプリタ / コンパイラ |
Outline of Annual Research Achievements |
今年度は,コンパイルされた低水準コードの直接実行(「具象解釈」)と,抽象解釈を混ぜながら実行する抽象解釈器の実行モデルを提案し,そのプロトタイプ実装を行った. 言語仕様が厳密には規定されていないプログラミング言語で書かれたプログラムの性質を知りたい場合等には,一般に,言語処理系(リファレンス実装)が生成した低水準コードの命令列を静的解析するという手段を用いることができる.しかし,高水準言語からコンパイルされた低水準コードの命令列に対する解析では,生成されるコードやランタイムの複雑さのせいで有用な情報を十分に取得できないことが多い. そこで,純粋な抽象解釈だけでは正確に解析できない一部のコードのみを選択的に具象解釈することで,解析精度の低下を回避できることが研究成果の実行モデルの特徴である.どのような粒度・頻度で分割されたプログラムであっても,2つの解釈モジュールの実行時環境をシームレスに接続することにより,プログラムを正しく実行(解析)することが可能となっている. また,アプリケーションデータの相互変換においても,個々の解析に依存するデータ型の抽象ドメインの定義を系統的に用いる仕組みが組み込まれており,二つの解釈モジュール間で,メモリ上のエイリアス関係を保ちつつ任意のデータ構造を適切に相互変換可能である. プロトタイプ実装は,Java言語のコンパイルターゲットであるJava仮想機械の機械語のサブセットを規定し,その解析を行う.基本的な機能の実行モデルに限定することで実装の単純化を行っており,特に,リフレクション機能などのメタプログラミングに関わる部分については未実装である.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
本課題が最終的な目標とする静的プログラム解析手法のうち,基礎的な土台として用いる実行モデルについては提案が完了している. また,今後の研究・実験に用いるためのコンパクトなプロトタイプ実装も一通り完成している.
|
Strategy for Future Research Activity |
今年度の成果を基に,メタプログラミングに関する言語機能を解析するための手法について検討を開始する. 具体的には,Python言語のリフレクション機能,Racket言語の構文変換機能(マクロ)の二つに対し,解析対象コードの処理系内部表現レベルでの静的解析を実現するための手法について,同時並行的に検討を進める.
|
Causes of Carryover |
コロナ禍の状況にあり、学会発表や学会参加に必要となる旅費がかからなかったため。 また、研究に使用するノートPCの購入についても、当初想定していた性能を備えながら、なおかつ、安価な新製品が手に入ったため、使用額が少額で済んだ。 次年度は、旅費についてはコロナ禍の収束の予測が困難であるが、引き続き、必要に応じて柔軟に使用するよう準備したい。 備品については、当初予定より高性能なデスクトップPCの購入を検討する。
|