Ruby 3.1正式リリース。Shopify開発のJITコンパイラ「YJIT」をメインラインにマージ
Ruby開発チームは、2021年12月25日にRuby 3.1.0の正式リリースを発表しました。
Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっています。今回も一昨年のRuby 3.0に続いて新バージョンが登場しました。
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」などをご覧ください。
あわせて読みたい
Amazon CTOのVogels氏が予言する、2022年に注目すべきテクノロジー5選。AI支援による開発、あらゆる場所がエッジに、低軌道衛星によるアプリの変革など
≪前の記事
Publickey年間人気記事ランキング2021。1位はExcelがチューリング完全に、2位はPower Automate Desktopの無料提供開始、3位はOracle JDKが再び無料に