Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Ruby 3.4.0がリリースされました(続報あり)

Ruby 3.4.0が予定通りクリスマスにリリースされました。

  • リリース情報: 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で修正されるそうです。

追記(2024/12/26)

上記のバージョン表記のみを修正したRuby 3.4.1がリリースされました。

参考: Ruby 3.4.1 リリース
参考: Ruby 3.4.1 Released


こちらのイベント↓、まだ空きがあるそうです。

🔗 更新の概要

詳しい変更内容は以下で参照できます。

Ruby 3.4.0のサポート終了日は現時点では表示されていませんが、今後更新されるはずです。

参考: Ruby Maintenance Branches


Ruby Maintenance Branchesより

なお、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に導入された帯域外ガベージコレクタについては以下の記事もどうぞ。

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

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が利用可能になっています。

rbenv/ruby-build - GitHub

🔗 Docker Hub

現時点のDocker Hubには、まだRuby 3.4.0は追加されていません。

🔗 Heroku

現時点では、HerokuランタイムでRuby 3.4.0はまだサポートされていません。

参考: Heroku Ruby Support | Heroku Dev Center

heroku/heroku-buildpack-ruby - GitHub

🔗 (追記2024/12/26)devcontainer

現時点では、devcontainerはまだRuby 3.4.xに対応していません。

参考: Package devcontainer/images/ruby

rails/devcontainer - GitHub

関連記事

Ruby 3.3.2がリリースされました

M1 MacでRuby 2.4〜3.2をrbenvでビルドする最小限のセットアップを全部調べた


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。