Ruby 3.2.0 Preview 1 lançado, introduzindo o mecanismo de tempo limite de expressão regular

Ruby 3.2.0 Preview 1 foi lançado. Esta versão adiciona muitos novos recursos, bem como desempenho otimizado.

Suporte WebAssembly baseado em WASI

Esta é uma porta inicial de suporte WebAssembly baseado em WASI. Esse recurso permite que os binários do CRuby sejam usados ​​em navegadores da Web, ambientes Serverless Edge e outros embedders WebAssembly/WASI. Atualmente, esta porta passa nos testes dos conjuntos de testes básicos e de bootstrap sem usar a API Thread.

Mecanismo de saída de tempo limite de expressão regular

Esta versão apresenta um mecanismo de saída de tempo limite de expressão regular.

Regexp.timeout = 1.0

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

Como a correspondência de expressão regular pode levar muito tempo, os invasores podem usá-la para executar ataques DoS (DoS de expressão regular ou ReDoS) quando o código tenta corresponder uma expressão regular ineficiente a uma entrada não confiável.

Regexp.timeoutConfigurado de acordo com os requisitos do aplicativo Ruby, o risco de DoS pode ser evitado ou reduzido significativamente. Observe que Regexp.timeouté um item de configuração global. Se você quiser usar configurações de tempo limite diferentes para algumas expressões regulares especiais, precisará usar palavras- timeoutchave 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

Proposta original para este recurso: https://bugs.ruby-lang.org/issues/17837

Outras atualizações incluem otimizar o desempenho, atualizar a biblioteca padrão etc. Para obter detalhes, consulte o anúncio de lançamento .

Acho que você gosta

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