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.timeout
Configurado 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- timeout
chave 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 .