研究概要 |
本研究は,最近広く利用されているスクリプト言語処理系を処理系の構築時,もしくは実行時に柔軟に着脱できるようにすることを目指す.平成20年度では、次に示す課題に取り組んだ。なお,本研究はスクリプト言語Rubyの処理系(以降,Ruby処理系)を用いて研究を進めた. (1)言語処理系構築システムの提案と開発 Ruby処理系は豊富な機能を有しているが,目的によっては,メモリ消費量,移植性などの問題が生じる.そのため,必要な機能のみでRuby処理系を構築するためのシステムを開発し,atomic-Rubyという名前を付けた.現在は,Rubyの組込クラス単位で必要,不要を選択可能である.実行トレースを元にしたレシピファイルの自動生成と,より粒度の細かい機能選択の実現が今後の課題である. (2)ガーべージコレクションのためのライトバリアの自動挿入 Ruby処理系はGCを備えているが,対象とする用途によってはGCアルゴリズム(例えばインクリメンタルGC,世代別GC,並行GC)を変更したい.つまり,GC実装を着脱可能としたい,これらのGCはライトバリアを必要とするが,この追加を手作業で行うのは信頼性と開発効率の点で問題である.そこで,メモリ保護機能を利用してライトバリアが必要な箇所を自動的に検出するためのシステムを開発し,実際にインクリメンタルGCを実装した. (3)機能を手軽に追加するためのフレームワークの提案と開発 環境や用途によってRuby処理系をCで拡張する必要があるが,現状では拡張ライブラリを作成する必要があり,開発が難しい.これを容易にするためのシステムであるRicsinを提案し,開発した.RicsinはRubyスクリプトに自然な文法でCを埋め込むことを可能にし,Rubyだけでは困難な機能拡張,および性能改善を行う方法を提供する.
|