MacRubyについてまとめ
昨日の深夜になぜか私のTLの人たちがMacRubyのVM実装についてつぶやき始めたのでまとめておく。
@shudoさん:
RT @wtakuo: MacRuby 0.5 beta 1 はすごい.YARVからLLVMに変更.それによってGILの心配がなくなる.さらに並列処理はGCDを利用.AOTも提供.もはやスクリプト言語といった感じではない気もする.1.9とのコンパチビリティはどうなんだろうか.
@voluntasさん紹介のこの記事がわかりやすかった:
Rubyのコンパイルや並列処理対応、MacRuby最新ベータ登場
MacRubyはSnow LeopardからMac OS Xに導入された並列処理API「Grand Central Dispatch」(GCD)にも対応する(参考記事)。 GCDは多量のタスクをキューに入れ、それを1つずつ取り出してスレッドプールで処理するという処理モデルを抽象化したAPIを提供する。 C/C++/Objective-C向けには、ブロックと呼ぶクロージャ風の独自文法を導入してタスクのキューイングを行う形だったが、MacRubyではRubyのブロックが使える。つまり、低レベルのスレッド処理のことを意識せず、ブロックを書くだけで並列プログラミングによるマルチコアの恩恵を受けやすいというわけだ。
雪豹もってないよぅ〜。
パフォーマンス重視で開発を進めているMacRubyでは、並列処理だけでなく、ネイティブコードへのコンパイルも可能としたという。実行時最適化のJIT(Just-in-Time)と、事前コンパイルのAOT(Ahead-of-Time)の双方をサポートする。
気になるのは互換性だが、Ruby処理系の互換性確保のために使われる“実行可能な仕様書”ともいうべきRubySpecを使ったテストでは、現在、MacRubyはRubyの言語仕様で91%、コア仕様で80%、ライブラリ仕様で72%のテストにパスする状態という。
う〜む、まだ実戦投入にはほど遠い感じ。。まあMac OS Xで運用ってのもあまりないしな(Macのサーバーってまだ売っているのだろうか)
これは@moriyoshiさんが紹介してた記事:
MacRuby Drops GIL, Gains Concurrent Threads
それと、@_daikiさんによるMacRubyパフォーマンスのまとめ:
Ruby1.8 vs Ruby1.9(YARV) vs LLVM