きつねさんはおしえてくれないruby-llvm

今年のテーマ(の一つ*1)はLLVMにしようと思い立ってちびちびお勉強してたんだけど、タイムリーなことに本日達人出版会さんから素晴らしい本が出版されまして。さすが達人出版会。いいとこついてくるわー。ていうか一週間前に欲しいってtweetしたばっかだわー。

http://tatsu-zine.com/images/books/68/cover_s.jpg
http://tatsu-zine.com/books/llvm

ただまぁ残念なことに?こちらの本もそうなんですけどLLVMチュートリアルはたいていの場合CとかC++の知識必須だったりするわけです。いや、読めと言われたら読むけど、正直CもC++もどっちもよく知らないからあんまり頭に入って来なくてつらい。せっかくLLVM(llc?)でコンパイルできるわけだし、フロントエンドの実装はもっと軽い言語でいいじゃない。例えばRubyとか、もしくはRubyとか。

と嘆いてたらruby-llvmというものを見つけました。名前の通りRubyLLVMをなんかぐりぐりできるライブラリです。同僚の石川先生もコントリビュートしてるので、きっとすばらしいものです。触り始めたばっかりでよく知らないけど。

まぁそういうことで、llvmruby-llvmとセットで覚えるかと、ここしばらく本家チュートリアルKaleidoscoperuby-llvmに移し替えてました。元のチュートリアルC++)の流れをなるべく変えないようにRubyに移植してたから、ruby-llvmの使い方としてはあんまりよくない感じかもしれないけど。

LLVMの日本語の情報が少なすぎるので、ホントはできたサンプルを元に本家のチュートリアルの簡略版でも書こうかと思ってたんだけど、きつねさんが出たのでなんかもういいや。

ソースは公開しておくので、よかったら何かの参考にしてください。

https://github.com/technohippy/Kaleidoscope.rb

あ、そうだ。一点だけ。

今のところhomebrewでインストールされるruby-llvmはLLVM3.0じゃないとだめっぽいので、brew install llvm --shared する前に、ここの手順で3.0を使うように設定しましょう。怠るといろいろエラーが出ます。

*1:あとWebGLと、次点でDartlangとRails再入門