Ruby 3.1正式リリース。Shopify開発のJITコンパイラ「YJIT」をメインラインにマージ

2022年1月4日

Ruby開発チームは、2021年12月25日にRuby 3.1.0の正式リリースを発表しました

Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっています。今回も一昨年のRuby 3.0に続いて新バージョンが登場しました。

fig

Ruby 3.1でもっとも注目すべき新機能は、JITコンパイラの「YJIT」がメインラインにマージされたことでしょう。

大規模なRailsアプリでの性能向上を目指したYJIT

RubyのJITコンパイラとしてはRuby 2.6から登場した「MJIT」がありますが、今回Ruby 3.1でマージされたYJITはMJITとは別のものです。

YJITは、ECサイト構築サービスで知られるShopifyが開発を進めてきたもので、Shopify自身が構築している大規模なRailsアプリケーションにおいて、より高い性能向上を目指して開発されてきました。

同社のブログ「YJIT: Building a New JIT Compiler for CRuby」によると、YJITはウォームアップが非常に高速で、どのベンチマークでも1回のイテレーションでほぼピーク性能に達し、Ruby標準のインタプリタと比べてrailsbenchで20%、liquidテンプレートレンダリングで39%、Active Recordで37%の性能向上を達成しているとのことです。

YJITは現時点でx86-64上のUnix系プラットフォームに対応。まだ実験的機能となっておりデフォルトでは無効化されています。今後の進化に期待したいところです。

行ブレイクポイント設定での速度低下がない新デバッガ

Ruby 3.1には新しいデバッガとしてdebug.gemが同梱されました。

行ブレイクポイントを設定しても速度低下がきょくりょくないように改善されており、リモートでバッグに対応。マルチプロセスやマルチスレッドプログラムのデバッグに対応。Visual Studio CodeやChrome DevToolsなどと接続できるなどの機能を備えています。

また、Ruby 3.0から登場した、型情報を記述するための「RBS言語」が拡張されました。

RBS言語は、これで型情報のコードを記述しておくとRubyのコード中のクラスやモジュールに対して型情報を与えることができる、というものです。

今回、ジェネリクスのbounded型が導入されたことと、ジェネリックな型エイリアスが書けるようになったことが拡張されました。

今後、RBS言語のコードを生成する静的型推論ツールのTypeProfがこれに対応することで、この拡張が意味を持つようになるとのことです。

そのほかの新機能は公式ブログやクックパッド開発者ブログの「プロと読み解く Ruby 3.1 NEWS」などをご覧ください。

このエントリーをはてなブックマークに追加
follow us in feedly




カテゴリ

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed


最新記事10本