Ruby 3.4.0が予定通りクリスマスにリリースされました。
We are pleased to announce the release of Ruby 3.4.0. Ruby 3.4 adds
`it` block parameter reference,
change Prism as default parser, adds Happy Eyeballs Version 2 support
to socket library, improves YJIT,
adds Modular GC, and so on.https://t.co/3qWDK3R0GB
Merry Christmas!— 成瀬 (@nalsh) December 25, 2024
- リリース情報: Ruby 3.4.0 リリース
- リリース情報: Ruby 3.4.0 Released
-
Bundler最新バージョン: 2.6.2(注: 現在はRubygemsのリポジトリにあります)
- Rubygems最新バージョン: 3.6.2 -- セキュリティ修正も含まれていますので、Ruby 3.4.0以外のバージョンについてもアップデートしておきましょう
詳しくはリリース情報をご覧ください。
注: 現時点ではGitHubリポジトリのリリースにはまだ3.4.0は表示されていませんが、rbenvでのビルドとインストールはできました。
ただし現時点ではバージョン表示にdev
が付いていますが↓、これは既知の問題であり、v3.4.1で修正されるそうです。
🔗 更新の概要
詳しい変更内容は以下で参照できます。
- GitHubリリースノート :ruby/NEWS.md at master · ruby/ruby
Ruby 3.4.0のサポート終了日は現時点では表示されていませんが、今後更新されるはずです。
なお、Ruby 3.1.0は来年2025/03/31にサポート終了を迎える予定です(現時点)。
🔗 Ruby 3.4機能まとめ記事
jnchitoさんがRuby 3.4の新機能を記事に詳しくまとめてくださっています。
参考: サンプルコードでわかる!Ruby 3.4の主な新機能と変更点 Part 2・新機能と変更点の総まとめ #Rails - Qiita
参考: サンプルコードでわかる!Ruby 3.4の主な新機能と変更点 Part 1・文字列の凍結に関する変更点を理解する #Rails - Qiita
ko1さん+mameさんもRuby 3.4の新機能を記事に詳しくまとめてくださっています。
参考: プロと読み解くRuby 3.4 NEWS - STORES Product Blog
特にfrozen_string_literalの扱いについては最終的にどうなるかはまだわからないものの、今後も進展があるはずなので、今のうちに上の記事で現状を押さえておきましょう。
参考までに、手元のRuby 3.3.4環境でRUBYOPT=-W
を指定して実行してみたところ、capybaraとplaywright-ruby-clientで警告が表示されました。
# Ruby 3.3.4とRails 8.0.1
$ RUBYOPT=-W bin/rails test
/home/vscode/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/capybara-3.40.0/lib/capybara/session/config.rb:95: warning: URI::RFC3986_PARSER.make_regexp is obsolete. Use URI::RFC2396_PARSER.make_regexp explicitly.
/home/vscode/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/playwright-ruby-client-1.49.0/lib/playwright/channel_owners/page.rb:903: warning: method redefined; discarding old initialize
/home/vscode/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/playwright-ruby-client-1.49.0/lib/playwright/channel_owners/frame.rb:75: warning: previous definition of initialize was here
/home/vscode/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/playwright-ruby-client-1.49.0/lib/playwright/channel_owners/page.rb:909: warning: method redefined; discarding old initialize
/home/vscode/.rbenv/versions/3.3.6/lib/ruby/gems/3.3.0/gems/playwright-ruby-client-1.49.0/lib/playwright/channel_owners/frame.rb:81: warning: previous definition of initialize was here
Running 56 tests in parallel using 8 processes
# 略
Ruby 3.4に導入された帯域外ガベージコレクタについては以下の記事もどうぞ。
🔗 gems
default gemsとbundled gemはしばしば変更・更新されます。詳しくは以下をご覧ください。
参考: standard librariesとdefault gemsとbundled gemsの違い - ESM アジャイル事業部 開発者ブログ
Ruby 3.4公式のライブラリ情報(gemも含む)は以下で参照できます。
参考: standard_library - Documentation for Ruby 3.4
For Ruby 3.4, I did a revamp on Ruby's official documentation for default/bundled gems. Now it should be easy to link to their associated documentation and/or GitHub repos:https://t.co/t57WdWUs8X
— Stan Lo (@_st0012) December 24, 2024
Rubyバージョンごとのdefault gemsとbundled gem編成を見るには、以下のstdgems.orgが便利です(現時点ではまだ3.4.0は反映されていません)。
参考: Standard Gems -- stdgems.org -- default gemsとbundled gemのリストをRubyバージョンごとに確認できます。
🔗 rbenv
rbenvで使われるruby-buildでは、以下で既にRuby 3.4.0が利用可能になっています。
🔗 Docker Hub
現時点のDocker Hubには、まだRuby 3.4.0は追加されていません。
- Docker Hub: ruby
🔗 Heroku
現時点では、HerokuランタイムでRuby 3.4.0はまだサポートされていません。
参考: Heroku Ruby Support | Heroku Dev Center