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

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

Ruby 3.3.0がリリースされました。

詳しくはリリース情報をご覧ください。

ruby-buildでは、リリース直後から3.3.0が利用可能になっています。

rbenv/ruby-build - GitHub

なお、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のコアメンバーによる非常に詳しい解説です。

🔗 jnchitoさんによるサンプルコードでのRuby 3.3.0解説

サンプルコードで実際に新機能を確かめられます。bundled gemsとdefault gemsの違いについても解説されています。

🔗 zverokさんによる英語版CHANGELOG

ko1さんとmameさんによる解説と近い内容の英語版解説で、パフォーマンスや実装ではなく言語やライブラリの新機能や変更点が中心です。切り口が多少異なっている部分もあるので、読み比べてみるとよいでしょう。

🔗 参考: 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): 翻訳記事を公開しました。

Ruby 3.3で大幅に強化されたIRBの解説(翻訳)

🔗 bundled gemsとdefault gems

参考

bundled gemsとdefault gemsの違いについては以下の記事をご覧ください。

また、Rubyバージョンごとの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にできています。

関連記事

Rubyパーサーを一新するYARPプロジェクトの全容と将来(翻訳)


CONTACT

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