Ruby 3.4.0 preview2 リリース
Posted by naruse on 7 Oct 2024
Translated by motohiro-mm
Ruby 3.4.0-preview2がリリースされました。
Prism
デフォルトのパーサーを parse.y から Prism に変更しました。 [Feature #20564]
言語機能の変更
-
frozen_string_literalのコメントがないファイルで文字列リテラルが凍結されたように振る舞うようになりました。 文字列リテラルが破壊的に変更された場合、非推奨の警告が表示されます。 この警告は-W:deprecatedまたはWarning[:deprecated] = trueで有効にすることができます。 コマンドライン引数で--disable-frozen-string-literalを指定してRubyを実行すると、この変更を無効にできます。 [Feature #20205] -
itがブロックパラメータを参照するために追加されました。 [Feature #18980] -
メソッド呼び出し時のnilのキーワードスプラットが使えるようになりました。
**nilは**{}と同様に扱われ、キーワードは渡されず、変換メソッドも呼び出されません。 [Bug #20064] -
インデックスにブロックを渡せなくなりました。 [Bug #19918]
-
インデックスにキーワード引数が使えなくなりました。 [Bug #20218]
コアクラスの更新
注:特に重要なクラスアップデートのみを掲載しています。
-
Exception
- Exception#set_backtraceが
Thread::Backtrace::Locationの配列を受け付けるようになりました。Kernel#raiseとThread#raise、Fiber#raiseも同様に新しいフォーマットを受け付けます。[Feature #13557]
- Exception#set_backtraceが
-
Range
- rangeが列挙可能でない場合、
Range#sizeがTypeErrorを発生させるようになりました。[Misc #18984]
- rangeが列挙可能でない場合、
互換性に関する変更
注:バグフィックスは掲載していません。
- エラーメッセージとバックトレースの表示が変更されました。
- 冒頭の引用符にはバッククォートの代わりにシングルクォートを使用します。 [Feature #16495]
- メソッド名の前にクラス名を表示します(クラスが永続的な名前を持つ場合のみ)。 [Feature #19117]
Kernel#caller、Thread::Backtrace::Locationのメソッドなどがそれに応じて変更されました。
Old: test.rb:1:in `foo': undefined method `time' for an instance of Integer from test.rb:2:in `<main>' New: test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer from test.rb:2:in '<main>' Hash#inspectの出力を変更しました。 [Bug #20433]- キーがシンボルの場合は、コロン形式を使用するようになりました。
"{user: 1}" - キーがシンボルでない場合は、
=>の前後にスペースを追加します。'{"user" => 1}'以前:'{"user"=>1}'
- キーがシンボルの場合は、コロン形式を使用するようになりました。
C API更新
rb_newobjとrb_newobj_of(および対応するマクロRB_NEWOBJ、RB_NEWOBJ_OF、NEWOBJ、NEWOBJ_OF)が削除されました。 [Feature #20265]- 廃止予定だった関数
rb_gc_force_recycleが削除されました。 [Feature #18290]
実装の改善
Array#eachがRubyで書き直され、パフォーマンスが改善されました。 [Feature #20182].
その他の変更
-
渡されたブロックを使用しないメソッドにブロックを渡すと、verboseモード (
-w) で警告が表示されるようになりました。 [Feature #15554] -
String.freezeやInteger#+のようなインタプリタやJITによって特別に最適化されたコアメソッドを再定義すると、パフォーマンスクラスの警告(-W:performanceまたはWarning[:performance] = true)が出るようになりました。 [Feature #20429]
default gemやbundled gemの詳細については、LoggerなどのGitHubのリリースやchangelogを参照してください。
詳細はNEWS かcommit logsを参照してください。
これらの変更により、Ruby 3.3.0から4422 ファイルが変更され、163889 行が追加され、 243380 行が削除されました!
ダウンロード
-
https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview2.tar.gz
SIZE: 22722332 SHA1: c23265acf6c07b4c1df1e41eebf8b4cf2f25b97b SHA256: 443cd7ec54ade4786bc974ce9f5d49f172a60f8edc84b597b7fe2bd2a94b8371 SHA512: 0946d256587597bdf13437a50f7a3298c151133edea161a1c4806a04dcbd8c2e8a7fd617f3eda16c5c05f6e6346317562cc30ba67698f1fdd92237c03bdbd23e -
https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview2.tar.xz
SIZE: 16878876 SHA1: dbff404b969012702dc500cac72f4d6b3822068e SHA256: 626bf4fe952323c15ec9a8999f470ec136ef91c0fc34c484646aaaa9a0b62ca7 SHA512: f23257896a35d3a581cbf5e8c94fe28e45725e39608a7669f47f31085338b1b4929a4db40d826d8fee628afb97b0c25b2f9e7bda4cd42e80c1208c46caf54265 -
https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-preview2.zip
SIZE: 28101194 SHA1: 479bd223bca3225fb3a15984e3eae4efb9a40189 SHA256: e00a6fbf6f9e25a725711a8aac7e38be6bed61de4db9862a405172b96bf38b5b SHA512: 0d9ee1c41920e4d594b0f2c40d02339b4e9a2cd5232f5ee914cab5a685cb4a2279fbbfd8fbad40ef0a53866db4e1de96068c62580ede6d8fab02550393bcbe81
Ruby とは
Rubyはまつもとゆきひろ (Matz) によって1993年に開発が始められ、今もオープンソースソフトウェアとして開発が続けられています。Rubyは様々なプラットフォームで動き、世界中で、特にWebアプリケーション開発のために使われています。
最近のニュース
Ruby 4.0.0 リリース
Ruby 4.0.0 が公開されました。 Ruby 4.0 には “Ruby Box”、”ZJIT” ほか多数の改善が含まれています。
Posted by naruse on 25 Dec 2025
サイトのアイデンティティの再設計
サイトの包括的なデザインのアップデートを発表できることを嬉しく思います。今回の更新ではTaeko Akatsukaさんにデザインを担当していただきました。
Posted by Hiroshi SHIBATA on 22 Dec 2025
Ruby 4.0.0 preview3 リリース
Ruby 4.0.0-preview3 が公開されました。
Posted by naruse on 18 Dec 2025
Ruby 4.0.0 preview2 リリース
Ruby 4.0.0-preview2 が公開されました。Ruby 4.0では、Unicodeバージョンの17.0.0へのアップデートなど様々な改善が行われています。
Posted by naruse on 17 Nov 2025