BT

Your opinion matters! あなたのご意見でInfoQが変わる!

Ruby FFIがJRubyおよびMRIに固有ライブラリアクセスを提供

| 作者: Werner Schuster フォローする 4 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年12月15日. 推定読書時間: 2 分 |

MRIおよびRubiniusは、Ruby固有の拡張のサポートがあり、ネイティブコードがRubyコードやRubyインタープリターもしくはVMと対話することを可 能にする。Ruby 1.8.0は、共用ライブラリのロードを許可したり、Rubyコードから指定された関数を呼び出すことを許可するRuby/DLを採用した(リンク)。 Ruby/DLドキュメンテーション(リンク)は、関数のインポートの仕方、動作方法、RubyをCタイプにマップする方法などを示している。また、Ruby/DL はコールバックとの双方向通信を提供している。関数ポインターを要求するC関数にRubyブロックを手渡すことができる。

Rubiniusは、Ruby/DLと類似した独自のForeign Function Interface (FFI)を導入した(リンク)。FFIのAPIは、多少異なるが(リンク)。それは、Ruby/DLが使用するような、Cコードのストリングもしくはカスタムタイプ指定子 フォーマットではなく、Rubyシンボルおよびタイプシグニチャーの配列リテラルを使用する。

今年の初め、JNA(参考記事)にビルドされたjruby-ffi(参考記事)が導入された(JRubyはRuby/DLに対するサポートがない)。

RubiniusおよびJRubyに対するサポートは利用可能であったが、MRIを使用しているRuby分野の大部分が、共用ライブラリを使用するため に、まだRuby/DLや他の方法を使用していることを指す。これを修正するために、ruby-ffiプロジェクト(リンク)がWayne Meissner氏(すでにjruby-ffiを作成)によって作成され(リンク)、Rubinius for JRuby、Ruby 1.8.xおよびRuby 1.9.xと同様のFFIインターフェイスを提供している。これを使用して、これらすべてのRuby実装全体で同様のRubyコードを使用して、共用ライ ブラリにアクセスすることが可能である。

Ruby FFI 0.2.0は、現在利用可能である(リンク)gem install ffiでインストールできる。ドキュメンテーションはプロジェクトのwikiで利用可能であり(リンク)、Examplesのページ(リンク)から始めると良い。 Charles Nutter氏は、FFIを使用するにあたって、さらに詳しい説明およびサンプルを提供している(リンク)

 

原文はこちらです:http://www.infoq.com/news/2008/12/ruby-ffi-on-mri-jruby

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT