Actions
Bug #18686
closedRegexp supporting unexpected age properties in Ruby < 3.2
Description
I've encountered this on GitHub Actions running Ubuntu 20. I cannot reproduce it locally on Darwin/arm64.
It is a weird bug and far from critical, but it might indicate some underlying problem.
I've found that ...
- all Ruby versions below 3.1 allow
/\p{age=14.0}/
- this is unexpected because age 14 was only added in Ruby 3.2
- Ruby seems to parse this as
age=10.0
, at least it matches exactly these codepoints
- all Ruby versions below 3.2 allow some unexpected values for age
- allowed values are e.g.
age=21.0
,age=41.0
,age=99.0
(depending on Ruby version) - on Ruby 3.1,
age=99.0
matches exactly the same codepoints asage=11.0
- allowed values are e.g.
- ruby-head doesn't seem to allow unexpected age values (i've only tested values ending in
.0
)
I've set up a minimal reproduction here:
https://github.com/jaynetics/ruby_age_property_bug_repro
with the unexpected results visible here:
https://github.com/jaynetics/ruby_age_property_bug_repro/actions/runs/2115522407
and here:
https://github.com/jaynetics/ruby_age_property_bug_repro/actions/runs/2116785501
Updated by janosch-x (Janosch Müller) 3 months ago
this no longer occurs in ruby 3.2 or 3.3 so IMO this bug can be closed @duerst (Martin Dürst) @jeremyevans0 (Jeremy Evans)
RUBY_DESCRIPTION
# => "ruby 3.3.0preview1 (2023-05-12 master a1b01e7701) [arm64-darwin22]"
[*0..1000].product([*0..100]).each_with_object([]) do |(n1, n2), acc|
n = "#{n1}.#{n2}"
acc << n if (/\p{age=#{n}}/ rescue nil)
end
# =>
["1.1",
"2.0",
"2.1",
"3.0",
"3.1",
"3.2",
"4.0",
"4.1",
"5.0",
"5.1",
"5.2",
"6.0",
"6.1",
"6.2",
"6.3",
"7.0",
"8.0",
"9.0",
"10.0",
"11.0",
"12.0",
"12.1",
"13.0",
"14.0",
"15.0"]
Updated by jeremyevans0 (Jeremy Evans) 3 months ago
- Status changed from Open to Closed
Actions
Like0
Like0Like0