2011 Fiscal Year Research-status Report
実用的ウェブアプリケーション開発を支援するサーバサイドJavaScript処理系
Project/Area Number |
23500038
|
Research Institution | The University of Electro-Communications |
Principal Investigator |
岩崎 英哉 電気通信大学, 情報理工学(系)研究科, 教授 (90203372)
|
Co-Investigator(Kenkyū-buntansha) |
鵜川 始陽 電気通信大学, 情報理工学(系)研究科, 助教 (50423017)
中野 圭介 電気通信大学, 先端領域教育研究センター, 特任助教 (30505839)
|
Project Period (FY) |
2011-04-28 – 2014-03-31
|
Keywords | プログラミング言語処理系 / 仮想機械 / コンパイラ / 静的解析 / 型推論 |
Research Abstract |
本研究は,サーバ側で実用的な性能で動作するJavaScript処理系を研究開発することにより,煩雑とされている Web アプリケーション開発のコストを大きく低減させ,広く一般の利用に供することを目的とする.平成23年度は研究の初年度として,JavaScriptの中心的な機能を抽出したサブセット(以下「Tiny JavaScript」と呼ぶ) を定め,Tiny JavaScript に対するコンパイラと仮想機械を実現すること,および,静的解析による最適化の予備実験を行うことという2つの目標を定め,以下の研究成果を得た. 1. ECMAScript バージョン 5 で導入された strict モード (ECMAScript から標準的には用いられない機能を排除したモード) を参考にして,Tiny JavaScript の仕様を決定した.さらに,レジスタベースの仮想機械の仕様および命令体系を設計し,Tiny JavaScript のソースプログラムから仮想機械言語へのコンパイラを,C言語を用いて実装した. 2. 仮想機械のインタプリタを,C言語を用いて実装した.その際,threaded code など,仮想機械インタプリタの実装における既存の最適化手法も採り入れ,実行性能の向上につとめている. 3. 関数型言語などで知られている既存の静的解析・最適化手法がJavaScriptに対して有効であるか,予備的な実装と実験を行った.その結果,ある種の最適化に関しては,一定の効果が期待できることを確認した. 4. 本研究における静的解析,コンパイラは,関数型言語 OCaml で実装する予定である.そのための抽象構文木などの基本的なデータ構造を定義し,プログラマによる注釈が可能な構文解析プログラムを作成している.また,JavaScriptプログラムに対する型推論に関する既存研究を調査した.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
本研究は,大きく分けて,仮想機械命令へのコンパイラの設計と開発と担当するグループ (グループA),実行時システムを含む仮想機械の設計と開発を担当するグループ (グループB),静的解析機構の設計と開発を担当するグループ (グループC) の,3グループによる研究体制を敷いている.現在までの各グループの達成度は次の通りである. グループA: Tiny JavaScriptの仕様を決め,それに対する C 言語を用いたコンパイラの一通りの実装を完了しており,予定通りの達成度である. グループB: 仮想機械のインタプリタを C 言語を用いて実装した.まだまだ高速化の余地は多く残されているが,順調な達成度である. グループC: 関数型言語などで知られている既存の静的解析がどの程度役に立つかの調査を行い,実際に解析を行うプログラムを作成している.この点においてはおおむね順調であるが,型推論アルゴリズムの基本設計がまだ完了しておらず,この点をもう少し急ぐ必要がある. 総じて達成度を判断すると,静的解析部分で更なる進展が望まれる面もあるが,全体としてはおおむね順調と判断できる.
|
Strategy for Future Research Activity |
先に述べた3つのグループによる研究実施体制は,大きな問題もなく順調に機能しているので,今後もこの体制を維持して研究を進めていく予定である. 現在は,JavaScript のサブセットである Tiny JavaScript のみを対象とする処理系であるが,これをフルセット向けに拡張していく.そのためには,仮想機械命令体系を拡張した上で,コンパイラの拡張と仮想機械自体の拡張を行う必要がある. 仮想機械に関しては,更なる高速化を目指すとともに,メモリ管理などの実行時システムを洗練させる.具体的には,実時間あるいは並列ごみ集め機構を導入し,システムの応答性を高めることを目指していく.仮想機械インタプリタには,仮想機械命令列を実行中にネイティブコードに変換する Just-in-time コンパイラの導入も行う. 静的解析に関しては,型検査アルゴリズムをコンパイラに実装し,型情報を用いることにより,効率的なコードにコンパイルできることを示す.プログラマから与えられた型注釈情報と,型推論を併用することにより,無駄な処理を省略することができ,大幅な高速化に寄与することが期待できる.
|
Expenditure Plans for the Next FY Research Funding |
本研究も2年目に入り,論文としてまとめることができるような研究成果も出はじめると期待できるので,国内/国際会議への投稿・発表を積極的に行っていきたいと考えている.次年度の研究費の大きな部分は,そのための旅費あるいは論文別刷代金などに使用する予定である. 本研究で開発する JavaScript 処理系はサーバ用途を目指している.最近の計算機のハードウェアはマルチコアが主流であり,複数ある CPU コアをいかにしてうまく利用するかが,言語処理系の性能を向上させる大きな鍵となる.次年度の研究費は,本研究の実験の基盤となるような,サーバ向けマルチコアのハードウェアの導入にも使用する.
|
Research Products
(2 results)