Issue #8948 has been updated by jwille (Jens Wille).
=begin
besides regexps being frozen, there might still be a use case for regexp literals that would only be allocated once:
def r1; /ab/; end; r1.object_id #=> 70043421664620
def r2; /ab/; end; r2.object_id #=> 70043421398060
def r3; /ab/f; end; r3.object_id #=> 70043421033140
def r4; /ab/f; end; r4.object_id #=> 70043421033140
i think it's in the same vein as #8579 and #8909.
=end
----------------------------------------
Feature #8948: Frozen regex
https://bugs.ruby-lang.org/issues/8948#change-41976
Author: sawa (Tsuyoshi Sawada)
Status: Feedback
Priority: Normal
Assignee:
Category:
Target version:
=begin
I see that frozen string was accepted for Ruby 2.1, and frozen array and hash are proposed in https://bugs.ruby-lang.org/issues/8909. I feel there is even more use case for a frozen regex, i.e., a regex literal that generates a regex only once. It is frequent to have a regex within a frequently repeated portion of code, and generating the same regex each time is a waste of resource. At the moment, we can have a code like:
class Foo
RE1 = /pattern1/
RE2 = /pattern1/
RE3 = /pattern1/
def classify
case self
when RE1 then 1
when RE2 then 2
when RE3 then 3
else 4
end
end
end
but suppose we have a frozen `Regexp` literal `//f`. Then we can write like:
class Foo
def classify
case self
when /pattern1/f then 1
when /pattern1/f then 2
when /pattern1/f then 3
else 4
end
end
end
=end
--
http://bugs.ruby-lang.org/