研究課題/領域番号 |
23500038
|
研究機関 | 電気通信大学 |
研究代表者 |
岩崎 英哉 電気通信大学, 情報理工学(系)研究科, 教授 (90203372)
|
研究分担者 |
鵜川 始陽 電気通信大学, 情報理工学(系)研究科, 助教 (50423017)
中野 圭介 電気通信大学, 先端領域教育研究センター, 准教授 (30505839)
|
キーワード | プログラミング言語処理系 / 仮想機械 / 実行時最適化 / 外部関数インタフェース / 型システム |
研究概要 |
本研究は,サーバ側で実用的な性能で動作する JavaScript 処理系を研究開発することにより,煩雑とされている Web アプリケーション開発のコストを大きく低減させ,広く一般の利用に供することを目的とする.3年計画の研究の2年目にあたる平成24年度は,JavaScript のサブセット (Tiny JavaScript) の仮想機械の性能向上およびライブラリの充実,JavaScript プログラムに対する静的解析のひとつである型推論に焦点を当てて研究を行い,以下の成果を得た. 1. 前年度に仕様を定めたJavascript向けのレジスタベースの仮想機械インタプリタの性能向上を目指し,実行時情報を利用した最適化の一つである Quickening と呼ばれる手法を仮想機械に実装した.Quickening を適用したのは,オペランドの型によって処理が分岐する命令とグローバル変数へのアクセスを行う命令の両者である.さらに,実験を通してその効果を確認した. 2. 上記仮想機械に対する C 言語等の外部関数インタフェースを定めて実装した.これにより,外部ライブラリの動的ロード,データ操作のインタフェースを提供することができ,JavaScriptから各種ライブラリが利用できるようになった. 3. JavaScript プログラムに対して,静的型検査を行う部分を明示的に指定し,型検査で型が定まらなかった部分については,実行時に型検査を行うような漸進的な型システムを考案した.具体的には,JavaScript を副作用のない言語に変換し,その変換先の言語に対する漸進的な型システムを定義し,静的に型付けられた部分に関しては,実行時型エラーが起こらないことを証明した.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本研究は,大きく分けて,仮想機械命令へのコンパイラの設計と開発と担当するグループ (グループA),実行時システムを含む仮想機械の設計と開発を担当するグループ (グループB),静的解析機構の設計と開発を担当するグループ (グループC) の,3グループによる研究体制を敷いている.現在までの各グループの達成度は次の通りである. グループ A : JavaScript のサブセットである Tiny JavaScript に対する C 言語による Ahead-of-time (AOT) コンパイラの実装が完了している.今後,AOT コンパイラ本体の JavaScript フルセット化に加え,プログラム実行時に仮想機械命令列をネイティブコードに変換する Just-in-time (JIT) コンパイラの実装を急ぐ必要がある. グループ B : 仮想機械のインタプリタ本体,Quickening のような実行時最適化機構,外部関数インタフェースの実装を完了した.基本的な部分の高速化に加え,実行時最適化を加え,順調な達成度と判断できる.実際,既存の JavaScript 処理系である SpiderMonkey と比較すると,一部のベンチマークを除き,実行時間が SpiferMonkey と同程度かそれよりも高速である. グループ C : JavaScript プログラムに対する先進的な型システムを定義し,静的に型付けされた部分に対しては実行時エラーを起こさないという「望ましい」性質を理論的に証明した.理論的な考察は順調であるが,漸進的型システムの実装がまだ完了していないので,急ぐ必要がある. 以上を総合的に見ると,個別には更なる進展が望まれる部分もあるが,全体としてはおおむね順調と判断できる.
|
今後の研究の推進方策 |
今後も先に述べた3グループ体制は堅持しつつ研究を進めていく. 現在,フルセット JavaScript 向けに AOT および JIT コンパイラを実装しているところであるが,これらの設計や作業は,仮想機械インタプリタの内部構成とも密接にかかわってくる.そのため,コンパイラを担当するグループ A と,仮想機械を担当するグループ B の連携をより密にして,作業を進めていく. また理論的側面を担当するグループ C は,平成24年度に研究を進めた漸進的型システムを,実際のコンパイラに組み込む作業を行う.ここでもグループ A とグループ C が密に連携して実装を進めるとともに,理論面へのフィードバックも行う. 平成25年度は研究の最終年度なので,コンパイラや仮想機械インタプリタの実装をさらに洗練させたものとし,JavaScript ベンチマークプログラムを用いた性能実験,およびサーバサイドのアプリケーション記述実験を行い,提案する処理系の完成度を高めていくことにも力を入れる.
|
次年度の研究費の使用計画 |
該当なし
|