Project

General

Profile

Actions

Bug #18686

closed

Regexp supporting unexpected age properties in Ruby < 3.2

Added by janosch-x (Janosch Müller) almost 2 years ago. Updated 9 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:108200]

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 as age=11.0
  • 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

CC @duerst (Martin Dürst)

Updated by janosch-x (Janosch Müller) 9 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"]
Actions #2

Updated by jeremyevans0 (Jeremy Evans) 9 months ago

  • Status changed from Open to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0