きつねさんはおしえてくれないruby-llvm
今年のテーマ(の一つ*1)はLLVMにしようと思い立ってちびちびお勉強してたんだけど、タイムリーなことに本日達人出版会さんから素晴らしい本が出版されまして。さすが達人出版会。いいとこついてくるわー。ていうか一週間前に欲しいってtweetしたばっかだわー。
http://tatsu-zine.com/books/llvm
ただまぁ残念なことに?こちらの本もそうなんですけどLLVMのチュートリアルはたいていの場合CとかC++の知識必須だったりするわけです。いや、読めと言われたら読むけど、正直CもC++もどっちもよく知らないからあんまり頭に入って来なくてつらい。せっかくLLVM(llc?)でコンパイルできるわけだし、フロントエンドの実装はもっと軽い言語でいいじゃない。例えばRubyとか、もしくはRubyとか。
と嘆いてたらruby-llvmというものを見つけました。名前の通りRubyでLLVMをなんかぐりぐりできるライブラリです。同僚の石川先生もコントリビュートしてるので、きっとすばらしいものです。触り始めたばっかりでよく知らないけど。
まぁそういうことで、llvmとruby-llvmとセットで覚えるかと、ここしばらく本家チュートリアルのKaleidoscopeをruby-llvmに移し替えてました。元のチュートリアル(C++)の流れをなるべく変えないようにRubyに移植してたから、ruby-llvmの使い方としてはあんまりよくない感じかもしれないけど。
LLVMの日本語の情報が少なすぎるので、ホントはできたサンプルを元に本家のチュートリアルの簡略版でも書こうかと思ってたんだけど、きつねさんが出たのでなんかもういいや。
ソースは公開しておくので、よかったら何かの参考にしてください。
https://github.com/technohippy/Kaleidoscope.rb
あ、そうだ。一点だけ。
今のところhomebrewでインストールされるruby-llvmはLLVM3.0じゃないとだめっぽいので、brew install llvm --shared する前に、ここの手順で3.0を使うように設定しましょう。怠るといろいろエラーが出ます。