💎
Ruby 3.2 - 無くなったクラスや定数
Ruby 3.2 アドベントカレンダーの4日目の記事です。
無くなったクラスや定数
Fixnum / Bignum
Feature #12005: Unify Fixnum and Bignum into Integer - Ruby master - Ruby Issue Tracking System
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
配下に存在してたんだろ。
Discussion