RubyInline

Rubyのコードの中にCを埋め込むRubyInline。
なんだか面白そうな代物である。
基本的にはコンパイラを動かしてコンパイルして呼び出すわけなんだろうけど、コンパイル結果をキャッシュしてくれるから2回目以降は更に速くなる。
もし。
可能性として。
このキャッシュとRubyInlineのライブラリをExerbで固めて一緒に配布できたら、WindowsRubyゲームの高速化の切り札として限りなく反則的なことができるのではないだろうか。
Cコンパイラがある人じゃないと使えないこと、Cが書ける必要があること、などを考えると、もはやRubyで書く必要なんか無くて、もう初めからCでいいじゃんって感じもしてくるが。
とはいえ、速度が必要な部分のみCで、と考えると、部分的に拡張ライブラリを作るよりも、RubyInlineのほうが確かに手軽だ。
一応、拡張ライブラリを作る程度のRubyデータ構造アクセス方法などの知識は必要みたいだから、それなりに勉強はしないといけないだろうけど。


てなわけで、少しチャレンジしてみたのだが。
検索して調べてたらWindowsでは動かない、という話をあちこちで見かけて、しかもうまく動いたという話を見ない。
ウチでやってみてもとりあえずは動かなかった。
残念。
RubyInlineはLinuxなどの普通にコンパイラがあってバイナリ互換が無い環境を前提としているみたいだから、ある程度はしょうがない。
でもこの方向性は何かものすごい可能性を感じる。
たとえば、たぶんやらないけど、Windows専用のDXRubyに、Windows専用のそういう機能を載せてしまうとか。
Microsoftコンパイラもフリーであるし、それを使えるようにしたコンパイル機能と、キャッシュを配布・実行できる仕組みを組み込んでしまえば、ここに究極の反則ライブラリが誕生する。
これはヤバイ。
使うのがちょっと難しくはなるだろうが(主に環境設定関連)、そういう機能さえあれば、拡張ライブラリ形式じゃなく、この機能のキャッシュとして色々提供することもできるようになる。
そしたらそれを使うだけならコンパイラもいらないし、細かい機能をわんさか提供したりもできる。
ま、いささか現実的ではない妄想だ。
面白いとは思うんだけど。