🚀

Ruby 3.3 から Regexp.new の第三引数が削除される

2024/01/13に公開

あんまり影響はないと思うんですが Ruby 3.3 から Regexp.new の第三引数が削除されます。
第三引数は元々『"n", "N" が与えられた時には、生成された正規表現のエンコーディングは ASCII-8BIT になります。それ以外の指定は警告を出力します。』みたいな挙動だったんですが Bug #18797: Third argument to Regexp.new is a bit broken でこの引数はもう不要と判断されて削除される運びとなりました。

この対応は非互換になるので Ruby 3.2 では警告が出るように対応され、Ruby 3.3 で正式に削除された運びになります。

Regexp.new("this is regexp", Regexp::IGNORECASE, "n")
# Ruby 3.1 => no warning
# Ruby 3.2 => warning: 3rd argument to Regexp.new is deprecated and will be removed in Ruby 3.3; use 2nd argument instead
# Ruby 3.3 => error: wrong number of arguments (given 3, expected 1..2) (ArgumentError)

あんまり使っている人はいないと思うんですが bugs.ruby では実際にバグ報告して上がってきていたのでもし使っている人がいれば注意する必要があります。

GitHubで編集を提案

Discussion