Lanzamiento de Ruby 3.2.0 Preview 1, que presenta un mecanismo de tiempo de espera de expresión regular

Ruby 3.2.0 Preview 1 ha sido lanzado. Esta versión agrega muchas funciones nuevas, así como un rendimiento optimizado.

Compatibilidad con WebAssembly basado en WASI

Este es un puerto inicial de compatibilidad con WebAssembly basado en WASI. Esta característica permite que los binarios de CRuby se utilicen en navegadores web, entornos Serverless Edge y otros integradores WebAssembly/WASI. Actualmente, este puerto pasa las pruebas de los conjuntos de pruebas básicos y de arranque sin utilizar la API de subprocesos.

Mecanismo de salida de tiempo de espera de expresión regular

Esta versión presenta un mecanismo de salida de tiempo de espera de expresión regular.

Regexp.timeout = 1.0

/^a*b?a*$/ =~ "a" * 50000 + "x"
#=> Regexp::TimeoutError is raised in one second

Dado que la coincidencia de expresiones regulares puede llevar mucho tiempo, los atacantes pueden usarla para realizar ataques DoS (DoS de expresión regular o ReDoS) cuando el código intenta hacer coincidir una expresión regular ineficiente con una entrada que no es de confianza. .

Regexp.timeoutConfigurado de acuerdo con los requisitos de la aplicación Ruby, el riesgo de DoS se puede prevenir o reducir significativamente. Tenga en cuenta que Regexp.timeoutes un elemento de configuración global. Si desea usar diferentes configuraciones de tiempo de espera para algunas expresiones regulares especiales, debe usar timeoutpalabras clave Regexp.new.

Regexp.timeout = 1.0

# This regexp has no timeout
long_time_re = Regexp.new("^a*b?a*$", timeout: nil)

long_time_re =~ "a" * 50000 + "x" # never interrupted

Propuesta original para esta característica: https://bugs.ruby-lang.org/issues/17837

Otras actualizaciones incluyen la optimización del rendimiento, la actualización de la biblioteca estándar, etc. Para obtener más información, consulte el anuncio de lanzamiento .

Supongo que te gusta

Origin www.oschina.net/news/189866/ruby-3-2-0-preview1-released
Recomendado
Clasificación