Actions
Misc #17412
closedRegexp vs Range: freezing differences
Misc #17412:
Regexp vs Range: freezing differences
Status:
Closed
Assignee:
-
Description
While working on the changelog, I noticed the following in the 3.0:
/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.newshould continue to return unfrozen Regexp instance. (@mame (Yusuke Endoh) 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 (Yusuke Endoh) at #15504#note-3)
I understand that the matter is probably negligible, but will be very grateful for some explanations.
Actions