2009年11月4日水曜日

MacRubyコンパイラの使い方

今回は、Antonio CangianoさんのZen and the Art of Programmingより、「Getting MacRuby’s compiler to work」という記事を取り上げたいと思います。MacRubyはRubyの実装系の一つです。MacRubyでは、RubyスクリプトをMac OS X上で実行できる形式にコンパイルするようです。Mac用のプログラムを作成するのに使えるかもしれません。そして、ゆくゆくはiPhone上でも実行できるプログラムがコンパイルできるようになるのでしょうか?


MacRubyコンパイラの使い方
By Antonio Cangiano.

本日(訳者注:2009年10月8日)、Ruby界隈において大きなニュースがあります。MacRubyチームが(実験段階でRuby言語を完全に実装していない)バージョン0.5の最初のベータをリリースしました。このバージョンでは、JIT、恐ろしいGIL(Global Intepreter Lock)の除去、ネイティブスレッド対応、マルチコアCPUでのGCD(Grand Central Dispatch)対応、そして、リリースアナウンスにあるような全く新しい機能を実現しました。

最も重要で新しい機能はコンパイラプログラムの存在です。その通りです。このリリースにより、Rubyコードが非常に最適化されて実行形式のコードにコンパイルすることができるようになります。どのように素晴らしいかって?このニュースでとても期待にふくらんでしょう。それなら、MacRuby.comへアクセスして、インストールファイルをダウンロードしましょう。そうしたら、次のようにちょっとしたテストを実行してみましょう:

$ macrubyc world_domination.rb -o world_domination
Can't locate program `llc'

しまった!llcは、(MacRubyも利用している)LLVMが提供するツールのひとつです。しかしながら、MacRubyのインストーラには含まれていません。でも、慌てなくても大丈夫。解決方法があります:

$ svn co -r 82747 https://llvm.org/svn/llvm-project/llvm/trunk llvm-trunk
$ cd llvm-trunk
$ ./configure
$ UNIVERSAL=1 UNIVERSAL_ARCH="i386 x86_64" ENABLE_OPTIMIZED=1 make -j2
$ sudo env UNIVERSAL=1 UNIVERSAL_ARCH="i386 x86_64" ENABLE_OPTIMIZED=1 make install

もし、あなたのコンピュータのCPUが2コアでない場合は、4行目の-j2オプションを取り除くか数をコア数によって調整して下さい。

コンパイルには、コンピュータのスピードによって結構な時間がかかるかもしれませんが、最終的にはLLVMは作成されますよ。:-P llcはPATH環境変数内のディレクトリに配置して下さい。やっと、これでRubyコードをコンパイルして、あなたの世界征服計画の実現を助ける実行ファイルを作成することができます。

$ macrubyc world_domination.rb -o world_domination
$ ./world_domination
MUAHAHAHAHA!

0 件のコメント: