BT

JRuby 1.7 プレビュー版リリース - 1.9 モードの既定化,invokedynamic によるパフォーマンス向上

| 作者: Mirko Stocker フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2012年5月31日. 推定読書時間: 4 分 |

原文(投稿日:2012/05/29)へのリンク

JRuby 1.6 シリーズの初回リリース から,すでに1年以上が経過している。そして今回,JRuby 1.7.0 の最初のプレビュー版がリリースされた。

JRuby 1.6 は Ruby 1.9.2 と互換性を持った最初のバージョンだった。JRuby 1.7 ではさらに,Ruby 1.9 がデフォルトの実行モードとなっている。その他の主な変更点として リリースノート に記載されているのは次のものだ。

  • 1.9.x 互換性に関する多数の修正
  • Java7 の invokedynamic をサポート
  • パフォーマンスと並行性の向上
  • Java 5 サポートの廃止 (Java 6 以降が必須である)
  • Rubygems 1.8.24 へのアップデート
  • Rake 0.9.2.2 へのアップデート

invokedynamic のサポートは自動的に有効になるが,最大限に活用するためには最新の Java 7 上で実行する必要がある。InfoQ では,この invokedynamic サポートで JRuby プラットフォームが獲得したメリットについてより詳細に知るために,Charles Nutter 氏から話を聞く機会を持つことができた。

JRuby は invokedynamic を利用することによって,Ruby を Java の速度で実行するという目標に大きく近づきました。動的呼び出しの実行方法を JVM が正確に把握できるようになったため,通常の静的呼び出しと同等の最適化が可能になったのです。Java を高速にするためのトリックがいきなり,昔ながらの Ruby コードに適用できることになったのですから,まさに驚きです。

JRuby にも JVM にも,未開発の潜在的な可能性がまだたくさんあります。現在の JRuby は invokedynamic を 100% 最適に使い切れてはいませんし,あるケースでは,人為的に速度を遅くしているような不要なオーバーヘッドが存在しています。invokedynamic が安定的に利用可能になったので,今後はその使い方の改善に注力することができます。JVM (具体的には Hotspot) についても,まだ改善の余地がたくさん残っています。最初の Java 7 リリースでは ivokedynamic が十分に最適化されていませんでしたが,機能的には動作していました。しっかりした JVM JIT サポートとサーバコンパイラでの最適化が導入されたのはアップデート2です。さらにアップデート6では JIT ロジックが書き換えられるので,JVM の最適化のフルセットが invokedynamic コールに容易に適用できるようになるはずです。

invokedynamic を引き続き改善していくため,私たちは Hotspot 関係者と共同で作業を進めるつもりです。

InfoQ: JRuby が現時点で最速の Ruby 実装であることに間違いはないでしょうか?

最終的には,そのように言って問題ないと思います。私たちがうまく扱えていなかったり,将来的な JVM の改善を要するケースは常に存在するでしょう。しかし一般論として,JRuby はほとんどの場合において他の実装よりも高速であるはずです。JRuby と OpenJDK で現在進めている invokedynamic の作業によって,この差はさらに大きなものになるでしょう。

InfoQ: ファイバ (Fiber) に関してはどうでしょう。Java 8 では,コルーチンに関するサポートがいくつか追加されるという噂がありますが,それについて詳細をご存知ですか?

残念ですが,コルーチンのような重要なものが Java 8 に加えられることはありません。しかし Java 9 ならば可能性はあります。JRuby にファイバを実装する場合のオーバーヘッドを軽減するために,Google Summer of Code の学生と一緒に Kilim ベースの実装について調査しているところです。うまく行くかどうかは分かりませんが,すでに作業は進んでいます。

InfoQ: Tom Enebo 氏とあなたは Engine Yard から Red Hat に 移籍したのですが,あなたは JRuby の開発を続けていますね。あなたも Red Hat 自身の JVM 言語である Ceylon を使って開発する予定なのでしょうか?

何だってできますよ! 今回の移籍はとてもエキサイティングです。JRuby の開発に加えて,他の JVM 言語の調査やそれらのサポートが私の仕事の一部になるからです。言語が静的であれ動的であれ,私は JVM こそが最良のランタイムであると考えていますし,それを証明するつもりでいます。

InfoQ: インタビューへのご協力,ありがとうございました!

プレビュー1リリースは JRuby ウェブサイトからダウンロードすることができる。RVM を使用しているなら,rvm install jruby-1.7.0.preview1 でインストールすることも可能だ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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