From: zverok.offline@... Date: 2020-12-19T23:38:19+00:00 Subject: [ruby-core:101549] [Ruby master Misc#17412] Regexp vs Range: freezing differences Issue #17412 has been reported by zverok (Victor Shepelev). ---------------------------------------- Misc #17412: Regexp vs Range: freezing differences https://bugs.ruby-lang.org/issues/17412 * Author: zverok (Victor Shepelev) * Status: Open * Priority: Normal ---------------------------------------- While working on the changelog, I noticed the following in the 3.0: ```ruby /foo/.frozen? # => true (1..3).frozen? # => true # but... Regexp.new('foo').frozen? # => false # ...whereupon Range.new(1, 3).frozen? # => true ``` I'd like to understand, what is there a reason for non-literal regexps to not being frozen, and for ranges to be? Corresponding tickets (#16377 and #15504) doesn't clarify the reasoning: > For the record: `Regexp.new` should continue to return unfrozen Regexp instance. (@mame at #16377#note-7) and: > I'm for freezing all Ranges, not only Range literals. I hate the idea of freezing only literals because casually mixing frozen and unfrozen objects leads to hard-to-debug bugs that depend upon data flow. (@mame at #15504#note-3) I understand that the matter is probably negligible, but will be very grateful for some explanations. -- https://bugs.ruby-lang.org/ Unsubscribe: