From: ko1@... Date: 2020-12-20T16:34:45+00:00 Subject: [ruby-core:101559] [Ruby master Misc#17412] Regexp vs Range: freezing differences Issue #17412 has been updated by ko1 (Koichi Sasada). More correctly, I don't want to debug (or get complaint) world-wide Regexp modifying code. For 3.1, we can try if someone has a passion. BTW, for the keyword parameter changes, many people work a lot (especially @mame and @jeremyevans0) to support many ruby gems and rubyist (Thank you so much!!). ---------------------------------------- Misc #17412: Regexp vs Range: freezing differences https://bugs.ruby-lang.org/issues/17412#change-89342 * Author: zverok (Victor Shepelev) * Status: Closed * 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: