先日、待望のMac OS X Leopardがリリースされたが、これにはRuby開発への極めて幅広いサポートも付属している。Mac OS ForgeのWikiは、Leopardの新しいRuby機能を掲載している(source)。
Ruby自体は1.8.6 p36にアップグレードされ、これが入手可能な安定した最新リリースでした。p36以降に発見された重大なバグに対するパッチを加えましたが、その時点では正式なRubyパッチリリースの一部となりませんでした(実際はそうであったものの、当社側の期日に間に合わなかったため)。
[中略]
インタープリタのコアを含むRubyのlibruby.1.dylibライブラリは、ppc、i386、ppc64、およびx86_64 アーキテクチャ向けの、4ウェイのファット/ユニバーサルバイナリとして利用可能です。したがって、Rubyを64ビットのアプリケーションに組み込むことができます。C拡張子もすべて32ビットと64ビット両方のアーキテクチャに利用可能です(ただし、64ビット化できないTkは除く)。このため、Rubyインタープリタのランチャーである/usr/bin/rubyは、Tk拡張子を使用するスクリプトを分割しないために32ビットのみが残されるか、その他の32ビットのみに依存するものが残されました。
RubyのC拡張子は、デフォルトでppcおよびi3862向けに2ウェイのファットバイナリをコンパイルします。たとえば、非ユニバーサルなライブラリ(プロセッサアーキテクチャごとに渡されるmysql.comバイナリなど)を背景にリンクする場合、ARCHFLAGS環境変数を設定して拡張子のビルドを構成することができます。
これらすべての詳細は別にして、Rubyインタープリタへに追加された興味深い機能は、DTraceの静的プローブへのサポートである。DTraceはもともと、SunがSolaris用に開発したものだが、現在では他のUnixバージョンにも移植されている。DTraceは、アプリケーション、さらにはオペレーティングシステムコードのトレースやプロファイルを低オーバーヘッドで実行することを可能にする。Mac OS X Rubyインタープリタには、以下のプローブが含まれる(source) 。
これらはJoyents Ruby DTraceプロジェクト(source)から移植されたものである。Mac OS X Leopardは、イベントのトレースとプロファイルの視覚化を実現するInstrument(サイト・英語)と呼ばれるツールも備えている。プローブ
現在Ruby-DTrace内に存在するプローブ
プローブ名 説明 function-entry Rubyメソッドが入力されたときに発動するプローブ function-return Rubyメソッドが返されたときに発動するプローブ raise Ruby例外が発生したときに発動するプローブ rescue Ruby例外が解決されたときに発動するプローブ line Rubyの行の実行ごとに発動するプローブ gc-begin GCサイクルの開始直前に発動するプローブ gc-end GCサイクルの終了直後に発動するプローブ object-create-start Rubyオブジェクトの割り当て直前に発動するプローブ object-create-done Rubyのオブジェクト割り当て終了時に発動するプローブ object-free Rubyオブジェクトの解放ごとに発動するプローブ ruby-probe Rubyコードから発動可能なプローブ(以下を参照)
Appleは、Xcode(サイト・英語)およびGUI ビルダであるInterface Builder(サイト・英語)へのサポートも組み込んだ。
Leopard内のXcodeはRubyCocoaプロジェクトテンプレートを装備していますが、Test/Unitターゲットを生成するテンプレートも備えています。Xcodeは、BridgeSupport機構が駆動する、Rubyより良いオートコンプリートもサポートします。.Mac OS X Leopard には、アプリケーションのスクリプティングを実現するScripting Bridge(サイト・英語)と呼ばれる新しいフレームワークも含まれる。Rubyもサポートされている。
現在、Interface Builderは正式にRubyをサポートしています。たとえば、アウトレットやアクションを用いてRubyクラスをXcodeで記述することができ、これによってすべてが自動的にIBに現れます。IBはRubyCocoaのrb_nibtoolユーティリティ使用してメタデータを同期化します。一方、アウトレットやアクションをIB内で手動で定義し、それらをXcode Rubyファイルにドラッグ&ドロップすることができ、これによって一致するRubyコードがペーストされます。
ScriptingBridgeは、AppleEventインフラストラクチャへのアクセスを提供する新しいLeopardフレームワークで、AppleScriptはこれに基づいています。ScriptingBridgeは、任意のアプリケーションのスクリプタブルディクショナリに相当するObjective-Cインターフェースを動的に生成します。その後、メッセージを送信し、このアプリケーションをObjective-Cから制御することができます。原文はこちらです:http://www.infoq.com/news/2007/10/ruby-leopard
RubyCocoaのおかげで、RubyからScriptingBridgeを使用することも可能です。Enumerationのようにアクセスできないスクリプティング要素もまだいくつかありますが、その機能の大部分は利用可能です。