Ruby 3.4が「it」、モジュラーガベージコレクタ、改善されたYJITと共にリリースされました
Ruby、自由なオープンソースの高水準汎用プログラミング言語が、今日クリスマスに新しい3.4.0(その後、クイックフィックスとして3.4.1)をリリースしました!
このリリースでは、itブロックパラメータ参照が導入されました。これは_1と非常に似た動作をします。機能リクエストは次のように説明されています:
itは、メソッドではなく、getlocal命令の特別なケースとして実装されています。引数なしのitは、定義されている場合は_1または通常のローカル変数と見なされます。itは、位置引数、キーワード引数、ブロック引数のいずれかがある場合のみ、メソッド呼び出しとして考慮されます。
Ruby 3.4では、ソケットライブラリにハッピーアイボールズバージョン2(RFC 8305)が追加されました。これにより、特定のプロトコルやIPアドレスが遅延または利用できない場合でも、接続の遅延を最小限に抑えることが保証されます。
この機能はデフォルトで有効です。ただし、キーワード引数fast_fallback: falseを使用してメソッドごとに無効にすることも、環境変数RUBY_TCP_NO_FAST_FALLBACK=1を設定するか、Socket.tcp_fast_fallback=falseを呼び出してグローバルに無効にすることもできます。
このリリースでは、モジュール式ガベージコレクタ (GC) も導入されました。それは、ビルド時に --with-modular-gc 設定オプションを使用して有効にすることができます。ランタイムで読み込むには、環境変数 RUBY_GC_LIBRARY を使用してください。
組み込みのガーベジコレクタは分割されました。ライブラリとして構築でき、環境変数RUBY_GC_LIBRARY=defaultで有効にすることができます。また、MMTkに基づく実験的なGCライブラリもあり、これはRUBY_GC_LIBRARY=mmtkで有効にすることができます。
新しいリリースでは、デフォルトのパーサーがparse.yからPrismに切り替えられました。前のパーサーは--parser=parse.yコマンドライン引数を使用することで利用可能です。
YJITコンパイラは、x86-64およびarm64プラットフォームでのパフォーマンスが向上し、圧縮されたメタデータと統一されたメモリ制限によってメモリ使用量が減少しました。
新しい --yjit-mem-size コマンドオプションが追加され、デフォルト128MiBのメモリ制限を統一し、YJITメモリ使用量を追跡できるようになりました。また、--yjit-log オプションを使用すると、コンパイルされた内容を追跡するためのコンパイルログが有効になります。
Ruby 3.4.0 のその他の変更点は次のとおりです:
- メソッドを呼び出すときにキーワードスプラッティング
nilがサポートされるようになりました。 - インデックスではブロック渡しおよびキーワード引数はもはや許可されていません。
GC.configを追加して、ガーベジコレクタの設定変数を設定できるようにします。rgengc_allow_full_markGC 設定パラメータを紹介します。Ractor.main?、Ractor.[]、およびRactor.[]=を追加します。
他にもコアクラス、標準ライブラリ、APIの更新、バグ修正があります。詳細については公式のリリースノートを参照してください。
Ruby 3.4.1のインストール方法
RubyはApp Center(またはUbuntu Software)で公式のSnapパッケージとして利用可能ですが、執筆時点では最新に更新されていません。
待てない場合は、Snapまたはサードパーティのパッケージマネージャーを使用する代わりに、以下のリンクボタンからソースターボールをダウンロードできます:
Rubyをダウンロード(tarball): https://cache.ruby-lang.org/pub/ruby/
それでは、ソースからビルドする方法についての段階を追ったガイド(方法4)です。

