LLVMベース、Snow LeopardのGCDサポート

Rubyのコンパイルや並列処理対応、MacRuby最新ベータ登場

2009/10/08

 アップルでMacRubyを開発するLaurent Sansonetti氏は同プロジェクトのブログ上で、「MacRuby 0.5 beta 1」をリリースしたと発表した。インテルアーキテクチャで稼働するMac OS X v10.6以上で利用できる。現在はまだテスト用で今後数度の細かなリリースを経て最終版のバージョン0.5をリリースするという。

 MacRubyの開発は2007年末にスタートし、これまで何度かバージョンアップを重ねてきた。今回バージョン0.4から0.5となるに当たってグラウンドデザインレベルで大きな変更が加えられている。最大の変更はVMとして本家Ruby 1.9系が採用するYARVを、LLVM(Low Level Virtual Machine)に変更したこと。LLVMはJavaVMのように特定の言語に依存しない独自の命令セットを持つVMで、実行時の最適化も可能なコンパイラ向けインフラ。C/C++、Objective-C、Fortranなどのフロントエンドコンパイラを使ってLLVM上で実行可能なコードを生成できる。

 MacRubyがYARVに代えてLLVMに移行した理由として、Sansonetti氏は、ネイティブコードへのコンパイル機能がないことと、GIL(Global Interpreter Lock)の存在によって、マルチコアを生かすような真の並列処理が難しいことを挙げている。MRIとも略される本家のRubyでは処理系内部でネイティブスレッドを利用しているものの、ユーザーが生成できるスレッドでは処理系全体のロックに使われるGILの存在のために並列実行はサポートされていない。これはPythonでも同様だ。JRubyやIronRubyにはGILは存在しない。

Snow LeopardのGCDで並列処理

 MacRuby 0.5以降では、ThreadクラスはネイティブのPOSIXスレッドに対応し、各スレッドは個別のVMインスタンスを持つという。また、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)の双方をサポートする。

 macrubycコマンドでRubyのソースコードをMac OS X向けのオブジェクトファイルにコンパイルできるという。複数のオブジェクトファイルをアセンブルすることで、MacRubyを用いてCocoaアプリケーションも書ける。コンパイル済みのMacRubyアプリケーションは、起動が大幅に高速化する。また、ソースコードを開示せずに利用者にアプリケーションを提供できるようになる。

 このほかMacRubyでは、大規模なMacRubyアプリケーションをプロファイリングした結果に基づいて、多くの細かな最適化も行っているという。高速なメソッドディスパッチャ、低コストなローカル変数や高速なインスタンス変数アクセス、浮動小数点の即値などを導入しているという。またコアクラスでは、生データを正しく扱うためにByteStringクラスを導入したほか、Rubyの即値を扱うのに最適化したArray実装も行っているという。

 気になるのは互換性だが、Ruby処理系の互換性確保のために使われる“実行可能な仕様書”ともいうべきRubySpecを使ったテストでは、現在、MacRubyはRubyの言語仕様で91%、コア仕様で80%、ライブラリ仕様で72%のテストにパスする状態という。すでにirb、rake、rubygemなどのRubyプログラムは動作していて、今後もできる限り互換性を上げていく方針という。

(@IT 西村賢)

情報をお寄せください:

Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

天候と位置情報を活用 ルグランとジオロジックが新たな広告サービスを共同開発
ルグランとジオロジックが新たな「天気連動型広告」を共同開発した。ルグランが気象デー...

“AI美女”を広告に起用しない ユニリーバ「Dove」はなぜそう決めたのか
Unilever傘下の美容ケアブランド「Dove」は、「Real Beauty」の20周年を機に、生成AIツー...

有料動画サービス 34歳以下では過半数が利用経験、4割は1日1回以上利用
「ニールセン・ビデオコンテンツ アンド アド レポート 2024」を基に、テレビ画面での動...