As notícias mais recentes do Ruby-Lang em Português.
Lançado Ruby 2.7.2
2 de Outubro de 2020, 11:00 - sem comentários aindaRuby 2.7.2 foi lançado.
Esta versão contém incompatibilidade intencional. Alertas de depreciação estão desativadas por padrão no 2.7.2 em diante. Você pode ativar esses alertas de depreciação especificando as opções -w ou -W:deprecated na linha de comando. Por favor, veja os tópicos abaixo para detalhes.
- Feature #17000 2.7.2 turns off deprecation warnings by default
- Feature #16345 Don’t emit deprecation warnings by default.
Esta versão contém a nova versão de webrick com uma correção de seguração descrita neste artigo.
Veja commit logs para outras alterações.
Download
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.bz2
SIZE: 14708724 SHA1: 7e30ca324464eab2f4c2a56d8ab4a37174998062 SHA256: 65a590313d244d48dc2ef9a9ad015dd8bc6faf821621bbb269aa7462829c75ed SHA512: f07592cce4de3532c0fa1c84d53a134527d28ba95e310cd3487ac321c49ee680faeace285de544ee6db432a90aa7538a1d49ff10c72b235968ca362ef9be621d
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.gz
SIZE: 16836767 SHA1: cb9731a17487e0ad84037490a6baf8bfa31a09e8 SHA256: 6e5706d0d4ee4e1e2f883db9d768586b4d06567debea353c796ec45e8321c3d4 SHA512: e80dc16b60149d0d6fedf0ba7b556ae460ff328ee63e9d9e41f5021f67addcc98159cb27bddccaebd6e4b1cddf29266f1c01c32d9ec8bb665aed63c0a2295f2f
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.tar.xz
SIZE: 12037052 SHA1: 82a1fe683460caa8edb6199707f2905634e5ffcc SHA256: 1b95ab193cc8f5b5e59d2686cb3d5dcf1ddf2a86cb6950e0b4bdaae5040ec0d6 SHA512: 7972278b096aa768c7adf2befd26003e18781a29ca317640317d30d93d6e963ded197724c8e2f1dfe1e838c5647176d414a74732a62e931fb50d6f2e0f777349
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.2.zip
SIZE: 20618242 SHA1: 9acee3d4e9399c3a2ddc2dd078dd2ee26327cc8f SHA256: c6b8597e5414f2b01a7cb25095319f2b0e780c95a98fee1ccf1ef022acf93dcc SHA512: 5f3a8d78bbd3d9700e5f0434d0cec2072816c02f5d5b55f24d4f9f0621c0c89f796e9ada32ed65f052a321845dd29709a1b76170c7dd0250bea6f8c18953a366
Comentário de Versão
Obrigado às várias pessoas que fizeram commits, pessoas desenvolvedoras e usuárias que informaram bugs e contribuíram para que esta versão fosse possível.
Escrito por nagachika em 02/10/2020
Traduzido por jcserracampos
CVE-2020-25613: Potencial Vulnerabilidade de Smuggling de Requisições HTTP no WEBrick
29 de Setembro de 2020, 6:30 - sem comentários aindaUma potencial vulnerabilidade de smuggling de requisições HTTP no WEBrick foi reportada. Essa vulnerabilidade recebeu o identificador CVE CVE-2020-25613. Nós recomendamos fortemente que atualize a gem webrick.
Detalhes
WEBrick era muito tolerante contra um cabeçalho Transfer-Encoding inválido. Isso pode levar interpretações inconsistentes entre WEBrick e alguns servidores de proxy HTTP, o que pode poermite que uma pessoa atacante “contrabandeie” uma requisição. Veja CWE-444 em detalhes.
Por favor, atualiaze a gem webrick para a versão 1.6.1 ou superior. Você pode usar gem update webrick
para atualizá-la. Se você está usando bundle, por favor, adicione gem "webrick", ">= 1.6.1"
ao seu Gemfile
.
Versões afetadas
- webrick gem 1.6.0 ou inferior
- versões empacotadas de webrick no ruby 2.7.1 ou inferior
- versões empacotadas de webrick no ruby 2.6.6 ou inferior
- versões empacotadas de webrick no ruby 2.5.8 ou inferior
Créditos
Agradecimentos a piao por ter descoberto este problema.
Histórico
- Originalmente publicado em 2020-09-29 06:30:00 (UTC)
Escrito por mame em 29/09/2020
Traduzido por jcserracampos
Lançado Ruby 3.0.0 Preview 1
25 de Setembro de 2020, 0:00 - sem comentários aindaTemos o prazer de anunciar o lançamento do Ruby 3.0.0-preview1.
Ele apresenta uma série de novos recursos e melhorias de desempenho.
RBS
RBS é uma linguagem para descrever os tipos de programas Ruby. Os verificadores de tipo, incluindo criador de perfil de tipos e outras ferramentas de suporte ao RBS, compreenderão os programas Ruby muito melhor com as definições do RBS.
Você pode escrever a definição de classes e módulos: métodos definidos na classe, variáveis de instância e seus tipos e relações de herança / mix-in. O objetivo do RBS é oferecer suporte a padrões comumente vistos em programas Ruby e permite escrever tipos avançados, incluindo tipos de união, sobrecarga de método e genéricos. Ele também oferece suporte à duck typing com tipos de interface.
Ruby 3.0 vem com gem rbs
, que permite analisar e processar definições de tipo escritas em RBS.
A seguir está um pequeno exemplo de RBS.
module ChatApp
VERSION: String
class Channel
attr_reader name: String
attr_reader messages: Array[Message]
attr_reader users: Array[User | Bot] # `|` significa união de tipos, `User` ou `Bot`.
def initialize: (String) -> void
def post: (String, from: User | Bot) -> Message # Sobrecarga de método é suportada.
| (File, from: User | Bot) -> Message
end
end
Veja README da gem rbs para mais detalhes.
Ractor (experimental)
Ractor é uma abstração concorrente semelhante a um modelo de ator, projetada para fornecer um recurso de execução paralela sem preocupações com a segurança do thread.
Você pode fazer vários ractores e executá-los em paralelo. Ractor permite fazer programas paralelos thread-safe porque ractors não podem compartilhar objetos normais. A comunicação entre os ractores é apoiada pela troca de mensagens.
Para limitar o compartilhamento de objetos, o Ractor apresenta várias restrições à sintaxe do Ruby (sem vários Ractors, não há mudanças).
A especificação e implementação não estão amadurecidas e serão alteradas no futuro, portanto, esse recurso é marcado como experimental e mostra o aviso de recurso experimental se um Ractor for criado.
O pequeno programa a seguir calcula prime?
em paralelo com dois ractores e cerca de x2 vezes mais rápido com dois ou mais núcleos do que o programa sequencial.
require 'prime'
# n.prime? com inteiros r1 e r2 enviados rodando em parelelo
r1, r2 = *(1..2).map do
Ractor.new do
n = Ractor.recv
n.prime?
end
end
# envio de parâmetros
r1.send 2**61 - 1
r2.send 2**61 + 15
# aguardando os resultados de expr1, expr2
p r1.take #=> true
p r2.take #=> true
Veja doc/ractor.md para mais detalhes.
Scheduler (Experimental)
Thread#scheduler
é introduzido para interceptar operações bloqueantes. Isso permite concorrência leve sem alterar o código existente.
Classes/métodos atualmente suportados:
-
Mutex#lock
,Mutex#unlock
eMutex#sleep
ConditionVariable#wait
-
Queue#pop
eSizedQueue#push
Thread#join
Kernel#sleep
-
IO#wait
,IO#read
,IO#write
e métodos correlatos (ex.:#wait_readable
,#gets
,#puts
etc.). -
IO#select
não é suportado.
O ponto de entrada atual para concorrência é Fiber.schedule {...}
no entanto, está sujeito a alterações no momento em que o Ruby 3 for lançado.
Atualmente, existe um agendador de teste disponível em Async::Scheduler
. Veja doc/scheduler.md
para mais detalhes. [Feature #16786]
cuidado: Este recurso é fortemente experimental. O nome e o recurso serão alterados na próxima versão de prévia.
Outros novos recursos notáveis
- A instrução de atribuição para a direita foi adicionada.
fib(10) => x
p x #=> 55
- A definição de método sem fim foi adicionada.
def square(x) = x * x
- Find pattern foi adicionada.
case ["a", 1, "b", "c", 2, "d", "e", "f", 3]
in [*pre, String => x, String => y, *post]
p pre #=> ["a", 1]
p x #=> "b"
p y #=> "c"
p post #=> [2, "d", "e", "f", 3]
end
-
Hash#except
agora é nativo.
h = { a: 1, b: 2, c: 3 }
p h.except(:a) #=> {:b=>2, :c=>3}
-
A visualização da memória é adicionada como um recurso experimental
- Este é um novo conjunto C-API para trocar uma área de memória bruta, como uma matriz numérica e uma imagem de bitmap, entre bibliotecas de extensão. As bibliotecas de extensão também podem compartilhar os metadados da área de memória que consiste na forma, no formato do elemento e assim por diante. Usando esses tipos de metadados, as bibliotecas de extensão podem compartilhar até mesmo uma matriz multidimensional de forma adequada. Este recurso é projetado com referência ao protocolo de buffer do Python.
Melhorias de desempenho
- Muitas melhorias foram implementadas no MJIT. Veja NEWS em detalhes.
Outras mudanças notáveis desde 2.7
- Os argumentos de palavra-chave são separados de outros argumentos.
- Em princípio, códigos que imprimem um aviso no Ruby 2.7 não funciona. Veja o documento em detalhe.
- A propósito, o encaminhamento de argumentos agora suporta argumentos principais.
def method_missing(meth, ...)
send(:"do_#{ meth }", ...)
end
-
O recurso de
$SAFE
foi completamente removido; agora é uma variável global normal. -
A ordem de backtrace foi revertida em Ruby 2.5, mas foi cancelada. Agora ele se comporta como Ruby 2.4; uma mensagem de erro e o número da linha onde ocorre a exceção são impressos primeiro e seus chamadores são impressos posteriormente.
- Algumas bibliotecas padrão são atualizadas.
- RubyGems 3.2.0.rc.1
- Bundler 2.2.0.rc.1
- IRB 1.2.6
- Reline 0.1.5
- As seguintes bibliotecas não são mais gem padrão.
Instale as gems correspondentes para usar esses recursos.
- net-telnet
- xmlrpc
- Promove gems padrão para gems nativas.
- rexml
- rss
- Promova stdlib para gem padrão. As seguintes gems padrão foram publicadas em rubygems.org
- abbrev
- base64
- English
- erb
- find
- io-nonblock
- io-wait
- net-ftp
- net-http
- net-imap
- net-protocol
- nkf
- open-uri
- optparse
- resolv
- resolv-replace
- rinda
- securerandom
- set
- shellwords
- tempfile
- time
- tmpdir
- tsort
- weakref
Veja NEWS ou commit logs para mais detalhes.
Com essas mudanças, 3385 arquivos alterados, 150159 inserções(+), 124949 deleções(-) desde Ruby 2.7.0!
Por favor, experimente Ruby 3.0.0-preview1 e nos dê qualquer feedback!
Download
-
https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0-preview1.tar.bz2
SIZE: 15538340 SHA1: 032697f3ace0a697cd72f68bac0032c31a8328d4 SHA256: 013bdc6e859d76d67a6fcd990d401ed57e6e25896bab96d1d0648a877f556dbb SHA512: 3a6a6458d9c5f06555ab8705160f6b071f4dbe9d2a91cd7848852633657b495c480d74e4b2ff2cebddda556118d26bbb271160c989bc970bb1b5cb234e868d2f
-
https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0-preview1.tar.gz
SIZE: 17747808 SHA1: 2842d2af2568d74c8d4071f5f536889a6b149202 SHA256: ce8bd7534e7ec2a870b24d2145ea20e9bbe5b2d76b7dfa1102dbee5785253105 SHA512: b94892951f842a1538f4b99022606ac2c0b5031f1ede7eef3833a8caa9ed63e9b22868509173bfefb406f263c65211db75597b152b61f49e5ba2a875fce63a27
-
https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0-preview1.tar.xz
SIZE: 12703060 SHA1: 91d9fbe87504924148deeec90199d6ff4d7dcf56 SHA256: aa7cce0c99f4ea2145fef9b78d74a44857754396790cd23bad75d759811e7a2a SHA512: dca5dcc965c434371947c100864090e29e649e19ae24b8bb2e88a534ebd8220c5a086035a999b1e8b1cd5ec154a6985a8d8dfea56095d712d62aeea7a2054f7d
-
https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0-preview1.zip
SIZE: 22002645 SHA1: 4b5b61066373daf0a947d3fafe2645788504a164 SHA256: a39a48ed9a8ca2c83d65d225a1bb3db331c6587a77ba156c20e630c1b4bfc23b SHA512: 10f6f28715a52093d7d9da82d1678147091b45e2f279e463626adea8efbf181485daa42565e5086057ffb45a097ffb8ff395c572b247b6b5da27d85933cf58a8
3.0.0-preview2 trailer
Planejamos incluir [“type-profiler”] (https://github.com/mame/ruby-type-profiler) que é um recurso de análise de tipo estático. Fique ligado!
O que é Ruby
Ruby foi desenvolvido pela primeira vez por Matz (Yukihiro Matsumoto) em 1993, e agora é desenvolvido como Open Source. Ele roda em várias plataformas e é usado em todo o mundo, especialmente para desenvolvimento web.
Escrito por naruse em 25/09/2020
Traduzido por jcserracampos
Competição 2020 Fukuoka Ruby Award - Submissões serão julgadas por Matz
16 de Outubro de 2019, 0:00 - sem comentários aindaEntusiastas de Ruby,
O governo de Fukuoka, Japão, juntamente com “Matz” Matsumoto gostariam de lhe convidar a entrar na seguinte competição de Ruby. Se você desenvolveu algum programa interessante em Ruby, sinta-se, por favor, encorajado(a) a aplicar.
2020 Fukuoka Ruby Award Competition - Grande Prêmio - 1 milhão de ienes!
Prazo para inscrição: 11 de dezembro de 2019
Matz e um grupo de painelistas selecionarão os(as) vencedores(as) da Fukuoka Competition. O grande prêmio da Fukuoka Competition será 1 milhão de ienes. Ganhedores anteriores incluem Rhomobile (USA) e APEC Climate Center (Korea).
http://myfukuoka.com/category/news/ruby-news/
Programas inscritos na competição não precisam ser escritos inteiramente em Ruby, mas deve se aproveitar das características únicas de Ruby.
Projetos devem ter sido desenvolvidos ou completados nos últimos 12 meses para serem elegíveis. Por favor, visite o seguinte site de Fukuoka para detalhes adicionais e se inscrever:
http://www.digitalfukuoka.jp/events/215 ou http://www.digitalfukuoka.jp/uploads/event_detail/file/536/RubyAward_ApplicationForm_2020.doc
Por favor, envie sua aplicação por e-mail para award@f-ruby.com
“Matz testará e revisará seu código conte, então é muito importante se inscrever. A competição é gratuíta.”
Obrigado!
Escrito por Fukuoka Ruby em 16/10/2019
Traduzido por jcserracampos
Lançado Ruby 2.4.9
2 de Outubro de 2019, 9:00 - sem comentários aindaRuby 2.4.9 foi lançado.
Esta versão é um reenpacotamento da 2.4.8 porque o tarball da versão Ruby 2.4.8 anterior não instalava. (Veja [Bug #16197] em detalhes.) Essencialmente, não existem mudanças exceto pelo número de versão entre 2.4.8 e 2.4.9.
Ruby 2.4 está sob o estado de fase de manutenção de segurança, até o fim de março de 2020. Depois dessa data, manutenção de Ruby 2.4 será finalizada. Recomendamos que comece a planejar a migração para novas versões de Ruby, como a 2.6 ou 2.5.
Download
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.9.tar.bz2
SIZE: 12509600 SHA1: e47fcae4862b3fa441df2ca7f2f64ad7b37db489 SHA256: f72bdef50246ef047ba3ce9c59d2081b949feb16f9a04e008108e98f1a995e99 SHA512: d485444dcd025a261a16bd740dae63c0aa23e4138a095584e7a83aec47af34415c7d9cbc1313e92da2ec416b11bfddf20bb1a7b60c80f12906d11ef27409b3e8
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.9.tar.gz
SIZE: 14133507 SHA1: da07b802cf7598547f98b7b2d8fc8ff5f03dbef4 SHA256: f99b6b5e3aa53d579a49eb719dd0d3834d59124159a6d4351d1e039156b1c6ae SHA512: 94aba73f48870b5fdb34f7c9eb0419c0a3b962884df6462ef27e69db306829cad0cfc0ac6b9ba445bcb4282b070b75fcbdb3142af2a744252f25ef0052edf04d
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.9.tar.xz
SIZE: 10078316 SHA1: ae41ac14f98073ba9e6e8ba732580a846286261c SHA256: 0c4e000253ef7187feeb940a01a1c7594f28d63aa16f978e892a0e2864f58614 SHA512: 9046575315c29c789427c2d00c832f0c0970e47fd158bbe8e4f2df5cff2ea9c06c65c3493adb4656e5b32ebfdc546092911f98a8ad7f698bc001c290db5888c7
-
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.9.zip
SIZE: 15765536 SHA1: 5fa8a25fda7fb938bbbd45cf2c585a35875118ff SHA256: 4ad1c32554319661f2872bb978ff2cd520bc4593681a6476b4c5e7f330172d8b SHA512: e87aa613738563572a69ba179f3028994d86bcdc2e990b538aadde87d07aab67ebb7e35a019028cd51187a171368b277b7c79b6cb2e6b3497f0bb9abbe25cfdc
Comentário de Versão
Obrigado a todas as pessoas que ajudaram com esta versão.
Escrito por usa em 02/10/2019
Traduzido por jcserracampos