MacRuby 0.4リリース(参考記事)により、新たなグラフィックスライブラリおよびThreaded GCなどの改善がもたらされた後、MacRubyの次期バージョンがパフォーマンスの改善を売り物にしようとしている。ブログ記事では、MacRubyの試験的なブランチにおける新たなLLVMベースのVMを説明しており、それは、YARVに取って代わるものである(リンク)。

新たなVMは、パーサーからLLVMの中間表現に直接抽象ソースツリーを変換し、それから最適化されたマシンコードにコンパイルされる。高速fixnum 計算、キャッシュドメソッドディスパッチ、zero-cost IA64例外、高速インスタンス変数アクセス、定数キャッシング、高速break/next、チープローカル変数、末尾呼び出しの最適化、など他の主要な 最適化の多くが完了している。

新たなVMであるRoxorのソース(リンク)が、試験的なSVNブランチで利用可能になっている。基本的に compile_node メソッドは、Ruby ASTを受け取り、プリミティブもしくはRubyランタイムに対する呼び出しのどちらかで構成されるLLVM命令に変換する。



MacRubyはRuby 1.9.1に基づいているが、新たな試験的なVMなどの変更およびObjective-Cタイプの使用は、互換性の問題を生じさせる可能性がある。互換性を維持するため、MacRubyはRubySpecに統合された(ブログ記事より)：

現在の試験的なブランチは、言語スペックのほとんどをすでにパスすることができ、リグレッションテストスイートの標準パートになる。また、Ruby 1.9の振る舞い に適合するように、積極的にスペックをアップグレードしている。

RubySpec(リンク)は、Ruby実装の振る舞いの実行可能なスペックであり、Rubiniusプロジェクトにより開始された。



Antonio Cangiano氏は、試験的なMacRubyバージョン上でいくつかの言語機能マイクロベンチマークを実行した(リンク)。MRIおよびスタンダード1.9.1と比較すると、非常に良い結果をもたらした。次期リリースで、パフォーマンスがどう展開するのかはまだ分からない。Antonio氏は、MacRubyの利点について以下のように指摘している。

(RubyCocoaのようなブリッジを通じ)Objective-CおよびRubyに依存するよりはむしろ、デベロッパはMac OS Xコアテクノロジーと統合し、Object-Cの代替言語として働くMacRubyを使用することができる。 厳密に言うと、Objective-Cのランタイムおよび'ガベージコレクターはMacRubyの心臓部である。しかしAPIの観点では、プログラマはより冗長で低レベルのObjective-Cの代わりに、Rubyでコードを記述することができる。

GUIライブラリの長いリストおよびRubyの抽象概念を考慮すれば、OS Xをターゲットにしているデベロッパは、Objective-Cを使用する必要なく、Cocoaライブラリと緊密に統合するアプリケーションを構築することができる。

原文はこちらです：http://www.infoq.com/news/2009/03/macruby-llvm-speed