2022 Fiscal Year Research-status Report
モジュール間の安全な相互作用を可能にするメタプログラミング言語機構
Project/Area Number |
20K11757
|
Research Institution | Kanagawa University |
Principal Investigator |
馬谷 誠二 神奈川大学, 理学部, 准教授 (40378831)
|
Project Period (FY) |
2020-04-01 – 2024-03-31
|
Keywords | 静的解析 / 抽象解釈 / メタプログラミング / 遷移系 |
Outline of Annual Research Achievements |
今年度は,優れたメタプログラミング(マクロ)機能を備えたプログラミング言語の一つであるRacket言語を対象に,メタプログラムをより正確に静的解析するための抽象解釈器の実装を行った.また,実装においては,様々な設計変更にも柔軟に対応できるよう,その内部に低水準な遷移系記述システムを構築した. 健全な手続き的マクロを備えたプログラミング言語のセマンティクスは通常の言語と比べて複雑であり,高度なマクロをその上で正しく記述することは必ずしも容易ではない.そのため,マクロの動作を正確に把握するための静的解析 ツールは,プログラマにとって有益な道具の一つと言える.本論文では,健全な手続き的マクロを備えたモダンなLisp系言語であるRacketの抽象解釈フレームワークを提案する.提案フレームワークは,言語機能やデータドメインをモジュラーに定義可能なDSLを内部に含んでおり,解析したい性質や解析精度を用途に応じて柔軟に切り替えることが可能である.また,内部DSLは高度な表現力を備えながら実行時間を犠牲にしておらず,その上で実現した抽象解釈器 を実用的ツールの内部モジュールとしてそのまま利用できる. 遷移系は,プログラミング言語処理系等,様々なシステムソフトウェアの核として存在する.小さなシステムのformalな定義は理解しやすく検証も容易であるが,実システム中に存在する遷移系は規模が大きいこともあり,その拡張性・効率性も重要と言える.本論文では,実システムへの組み込み用途に耐えうるだけの効率性と拡張性を備えた遷移系を簡潔に記述可能なDSLを提案する.プログラミング言語の意味論を実例に挙げ拡張性の高さを例証し,また,先行研 究のツールとの比較を行い,我々のDSLが大幅な速度向上を達成できていることも確認した.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
Racket言語の構文変換機能(マクロ)を含む動作をdefinitional interpreterとして表現し,それに基づく抽象解釈フレームワークが今年度完成している. また,言語処理系内部遷移を扱うためのより低水準フレームワーク(ドメイン特化言語)を構築し,今後の設計変更にも柔軟に対応可能なシステムとなっている.
|
Strategy for Future Research Activity |
解析器の実行効率向上,高精度な解析を実現するための抽象ドメインの定義,展開フェーズ毎に独立した抽象ドメインの利用,モジュール解析等の研究を引き続き続ける予定である.
|
Causes of Carryover |
コロナ禍の状況にあり、学会発表や学会参加に必要となる旅費がかからなかったため。 また、研究に使用するサーバの購入についても、当初想定していた性能を備えながら、なおかつ、安価な新製品が手に入ったため、使用額が少額で済んだ。 次年度は、旅費についてはコロナ禍の収束の予測が困難であるが、引き続き、必要に応じて柔軟に使用するよう準備したい。 備品については、ノートPCの購入を検討する。
|