IPAddr#to_s ran its zero-compression and IPv4-tail regexps on the output of #to_string, which already ends with the zone ID. That had two effects for IPv6 addresses with a zone ID: * Anchored patterns no longer matched, so "::%eth0" was...afurm (Andrii Furmanets)
When a later argument requires Enumerable iteration, lazy zip rebuilds its argument array from the original argv and discards earlier to_ary conversions. This can raise NoMethodError or use different each values. Append the remaining ar...afurm (Andrii Furmanets)
`Enumerator::Lazy#zip` discards a successful `to_ary` conversion when a later argument requires Enumerable iteration. The equivalent eager `Enumerable#zip` call preserves the conversion. ## Reproduction ```ruby array_like = Object...afurm (Andrii Furmanets)
`Regexp.timeout=` and `Regexp.new(..., timeout:)` currently accept `Float::NAN`. The value passes the positive-timeout validation because `NaN <= 0` is false, and then `double2hrtime` stores it as a zero timeout value. This makes bo...afurm (Andrii Furmanets)
These variables have rb_gvar_readonly_setter, so box_ready is sufficient. Only $~ needs box_dynamic due to its custom match_setter.afurm (Andrii Furmanets)