Ruby 3.3.0がリリースされました。
A Christmas gift from the Ruby team: Ruby 3.3.0 is out! https://t.co/dtHjtr2C0X
— Ruby on Rails (@rails) December 25, 2023
- リリース情報: Ruby 3.3.0 リリース
詳しくはリリース情報をご覧ください。
ruby-buildでは、リリース直後から3.3.0が利用可能になっています。
なお、Docker HubのRuby公式の3.3.0イメージは現時点ではまだリリースされていません(追記2023/12/27: その後Docker Hubでも3.3.0イメージが公開されました)。
参考: ruby - Official Image | Docker Hub
🔗 主な更新
Ruby 3.3.0では本体および周辺機能のパフォーマンス改善とリファクタリングが中心になっており、Ruby本体における言語仕様追加やbreaking changeはありません(今後に備えたwarningの追加はあります)。
更新の詳細については、以下の3つの記事がとても参考になります。
🔗 ko1さんとmameさんによるRuby 3.3.0解説
Rubyのコアメンバーによる非常に詳しい解説です。
“プロと読み解くRuby 3.3 NEWS - STORES Product Blog” https://t.co/tzIM8fIPKh
— sue445 (@sue445) December 25, 2023
🔗 jnchitoさんによるサンプルコードでのRuby 3.3.0解説
サンプルコードで実際に新機能を確かめられます。bundled gemsとdefault gemsの違いについても解説されています。
昨日公開したQiita記事です。本日リリース予定のRuby 3.3について調べたことをまとめてみました🎄
今年はさらっと書いて終わるつもりでしたが、いろいろ調べてたら結局丸2日かかりました😂サンプルコードでわかる!Ruby 3.3の主な新機能と変更点 https://t.co/BQKulgpZVF
— Junichi Ito (伊藤淳一) (@jnchito) December 24, 2023
🔗 zverokさんによる英語版CHANGELOG
ko1さんとmameさんによる解説と近い内容の英語版解説で、パフォーマンスや実装ではなく言語やライブラリの新機能や変更点が中心です。切り口が多少異なっている部分もあるので、読み比べてみるとよいでしょう。
This year’s installment of the ″Ruby Changes″ (dedicated to Ruby 3.3) is online: https://t.co/R1KYBpZiHQ pic.twitter.com/JcTKmRpXPJ
— 🇺🇦 пан zverok у ЗСУ (@zverok) December 25, 2023
🔗 参考: IRBのオートコンプリート強化について
先月に上のプルリクで導入された、prismとRBSによるIRBオートコンプリート強化(ウォッチ20231127)を有効にするために~/.irbrcにIRB.conf[:COMPLETOR] = :type
を設定していると、Ruby 3.3.0でIRBを実行したときに以下のエラーが表示されます(IRBそのものは引き続き実行可能です)。
$ irb
TypeCompletor requires `gem repl_type_completor`: cannot load such file -- repl_type_completor
irb(main):001>
メッセージに従ってgem install repl_type_completor
を実行するか、.irbrcからIRB.conf[:COMPLETOR] = :type
を削除すれば、このエラーは表示されなくなります。
$ gem install repl_type_completor
Fetching repl_type_completor-0.1.2.gem
Successfully installed repl_type_completor-0.1.2
1 gem installed
$ irb
irb(main):001>
IRBメンテナーのst0012さんによると、#708の機能は現時点では実験段階なので、依存関係の自動解決はまだ行っていないとのことでした。
なお、Ruby 3.3.0でのIRB強化点についてst0012さんが以下の記事を公開しています(翻訳は近日公開予定)。
参考: Unveiling the big leap in Ruby 3.3’s IRB | Rails at Scale
- 追記(2023/12/27): 翻訳記事を公開しました。
🔗 bundled gemsとdefault gems
次期バージョン(Ruby 3.4)でbundled gemになる予定のgemをrequire
すると警告を発するようになりました。今回は以下のgemが対象です。
- abbrev
- base64
- bigdecimal
- csv
- drb
- getoptlong
- mutex_m
- nkf
- observer
- racc
- resolv-replace
- rinda
- syslog
Railsなどbundlerを使うアプリの場合は、bundled gemになったgemをGemfileに明示的に追加する必要があります。
🔗 default gemsに追加されたgem
- prism 0.15.1
🔗 default gems から bundled gems に変更されたgem
- racc 1.7.3
🔗 3.3.0インストール直後のgemリスト
gem list
*** LOCAL GEMS ***
abbrev (default: 0.1.2)
base64 (default: 0.2.0)
benchmark (default: 0.3.0)
bigdecimal (default: 3.1.5)
bundler (default: 2.5.3)
cgi (default: 0.4.1)
csv (default: 3.2.8)
date (default: 3.3.4)
debug (1.9.1)
delegate (default: 0.3.1)
did_you_mean (default: 1.6.3)
digest (default: 3.1.1)
drb (default: 2.2.0)
english (default: 0.8.0)
erb (default: 4.0.3)
error_highlight (default: 0.6.0)
etc (default: 1.4.3)
fcntl (default: 1.1.0)
fiddle (default: 1.1.2)
fileutils (default: 1.7.2)
find (default: 0.2.0)
forwardable (default: 1.3.3)
getoptlong (default: 0.2.1)
io-console (default: 0.7.1)
io-nonblock (default: 0.3.0)
io-wait (default: 0.3.1)
ipaddr (default: 1.2.6)
irb (default: 1.11.0)
json (default: 2.7.1)
logger (default: 1.6.0)
matrix (0.4.2)
minitest (5.20.0)
mutex_m (default: 0.2.0)
net-ftp (0.3.3)
net-http (default: 0.4.0)
net-imap (0.4.9)
net-pop (0.1.2)
net-protocol (default: 0.2.2)
net-smtp (0.4.0)
nkf (default: 0.1.3)
observer (default: 0.1.2)
open-uri (default: 0.4.1)
open3 (default: 0.2.1)
openssl (default: 3.2.0)
optparse (default: 0.4.0)
ostruct (default: 0.6.0)
pathname (default: 0.3.0)
power_assert (2.0.3)
pp (default: 0.5.0)
prettyprint (default: 0.2.0)
prime (0.1.2)
prism (default: 0.19.0)
pstore (default: 0.1.3)
psych (default: 5.1.2)
racc (1.7.3)
rake (13.1.0)
rbs (3.4.0)
rdoc (default: 6.6.2)
readline (default: 0.0.4)
reline (default: 0.4.1)
resolv (default: 0.3.0)
resolv-replace (default: 0.1.1)
rexml (3.2.6)
rinda (default: 0.2.0)
rss (0.3.0)
ruby2_keywords (default: 0.0.5)
securerandom (default: 0.3.1)
set (default: 1.1.0)
shellwords (default: 0.2.0)
singleton (default: 0.2.0)
stringio (default: 3.1.0)
strscan (default: 3.0.7)
syntax_suggest (default: 2.0.0)
syslog (default: 0.1.2)
tempfile (default: 0.2.1)
test-unit (3.6.1)
time (default: 0.3.0)
timeout (default: 0.4.1)
tmpdir (default: 0.2.0)
tsort (default: 0.2.0)
typeprof (0.21.9)
un (default: 0.3.0)
uri (default: 0.13.0)
weakref (default: 0.1.3)
yaml (default: 0.3.0)
zlib (default: 3.1.0)
おまけ
既にRuby 3.4.0-devがruby-buildにできています。
Have you upgraded your Ruby to 3.4 yet? pic.twitter.com/d5JcW6gm0j
— k0kubun (@k0kubun) December 25, 2023
参考
bundled gemsとdefault gemsの違いについては以下の記事をご覧ください。
また、Rubyバージョンごとのbundled gemsやdefault gemsのリストは以下のサイトで調べられます。