「MacRuby 0.4」from MacRuby Blog

MacRuby 0.4がリリースされました。
以下、MacRuby BlogよりMacRuby 0.4をざっくり訳してみました。

MacRuby 0.4

2009-03-06

少し遅れましたが、数か月の開発を経て、ようやくMacRuby 0.4が利用可能になりました。鉄は熱いうちに打て!

これはかなり重要なリリースです。新機能が加わり、問題もいくつか修正されています。変更点が多すぎて書ききれないので、興味深いものを選んで紹介しましょう。

GCのスレッド化

MacRubyのガベージコレクタはデフォルトでマルチスレッドモードで動くようになりました。これは、ガベージコレクションは常に別のスレッドで実行されるため、プログラムの流れが中断されなくなったことを意味しています。

64ビットのフルサポート

MacRubyはIntelの32ビットモードと64ビットモードのどちらでも動かせるようになりました。64ビットをサポートしている最近のMacで動かすと、かなり高速に動くでしょう。これは主に土台となるインフラ部分が64ビットプロセッサでかなり改善されたおかげです。

DTraceプローブ

DTraceプローブがインタープリタのコアに追加されました。メソッド呼び出しや例外といった各種情報をトレースすることができます。これはすべて、システムのMacRubyプロセス上でなされます。

provider macruby {
    probe insn__entry(char *insnname, char *sourcefile, int sourceline);
    probe insn__return(char *insnname, char *sourcefile, int sourceline);
    probe method__entry(char *classname, char *methodname, char *sourcefile, int sourceline);
    probe method__return(char *classname, char *methodname, char *sourcefile, int sourceline);
    probe raise(char *classname, char *sourcefile, int sourceline);
    probe rescue(char *sourcefile, int sourceline);
};

DTraceはとても強力なツールで、動作中のアプリケーションをデバッグするときに、かなり役に立つこと間違いなしです。MacRubyにはDTraceスクリプトが同梱されており、これらは/Developer/Examples/Ruby/MacRuby/DTraceにあります。メソッドの呼び出し回数や時間、GCによって回収されたオブジェクトといった情報までプロファイルすることができます。

ランタイムObjective-C API

MacRubyはObjective-C APIを公開するようになりました。これを使うと、純粋なCocoa環境からMacRubyランタイムを制御できるようになります。

$ cat hello_macruby.m
#import 
#import 

int main(void) {
    id proc = [[MacRuby sharedRuntime] evaluateString:@"proc { |x| puts "hello #{x}"}"];
    [proc performRubySelector:@selector(call:) withArguments:@"MacRuby"];
    return 0;
}
$ gcc hello_macruby.m -o hello_macruby -framework Foundation -framework MacRuby -fobjc-gc
$ ./hello_macruby
hello MacRuby

もしあなたがObjective-C Cocoaアプリケーションの仕事をしていて、新機能を実装したり、ネイティブオブジェクトにスプリプトのインターフェイスを提供するためにMacRubyの利用を考えているのなら、これは役に立つでしょう。

新しいXcodeテンプレート

「MacRuby Core Data Application」テンプレートと「Embedded MacRuby」ターゲットが利用できるようになりました。アプリケーションバンドルのなかにMacRuby.frameworkを組み込みたいときに「Embedded MacRuby」ターゲットを使うことができます。アプリケーションを配布するときにこのフレームワークを組み込んでおけば、ユーザはMacRubyのインストールが不要になります。

改善されたHotCocoa

HotCocoaは、Cocoaやその他のフレームワークをRubyらしく制御する薄いレイヤーです。HotCocoaはMacRuby 0.3から導入されましたが、0.4で大きく改善されています。

たくさんのバグ修正と改良に加えて、XMLパーサのための新しいマッピング、KVO array/setアクセサ、プロパティリスト、さらにAppKitコンポーネントが加わりました。

プロジェクトのRakefileに”deploy”タスクが追加されました。この新しいタスクは、バンドルにMacRubyランタイムを組み込んだ、デプロイメント用のアプリケーションを準備します。(XcodeのEmbed MacRubyターゲットがやることに似てます)。”macrake deploy”タスクが完了すると、MacRubyをインストールしていない友達とも.appを共有できるようになります。

とはいえ、一番興味深い変更は新しいグラフィックス層、HotCocoa:Graphicsでしょう。Mac OS Xの強力なCore GraphicsとCore Image描画ライブラリにシンプルなオブジェクト指向インターフェイスを提供します。

いろいろな変更

変更リストには、次のようなものが含まれています。SetはNSSetを使って再実装されました。NSNumberにNumericメソッドが実装されました。最後に、標準ライブラリはRuby 1.9.1に同梱されているものにアップデートされました。

注意しておくこと

MacRuby 0.4は、Cocoa開発ができるくらいに安定してきましたが、C拡張、RubyGems、Ruby IOといったところには、まだ少し問題があります。私たちがこうした問題に取り組んでいるあいだは、対応するCocoa API(それが存在するときには)を使うことをおすすめします。

私たちはこのリリースを楽しんでもらえることを期待しています。何か問題があれば知らせてください。

次のリリースである0.5については、詳細が決まり次第お伝えします。これはパフォーマンスに注力したものになる予定です。