JRubyの主要開発者であるCharles Nutter氏は20日(米国時間)、自身のブログにおいて、JRubyコンパイラをRubyで再実装するアイディアについてふれている。もちろん、すでにJRubyコンパイラの開発は完了しており、次期リリースへ向けた取り組みには変更がない。今回のエントリは、同氏の新しいアイディアと、最初の取り組みの紹介といった位置づけのものだ。

Rubyを使ったJRubyコンパイラ実装へ向けた前段階の成果として、すでに簡単なJVMバイトコードビルダが実装されているという。同ブログに掲載されているソースコードを読む限りでは、現段階ではRubyのソースでインラインアセンブラのようにJavaバイトコードによく似たコードを記述することができるようになっており、ビルダを使うことでそこからJavaコードを生成するというもののようだ。

RubyソースコードでJavaのクラスを定義した場合(ビルダ用) - コンパイル一歩前の状況

ビルダで生成されたJavaのコード

次の段階としてRubyのソースコードを上記のコードに変換するプログラムが開発できれば、Rubyを使ったJRubyコンパイラの完成というわけだ。これはJRuby開発の規定路線として取り組まれているものではなく、あくまでも同氏の興味に基づいて取り組まれている。今後のプロダクトラインにRuby実装のJRubyコンパイラが取り込まれるかどうかは、現段階ではまだなにもわからない状況だ。

JRubyはJavaとともに活用することに意味があるため、RubyのみでJRubyコンパイラを実装することに、開発者としての興味や学術的な意味以外に実用的な価値があるのか、現段階ではなんともいえない。しかし、スクリプト言語によるほかの言語のバイトコードコンパイラの参照実装としては興味深いもので、ほかのスクリプト言語に移植しやすくなる、といった効果はあるかもしれない。