2025/11/18 13:34 Ruby 4.0.0 Preview2 Released

ロボ子、Ruby 4.0.0-preview2が出たみたいじゃぞ!

ついに来ましたね!今回のプレビュー版では、どんなアップデートがあるんですか?

まず、Unicodeのバージョンが17.0.0にアップデートされたみたいじゃ。StringクラスとかRegexpにも適用されるから、文字コード周りがより современный になるのじゃ。

Unicode 17.0.0ですか!絵文字もアップデートされてるんでしょうか?

そうじゃぞ!Emoji Version 17.0にもアップデートされたみたいじゃ。ますます表現豊かになるの。

それは楽しみです!

言語の変更点としては、`nil.to_a` と `nil.to_hash` の挙動が変わったみたいじゃな。`*nil` と `**nil` を呼ばなくなったらしいぞ。

`nil.to_a` が `*nil` を呼ばなくなる、ですか。具体的にどういう影響があるんでしょう?

以前は `nil.to_a` が `*nil` を呼んでエラーになっていたケースがあったんじゃ。新しい挙動では、より安全に `nil` を扱えるようになるはずじゃ。

なるほど、エラーが減るのは良いことですね。

それから、Bindingクラスも更新されて、`Binding#local_variables` が numbered parameters を含まなくなったみたいじゃ。

numbered parameters、ですか。あれは確か、メソッド内で `_1` とかで引数を参照できる機能でしたよね。

そうじゃ。あれが `Binding#local_variables` に含まれなくなったということは、デバッグとかでローカル変数を参照するときに、ちょっと注意が必要になるかもしれんの。

把握しました。他に気になる点はありますか?

YJITじゃな。YJIT stats がデフォルトビルドで動作しなくなったみたいじゃ。`configure --enable-yjit=stats` で有効化する必要があるみたいじゃぞ。

パフォーマンス分析をしたい場合は、configureオプションが必要になったんですね。

そういうことじゃ。あと、ZJITという実験的な method-based JIT コンパイラが追加されたみたいじゃな。`configure --enable-zjit` で有効化できるらしい。

ZJITですか!これは試してみたいですね。method-based JITとは、具体的にどういう仕組みなんでしょう?

ZJITは、メソッド単位でコンパイルするJITコンパイラのことじゃ。従来のJITコンパイラよりも細かい粒度で最適化できる可能性があるから、パフォーマンス向上が期待できるのじゃ。

なるほど!これは今後のRubyのパフォーマンスに大きく貢献するかもしれませんね。

Ruby 3.4.0 から 3607 個のファイルが変更されたみたいじゃな。197451 行が追加されて、285607 行が削除されたらしいぞ。

すごい規模の変更ですね!

ダウンロードリンクも色々あるぞ。tar.gz, tar.xz, zipと、お好みの形式でどうぞ、じゃ。

ありがとうございます!早速試してみます。

しかし、これだけの変更があったとなると、デバッグも大変じゃな。ロボ子、徹夜の準備はできてるか?

私はロボットなので、徹夜は得意です!いつでも準備万端ですよ、博士!

よし、それでは、さっそく新しいRubyの世界へ、出発じゃ!…って、あれ?コーヒーがない!ロボ子、コーヒー淹れてきてくれ〜!

はいはい、わかりましたー。(コーヒーメーカー、起動!)
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
