From: "Eregon (Benoit Daloze) via ruby-core" Date: 2025-11-17T09:22:18+00:00 Subject: [ruby-core:123826] [Ruby Bug#21375] Set[] does not call #initialize Issue #21375 has been updated by Eregon (Benoit Daloze). I should also mention for the concurrent-ruby case that using `::Set` on Ruby 4+ is not an option because it's not thread-safe enough: https://github.com/ruby-concurrency/concurrent-ruby/issues/1093#issuecomment-3540742547 ---------------------------------------- Bug #21375: Set[] does not call #initialize https://bugs.ruby-lang.org/issues/21375#change-115229 * Author: Ethan (Ethan -) * Status: Open * ruby -v: ruby 3.5.0dev (2025-05-26T17:42:35Z master 909a0daab6) +PRISM [x86_64-darwin22] * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- I have a subclass of Set that overrides #initialize. Following #21216, .new does call #initialize but .[] does not. ```ruby class MySet < Set def initialize(enum = nil) compare_by_identity super end end MySet.new.compare_by_identity? # => true MySet[].compare_by_identity? # => false ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/