モジュール間の安全な相互作用を可能にするメタプログラミング言語機構
Project/Area Number |
20K11757
|
Research Category |
Grant-in-Aid for Scientific Research (C)
|
Allocation Type | Multi-year Fund |
Section | 一般 |
Review Section |
Basic Section 60050:Software-related
|
Research Institution | Kanagawa University |
Principal Investigator |
馬谷 誠二 神奈川大学, 理学部, 准教授 (40378831)
|
Project Period (FY) |
2020-04-01 – 2024-03-31
|
Project Status |
Granted (Fiscal Year 2022)
|
Budget Amount *help |
¥4,290,000 (Direct Cost: ¥3,300,000、Indirect Cost: ¥990,000)
Fiscal Year 2022: ¥1,170,000 (Direct Cost: ¥900,000、Indirect Cost: ¥270,000)
Fiscal Year 2021: ¥1,690,000 (Direct Cost: ¥1,300,000、Indirect Cost: ¥390,000)
Fiscal Year 2020: ¥1,430,000 (Direct Cost: ¥1,100,000、Indirect Cost: ¥330,000)
|
Keywords | 静的解析 / 抽象解釈 / メタプログラミング / 遷移系 / インタプリタ / コンパイラ / プログラミング言語 / プログラム解析 / アクセス制御 |
Outline of Research at the Start |
本研究では,自分自身の言語処理系の実装を含めたモジュール間の相互作用の安全性を保証する言語機構の開発という課題に取り組む.とりわけ,動的プログラミング言語は静的な型検査の恩恵を受けられないことに加え,リフレクション機構や実行時コード生成など一種のメタプログラミング機能を備えていることが多い.メタプログラミング機能を利用するアプリケーションの安全性を保証するには,処理系内部をアプリケーションと同等に検査する手法の構築は不可欠であり,本研究の重要課題の一つである.
|
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 |
解析器の実行効率向上,高精度な解析を実現するための抽象ドメインの定義,展開フェーズ毎に独立した抽象ドメインの利用,モジュール解析等の研究を引き続き続ける予定である.
|
Report
(3 results)
Research Products
(6 results)