研究課題/領域番号 |
20K11757
|
研究種目 |
基盤研究(C)
|
配分区分 | 基金 |
応募区分 | 一般 |
審査区分 |
小区分60050:ソフトウェア関連
|
研究機関 | 神奈川大学 |
研究代表者 |
馬谷 誠二 神奈川大学, 情報学部, 准教授 (40378831)
|
研究期間 (年度) |
2020-04-01 – 2025-03-31
|
研究課題ステータス |
交付 (2023年度)
|
配分額 *注記 |
4,290千円 (直接経費: 3,300千円、間接経費: 990千円)
2022年度: 1,170千円 (直接経費: 900千円、間接経費: 270千円)
2021年度: 1,690千円 (直接経費: 1,300千円、間接経費: 390千円)
2020年度: 1,430千円 (直接経費: 1,100千円、間接経費: 330千円)
|
キーワード | 静的解析 / 抽象解釈 / メタプログラミング / 遷移系 / インタプリタ / コンパイラ / プログラミング言語 / プログラム解析 / アクセス制御 |
研究開始時の研究の概要 |
本研究では,自分自身の言語処理系の実装を含めたモジュール間の相互作用の安全性を保証する言語機構の開発という課題に取り組む.とりわけ,動的プログラミング言語は静的な型検査の恩恵を受けられないことに加え,リフレクション機構や実行時コード生成など一種のメタプログラミング機能を備えていることが多い.メタプログラミング機能を利用するアプリケーションの安全性を保証するには,処理系内部をアプリケーションと同等に検査する手法の構築は不可欠であり,本研究の重要課題の一つである.
|
研究実績の概要 |
前年度までの成果に基づき,マクロ機能を利用するコードに対する解析精度の向上を図るため,抽象構文オブジェクトの抽象領域に関する設計・考察を進めた.これまで構文オブジェクトの抽象領域は,Racket上で実装済みのコード上で実行可能であることを優先し,Racketの構造体型等の組み合わせによって表現されていた.今年度は,それらの表現の改良を検討するのにより相応しい表現として,高度な静的型を持つHaskell上の代数データ型による表現を新たに用いることにした.数学的定義により近づけることで,改良するべき本質部分とそれ以外の部分の整理ができ,解析目的に応じて,たとえば抽象領域のよりコンパクトな表現を検討する際,データ型中の各要素の取捨選択の判断が以前よりしやすくなっていると期待できる. また,前年度までに実装済みの,抽象解釈器におけるプログラムの内部動作を遷移系によって詳細に記述する低水準ツールの有効性や実用性を検証した.具体的には,ラムダ計算をベースにした関数型言語,Racketのマクロ展開フェーズを含んだ実行モデルの操作的意味論を用い,それらの遷移系をツール上に実装した.実装においては,ツールの特徴である拡張性(モジュラー性や再利用性など)を最大限に活用し,細分化されたコンポーネントの合成を繰り返すことによって全体の遷移系が構築されているよう配慮している.そうすることで,拡張性を実際に多く利用することで実行性能に対する過剰なオーバヘッドとなっていないかを実証できる.実際,同様の記述を既存の類似ツール上でも実行したところ,そちらと比較し我々のツールが実行効率の面で大幅に優位であることの確認ができた.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
これまでの研究で実装済みの言語処理系の内部遷移を扱うための低水準フレームワーク(ドメイン特化言語)を用いて,実際にいくつかの言語の遷移を記述・評価し,その有効性を検証できている.
|
今後の研究の推進方策 |
前年度に引き続き,マクロに強く依存するプログラムコードに対する解析精度の向上を目指す.具体的には,抽象構文オブジェクトの表現方法のさらなる改善とその定式化,および,展開フェーズ単位の抽象ドメインの独立化についての検討を引き続き実施する. また,作成した各種ツールの有効性の検証についても,さらに様々なプログラミング言語も対象に含めることで,引き続き継続する.
|