例年通りならあと 10 日もせずに新しいバージョンの Ruby がリリースされる。
Ruby 3.4 系の次だから当然 Ruby 3.5.0 だろうと思ったら,どうやら 4.0.0 になるらしい。
プレビュー版として,2025 年 4 月に 3.5.0-preview1 がリリースされていた が,その次のプレビュー版として 11 月に 4.0.0-preview2 がリリースされた ので気づいた。
NEWS を見ても,なにかスゴい目玉機能とか,大きな非互換性があるようには見えない。
なぜ 4 なのだろう?
Ruby のバージョンの付け方はよく分からない。
大昔の話になるけど,Ruby 1.8 系から 1.9 系への変化は非常に大きくて,その非互換性ゆえに,たぶん世界中で「ぎゃ!」となった。
とくに String が根本的に変わった1。この変化自体は望ましいもので,このときの「ぎゃ!」を乗り越えたからこそ今日の Ruby があると思っている。
いずれにしても,このとき多くの人が「新バージョンは 2.0 だろう」と思ったが,1.9 としてリリースされた。
4 にするのはいいんだけど,リリースの前月になって突然決めて2,しかも ruby-lang.org でのアナウンスもとくに無い,というのはどうかなあ。
Gemfile や gemspec で Ruby バージョンを ~> 3.2 みたいな感じで縛ってたら死ぬよね。
4.0 にすることが最初に発表されたのがいつどこなのか分からないけど,RubyWorld Conference 2025 の二日目(2025/11/7)の Matz 基調講演で出ていたようだ。
講演資料 を見ると,
Not for new features
とあり,続けて
But for celebrate 30 years of
Ruby community
などとあった。
えっ……バージョンがいきなり飛んだのは新機能のためのじゃなくて Ruby 30 周年を記念してってこと?!
Ruby のコミッターの方々は Qiita には記事を(あまり?)書かれないようなので,Qiita しか見てない(私のような)人には,Ruby の新情報は届きにくい。
Ruby が 4.0 になる話も,クリスマスにリリースされて初めて気づく人,けっこういるんじゃないかなあ。
追記
以下の資料によれば,Ruby 4.0 でネームスペースが導入されるという。
- Rubyは「みんなのプロジェクト」 まつもとゆきひろ氏が振り返るRubyとコミュニティーの30年(2025-12-04)
- Ruby4.0でリリースされるNameSpaceの機能を整理する (2025-11-20)
ネームスペース(名前空間)というと,モジュールを使うやり方がすぐに浮かぶが,新しい仕組みは全く違い,Ruby::Box というクラスを使うらしい。
これを使うと,なんと異なるバージョンの gem を同時に使うことすらできるという。
けっこう大きな話なのでは?
資料の日付からすると確度の高い話のように思える。
しかし,上述の NEWS や(プレビュー版の)リリースノートには一切書かれていない。
どうなってんの?
とりあえず 4.0.0-preview2 をインストールしてみたら,Ruby::Box というクラスは存在していた。
あるんだ……。
(試しに使おうとしたら segmentation fault で死んだけど)