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