Ruby 3.2 アドベントカレンダーの4日目の記事です。
無くなったクラスや定数
Fixnum / Bignum
Ruby 2.4 から Fixnum と Bignum は deprecated になって Integer の別名になった。
Warning[:deprecated] = true Fixnum #=> Integer #=> warning: constant ::Fixnum is deprecated Bignum #=> Integer #=> warning: constant ::Bignum is deprecated
Ruby 3.2 でとうとう無くなった。
Fixnum #=> uninitialized constant Fixnum (NameError) Bignum #=> uninitialized constant Bignum (NameError)
無くなるまで長かったな…。
Random::DEFAULT
Ruby 2.7 までは Random::DEFAULT はデフォルトの乱数生成器(?よくわかってない)の Random オブジェクトを返していたんだけど、スレッドセーフじゃないとかで Ruby 3.0 で Random::DEFAULT は deprecated になって Random を返すようになった。
Warning[:deprecated] = true Random::DEFAULT #=> Random #=> warning: constant Random::DEFAULT is deprecated
Ruby 3.2 で無くなった。
Random::DEFAULT #=> uninitialized constant Random::DEFAULT (NameError)
Struct::Group / Struct::Passwd
require 'etc' すると何故か Struct::Group と Struct::Passwd が作られてたんだけど、実体は Etc::Group と Etc::Passwd だった。
Ruby 3.0 からは deprecated になってた。
Warning[:deprecated] = true require 'etc' Struct::Group #=> Etc::Group #=> warning: constant Struct::Group is deprecated Struct::Passwd #=> Etc::Passwd #=> warning: constant Struct::Passwd is deprecated
Ruby 3.2 で無くなった。
require 'etc' Struct::Group #=> Etc::Group #=> uninitialized constant Struct::Group (NameError) Struct::Passwd #=> Etc::Passwd #=> uninitialized constant Struct::Passwd (NameError)
ていうかなんで Struct 配下に存在してたんだろ。