BT

JRubyコンパイラが完成

| 作者: Werner Schuster フォローする 6 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2007年10月1日. 推定読書時間: 3 分 |
Charles Nutter氏はしばらくの間JRubyのRubyからJava Bytecodeまでのコンパイラを手がけてきたが、遂にそれが完成したようだ(source)
コンパイラを完成させるBEGINとENDブロックのコンパイルを終了したばかりです。またスタンダードライブラリ全体をコンパイルし、コンパイルスクリプト外でRIBとRubyGemsを動作させることに成功しました。(参考に:.rbファイルは全て削除しました。)
これによってJRuby1.1で計画されているいくつかのアイテムが完成することになる(source)。またこれによって11月上旬に開催されるRubyConf2007(サイト・英語)にてリリースが予定されている、JRuby 1.1にコンパイラが含まれることになる。

更なる詳細はJRubyコンパイラのブログアナウンスにて閲覧できる(source)
前代未聞である、フル装備のRuby1.8コンパイラが完成しました。Rubyのシンタックスに対応できるとされている、もしくはスタンダードライブラリ全体 をコンパイルするコンパイラが他にもありましたが、それらは私の言う”完成”には達していなかったのです。というのも私はstdlib.rbファイルの削除、また IRBやRubyGemsのような重要なアプリケーションを作動し続けることを可能にしました。私はその功績をとても誇りに思っています。JRubyは初めての完成型で、機能的な1.8セマンティックコンパイラを備えています。これはなかなかの功績だと思うのです。
もう一つの異なるタイプのコンパイルに関する計画が進められている。これはJavaとRubyの更なる統合を促進するものとされている。
コンパイラ#2は基本的にRubyクラスを与えられたファイルの中に持っていき(もしくは複数のRubyクラス)、通常のJavaタイプを生成します。このタイプは外観も感触も他のJavaクラスと同じようなものです。
  • それをJavaコードから通常の新しいMyClass(arg1,arg2)で例示化することが可能
  • Javaからの呼び出しでその全てのメソッドを呼び出すことができる
  • 自分が所有しているJavaクラスで拡張可能
この統合において、これらのクラスをJavaから使用するのを可能にするためには未だいくつか強化が必要となる。例えばある特定のシグネチャーでメソッドを定義することである。Rubyはシグネチャー用の明確な情報を備えていないので、何らかの次善策が必要となってくるのだ。
私はRubyメソッドのシグネチャーを特定するための独立な実装の方法を、全体を通して考えていました。私の中での条件はJRuby内にても作動できる同じコードか修正なしのRubyなのであるが、jRuby内においてはJavaからの付加的な呼び出し用静的シグネチャーを得るのです。
class MyClass
...
{String => [Integer, Array]}
def mymethod(num, ary); end
end
もしもこれになじみがなかったら、これは基本的に単に文字通りのハッシュシンタックスであると考えると良いのです。リターンタイプ、ストリングはIntegerと Arrayの二つのメソッドオーギュメントに関連しているものです。通常のRuby実装においてこのハッシュ構築のラインは実行され、またそれはハッシュがごみを収集しながら実行されるでしょう。しかしながらコンパイラ#2はクラス本体でこれらのラインに遭遇し、下記のようなメソッドを作るためにそれを使用するのです。
    public String mymethod(int num, List ary) {
...
}
原文はこちらです:http://www.infoq.com/news/2007/09/jruby-compiler-finished

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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でリプライする

ディスカッション

特集コンテンツ一覧

.NETの派生を理解する

Wayne Citrin 2018年7月18日 午前3時44分

ASP.NET Core - シンプルの力

Chris Klug 2018年6月4日 午前3時26分

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


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

Follow

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

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

Like

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

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

Notifications

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

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

BT