GemStone の独自拡張 VM(Facets Java VM および MagLev Ruby VM)と、JRuby および Rubinius の Ruby 処理系記述部分を組み合わせると同社製 OODB をフルに使える Ruby 処理系ができる


ってことだったのか!(おそらく)


というのも、以前、Rubinius GemstoneのOODBがJRubyとRubiniusをサポート を読んだとき、JRuby と Rubinius があるのになんで Matz RubyYARV への言及がないんだろうと疑問に思って、くしくも Matz にっきにも関連して、

Gemstoneといえば昔一世を風靡したOODBMS。これがJRubyやRubiniusから使えるようになる、という話。私はその頃ObjectStoreを使ってたけど。

待て。JavaとのコネクションでなんでもできるJRubyは分かるが Rubiniusが出てて、なんで本家Rubyが対象にならないのか。不思議。

http://www.rubyist.net/~matz/20070807.html#p06

といった指摘があったのを見ても、(“昔一世を…”とか、例によって Smalltalk 関連のものを“過去のもの”であるかのようにことさらに書かんでよろしい!とか軽くムカツキつつもw)たしかにそのとおりだと自分も似たよう印象を持った記憶があるのですが、最近、MagLev についてひととおり調べてから id:ogijun の はてなブックマーク - Giles Bowkett: JRuby and Rubinius Under Gemstone のタイトルを見たとき(本文は読んでいないw)、はたと気がついてようやく謎が解けました。


そう。ここで大切なのは、JRuby や Rubinius において、その Ruby 処理系が JavaRuby で 書かれていることなんだな、と。

つまり、GemStone は自社の OODB を使える独自拡張の Java VM を持っているので Java で書かれた JRuby は問題なし。Rubinius のほうはちょっとやっかいだけれども、当時としては Rubinius/Shotgun VM を GemStone OODB 向けに拡張することで似たようなことができる、というわけ。今は GemStone Smalltalk VMRuby 向けに拡張した MagLev があるので、Rubinius の Ruby で書かれた Ruby 処理系の部分を MagLev Ruby VM 向けに改変してしまえば問題なし。

だから、C で書かれた Matz RubyYARV は蚊帳の外となっているのはそういう意味だったわけですね。と、納得できたしだい。