Skip to content

Ruby 3.0 対応 #2458

@ima1zumi

Description

@ima1zumi

3.0 の変更点をまとめてチェックリストにしました。 叩き台として作ったので自由に編集してください。

builtin library はあまり見ていません。また、issue 執筆時点で対応済のものがあるかどうかはほとんど確認していません。

作業が終わったらこちらの issue にリンク or コメントするか、直接この issue を編集していただけるとありがたいです 🙏

言語の変更

  • キーワード引数の分離 Feature #14183
  • ブロックがキーワード引数を受け取る場合の意味の整理 Feature #16166
  • 引数委譲の記法の拡張 Feature #16378
  • パターンマッチが正式機能になった Feature #17260
  • 右代入が導入された (EXPERIMENTAL) Feature #17260
  • 1行パターンマッチが再設計された (EXPERIMENTAL) Feature #17371
  • findパターンが追加された (EXPERIMENTAL) Feature #16828
  • 一行メソッド定義が追加された (EXPERIMENTAL) Feature #16746
  • 式展開を含む文字列リテラルは、frozen-string-literal: true で freeze しなくなった Feature #17104
    • 書くことなさそう
  • RBSの追加
  • TypeProfの追加
  • deprecated警告がデフォルトで出ないことになった Feature #16345
  • $SAFE$KCODE の削除 Feature #16131 Feature #17136
  • シングルトンクラス定義の中での yield が禁止になった Feature #15575
    • 書くことなさそう
  • スーパークラスでクラス変数を再定義してしまったとき、サブクラスで参照したときに例外が出るようになった Bug #14541
    • 書くことなさそう
  • 番号指定パラメータへの代入が警告から禁止になった

コマンドラインオプション

組み込みライブラリ

  • Array のサブクラスのメソッドが、サブクラスではなく、Array クラスのオブジェクトを返すようになった Bug #6087
  • String のサブクラスのメソッドが、サブクラスではなく、String クラスのオブジェクトを返すようになった Bug #10845
  • Modified Binding#eval Kernel#eval Bug #4352 Bug #17419
    • 引数を受け取ったときの挙動が変更になった
  • Modified ConditionVariable#wait Feature #16786
  • Modified Dir.glob Dir.[] Feature #8709
    • デフォルトでソートされるようになった
  • Add ENV.except Feature #15822
  • Modified ENV Feature #12650
    • ロケールによらず UTF-8 になった
  • Add IBM720 Encoding Feature #16233
  • Windows 環境でのデフォルトの Encoding.default_externalUTF-8 になった Feature #16604
  • Fiber Scheduler が導入された
  • Add GC.auto_compact = true Feature #17176
  • Modified Hash#transform_keys and Hash#transform_keys! Feature #16274
  • Add Hash#except Feature #15822
  • Modified IO#nonblock? Feature #16786
    • デフォルトで true を返すようになった
  • Modified IO#wait_readable, IO#wait_writable, IO#read, IO#write and other related methods Feature #16786
  • Modified Kernel#clone
  • Modified Kernel#lambda
  • Modified Kernel.sleep
  • Modified Module#include and Module#prepend
  • Modified Module#attr_accessor, Module#attr_reader, Module#attr_writer and Module#attr Feature #17314
  • Modified Module#alias_method Feature #17314
  • Modified Proc#== and Proc#eql? Feature #14267
  • Modified Queue#pop, SizedQueue#push Feature #16786
  • Add Ractor Class
  • Modified Random::DEFAULT
  • Modified Symbol#to_proc
    • lambda を返すようになった
  • Add Symbol#name
    • frozen string literal を返す
  • Add Fiber.set_scheduler Fiber.scheduler Feature #16786
  • Add Fiber.blocking? Feature #16786
  • Add Thread#join Feature #16786
  • Add Thread.ignore_deadlock Bug #13768
  • Modified Warning#warn Feature #17122

標準添付ライブラリ

ruby/NEWS.md at v3_0_0 · ruby/ruby

非互換

  • RegexpRange オブジェクトが freeze されるようになった Feature #8948 Feature #16377 Feature #15504
  • Hash#each が常に2要素配列をyieldするようになった Bug #12706
    • 最適化のバグ修正。書くことないかも
  • 標準出力がクローズされた後に出力しようとしてもEPIPE例外を投げないようになった Bug #14413
  • 定数の TRUEFALSENIL が定義されないようになった
    • Object クラス
  • Integer#zero? が改めて定義された Misc #16961
    • 今までは Numeric#zero? を使っていた
  • Enumerable#grep Enumerable#grep_v に正規表現を渡してブロックを渡さなかった場合、 $~ を更新しなくなった Bug #17030
  • open-uri が Kernel#open を上書き定義しなくなった Misc #15893
    • 今後は URI.open を使う
  • SortedSet が削除された
    • 別の gem に分離された

標準添付ライブラリの非互換

  • 以下の gem が stdlib から default gems になり、rubygems.org からアップデート可能になった
    • 書くことないかも
English
abbrev
base64
drb
debug
erb
find
net-ftp
net-http
net-imap
net-protocol
open-uri
optparse
pp
prettyprint
resolv-replace
resolv
rinda
set
securerandom
shellwords
tempfile
tmpdir
time
tsort
un
weakref
digest
io-nonblock
io-wait
nkf
pathname
syslog
win32ole
  • 以下の extensions が stdlib から default gems になった
    • 書くことないかも
digest
io-nonblock
io-wait
nkf
pathname
syslog
win32ole
  • net-telnet と xmlrpc が bundled gem ではなくなった
  • SDBM が standard library ではなくなった
  • WEBrick が standard library ではなくなった

C API

ruby/NEWS.md at v3_0_0 · ruby/ruby

静的解析

ruby/NEWS.md at v3_0_0 · ruby/ruby

その他の変更点

ruby/NEWS.md at v3_0_0 · ruby/ruby

ref

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions