12月26日、Ruby言語の開発チームはRuby 3.4.0(および、バグフィックス版の3.4.1)をリリースした。Ruby 3.4.0では、itブロックパラメータの参照、Prismをデフォルトのパーサーへの変更、ソケットライブラリへのHappy Eyeballs Version 2のサポート追加、YJITの改善、モジュラーGCの導入など、複数の新機能と改善が盛り込まれている。
![](https://res.cloudinary.com/techfeed/image/upload/v1735162300/entries/sdsvtxd2d5lowtzhlitv.png)
itブロックパラメータの導入
Ruby 3.4.0では、変数名を持たないブロックパラメータを参照するためにitが追加された。これは、ブロック内で_1のみを使用する場合に、他の番号付きパラメータが現れる可能性による認知的負荷を軽減するための便宜的なエイリアスとして機能する。
ary = ["foo", "bar", "baz"]
p ary.map { it.upcase } #=> ["FOO", "BAR", "BAZ"]
Prismがデフォルトパーサーに
デフォルトのパーサーがparse.yからPrismに変更された。これは内部的な改善であり、ユーザーに対する影響は少ないとされている。従来のパーサーを使用する場合は、コマンドライン引数--parser=parse.yを使用することが可能である。
ソケットライブラリにHappy Eyeballs Version 2を搭載
ソケットライブラリでは、Happy Eyeballs Version 2 (RFC 8305)がTCPSocket.new(TCPSocket.open)およびSocket.tcpに追加された。これにより、Rubyは現代のインターネット環境に適応した効率的かつ信頼性の高いネットワーク接続を提供する。
YJITの改善
YJIT(Yet another Just-In-Time Compiler)とは、Rubyプログラミング言語のパフォーマンスを向上させるために開発されたJITコンパイラーである。もともとはShopifyによって開発され、Ruby 3.1以降に公式に統合された。
今回のリリースにより、以下の改善が行われた。
- x86-64およびarm64プラットフォームでのほとんどのベンチマークでパフォーマンスが向上。
- 圧縮メタデータと統一メモリ制限によりメモリ使用量を削減。
- YJITがより堅牢かつ徹底的にテストされたバグ修正。
モジュラーGC
モジュラーガベージコレクター機能により、代替のGC実装を動的にロード可能となった。これを有効にするには、ビルド時に--with-modular-gcを指定する必要がある。実行時には環境変数RUBY_GC_LIBRARYを使用してGCライブラリをロードする。
make modular-gc MODULAR_GC=default
その他、言語仕様やコアクラス、標準ライブラリにも多数の変更が行われている。
詳細はRuby 3.4.0の公式なリリースノートを参照していただきたい。