Ruby 3.2.0 RC 1 发布,引入针对 ReDoS 的正则表达式改进
Ruby 3.2.0 RC 1 发布了,3.2.0 预览版引入基于 WASI 的 WebAssembly 支持和正则表达式超时退出机制,3.2.0 RC 1 则引入两项可显著缓解 ReDoS 攻击的改进,以及一些语言功能和性能改进。 改进的正则表达式匹配算法 从 Ruby 3.2 开始,Regexp 的匹配算法通过使用记忆技术得到了极大的改进。 # This match takes 10 sec. in Ruby 3.1, and 0.003 sec. in Ruby 3.2 /^a*b?a*$/ =~ "a" * 50000 + "x" 改进后的匹配算法使得大多数 Regexp 匹配(实验中大约为 90%)在线性时间内完成。 对于 3.2.0 预览版本的用户:此优化可能会消耗与每个匹配的输入长度成比例的内存。预计不会出现实际问题,因为此内存分配通常会延迟,并且正常的 Regexp 匹配最多应消耗 10 倍的内存输入长度。 该功能最初的提议是 https://bugs.ruby-lang.org/issues/19104 其他值得注意的新功能 语法建议 syntax_suggest...

