Ruby 3.4正式リリース。YJITコンパイラの速度向上とメモリ削減、新パーサPrismがデフォルトに
今回は「Ruby 3.4正式リリース。YJITコンパイラの速度向上とメモリ削減、新パーサPrismがデフォルトに」についてご紹介します。
関連ワード (名前、意図、採用等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
Ruby開発チームは2024年12月25日、Ruby 3.4.0の正式リリースを発表しました。
Rubyは毎年12月25日に新バージョンをリリースすることが恒例となっており、2024年も予定通りに新バージョンが登場しました。
YJITコンパイラの速度向上とメモリ削減
Ruby 3.4ではJITコンパイラとして搭載されているYJITの速度向上と使用メモリ削減が実現されました。
Ruby 3.1でメインラインにマージされたYJITコンパイラは、ECサイト構築サービスを提供するShopifyが、大規模なRailsアプリケーションにおいてより高い性能向上を目指して開発したJITコンパイラです。
Ruby 3.4でのYJITは、x86-64とarm64の両方のプラットフォームにおいてほとんどのベンチマークのパフォーマンスが向上したこと、メタデータの圧縮と統一的なメモリ使用量制限によりメモリ使用量が削減されたことが報告されています。
「it」の追加
構文における新機能としては、ブロックパラメータに名前をつけずに参照する「it」が追加されました。下記のように、ブロック内で「_1」のみを使用する意図がある場合に、その代替として「it」を用いて分かりやすく記述できるようになりました。
パーサがPrismに、ガベージコレクタの動的ロード
また、ユーザーにはほとんど影響がない変更として、デフォルトのパーサがPrismに変更されました。
Rubyのパーサとは、Rubyのコードを解析し、Rubyランタイムで実行しやすい形式に変換するための処理などを担っています。
それ以外にも、Ruby関連ツールでRubyのコードを解析する場合、例えばコードエディタでRubyのコードを補完するための書きかけのコードを解析する処理や、Rubyのコードのフォーマットを整えるなどの関連ツールやライブラリでのRubyコードの解析、Javaで実装されたRubyであるJRubyなどさまざまなRubyの実装におけるコードの解析など、さまざまな場面でパーサが使われています。
Prismはこれまでのパーサとの互換性を保ちつつ、書きかけのコードのような不完全なコードであっても可能な限り解析できるエラートレラント性、さまざまな実装において利用しやすいような移植性、長期的に使い続けられるようなメンテナンス性のそれぞれを十分に満たすように開発が行われてきました。
そしてRuby 3.4でデフォルトのパーサとして採用されたのです。これによりRuby関連ツールやさまざまなRuby実装などにおいて今後の進化が容易になったと言えるでしょう。
その他の新機能として、Modular GC 機能によりRuby標準とは異なるガベージコレクタの実装を動的にロードできるようになりました。