Actions
Feature #17771
openString#start_with? should not construct MatchData or set $~
Status:
Open
Assignee:
-
Target version:
-
Description
I am working on making $~ more thread-safe in JRuby and came across this unexpected behavior:
$ rvm ruby-3.0 do ruby -e '"foo".start_with?(/foo/); p $~'
#<MatchData "foo">
The start_with?
method was added 11 years ago in https://bugs.ruby-lang.org/issues/3388 but I do not think the set of $~ was an intended feature. The start_with?
method could be much faster and more thread-safe if it did not use the frame-local backref slot and did not allocate a MatchData.
Compare with match?
which was added specifically (without MatchData or backref setting) to provide a fast way to check if a Regexp matches.
I propose that start_with?
stop constructing MatchData, stop setting backref, and provide only its boolean result in the same way as match?
.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0