[ruby-core:105821] [Ruby master Feature#17351] Deprecate Random::DEFAULT
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2021-10-27 11:02:25 UTC
List:
ruby-core #105821
Issue #17351 has been updated by Eregon (Benoit Daloze). Just realized, another way to write that roll method (without deprecation) is: ```ruby def roll rnd = Random rnd.rand(6)+1 end ``` I also noticed deprecated constants are no longer warned by default as they depend on `Warning[:deprecated]`. ---------------------------------------- Feature #17351: Deprecate Random::DEFAULT https://bugs.ruby-lang.org/issues/17351#change-94346 * Author: Eregon (Benoit Daloze) * Status: Closed * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) ---------------------------------------- From https://bugs.ruby-lang.org/issues/17322#note-11 I think we should deprecate the `Random::DEFAULT` constant, it doesn't make sense anymore and it's longer than using Random class methods (Random.rand) or Kernel instance methods (#rand). Also, people might expect it to be global. If users want a Random instance they should just use `Random.new`, not assume there is a global instance in Random::DEFAULT, which is actually rather misleading now (Random::DEFAULT is no longer an instance of Random). Also note that JRuby & TruffleRuby use a per-thread instance for Kernel#rand, etc, to avoid contention (otherwise it becomes a huge source of contention when threads run in parallel). Which means on those implementations using Random::DEFAULT was inefficient (extra synchronization). So for all these reasons I think it's time to deprecate `Random::DEFAULT` and then later remove it (in 3.1?). I don't think there is any use case for `Random::DEFAULT`, but happy to hear if there is and there is no trivial replacement. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>