Ruby 1.9の次
ささだ氏は、これらの研究として以下のような例を挙げた。
MVM
MVMの適用対象は携帯電話のような小さな世界から、マイクロソフト研究所のSingularityのような仮想OSまで応用の範囲が広い。特にSingularityのような、軽量かつ安全な仮想OSとしてのRubyというものが考えられる
世界でたったひとつだけのRuby(アトミックRuby)。
Embeded XPなどのように必要なモジュールだけで組み立て可能としたRuby。組み込みデバイスなどがターゲットとして考えられる。
パーサー不要Ruby(バイトコードシリアライゼーション)
アトミックRubyを構成する要素技術として、バイトコードシリアライゼーションを挙げることができる。たとえば家電製品のマイコン制御用ROMへの組み込みではソースコードを動的に解析する必要がないので、シリアライズしたバイトコードを組み込むことでパーサーを不要化できる。
BC(バイトコード)toCトランスレータ
バイトコードからCのソースを生成することで、既存Cコンパイラの最適化を活用したり、特殊なCPU用のVM実装を不要化したりする。BCtoCトランスレータには、たとえばレガシーな組み込み機器のソフト開発といった分野への適用が考えられる
HPC用最適化
64ビットマシンでは、即値に62~63ビット利用可能なことを利用して、浮動小数点数を即値として扱うようにしたRuby。現在の浮動小数点数をヒープに確保する方法と比較してフェッチ回数が半減し、かつGCを減らすことによって高速化できる。この処理系は研究段階では実装できていて、標準のRubyに対して1.9倍高速に動作する。
なお実装では即値を示すビットの持ち方を工夫することで、64ビットをフルに利用できるようにしている(具体的な方法については論文を参照とのこと――筆者には見当がつかなかったがエクスポーネントを利用するらしい)。
このような実装はHPCに最適化された処理系と比較すると遥かに低速であるが、人間がフルHPC対応の処理系で3日かけてプログラミングした後に実行時間1時間で結果を得る代わりに、人間がRubyを使って1日でプログラミングして実行時間1日で結果を得れば、むしろ1日の得になるという点に着目している。
バイトコードシリアライゼーションを利用した移動コード
数1000ノードに対する分散環境に対して、動的なコードとデータの分配を行うのにバイトコードシリアライゼーションを利用する。
メモリーアロケータやGCの見直し
YARV採用によって、GCのコストやメモリーアロケーションのコストが比較して増加したため、リアルタイムGCや、コンパクションといった技術の適用が有効だと考えられる。
効果的な脱最適化
クラスの再ロードやメソッドの再定義に対応して、JITコンパイル済みコードを戻し、コンテキスト情報を復元する技術。脱最適化そのものはLispやSmalltalkに実装されている古い技術(もちろんJavaにもある)であるが、それをRubyという実用言語(広い範囲で利用されていてユーザーベースが大きいという意味)で効果的に実装することで、高速化を助けることを狙う。
なお、ささだ氏は関連して、東京大学大学院に、ここで述べたようなRubyを利用した研究やOS、プロセッサアーキテクチャの実装を研究する笹田研究室が発足したこと、一緒に研究する学生を募集していること(願書出願は7/1~7/7まで)を告知した。