CARVIEW |
Select Language
HTTP/2 200
server: GitHub.com
content-type: application/rss+xml; charset=utf-8
last-modified: Fri, 01 Aug 2025 01:17:08 GMT
access-control-allow-origin: *
etag: W/"688c1594-12719"
expires: Fri, 01 Aug 2025 08:36:06 GMT
cache-control: max-age=600
content-encoding: gzip
x-proxy-cache: MISS
x-github-request-id: 599B:1A9DFC:E58F:10247:688C7A1D
accept-ranges: bytes
age: 0
date: Fri, 01 Aug 2025 08:26:06 GMT
via: 1.1 varnish
x-served-by: cache-bom-vanm7210025-BOM
x-cache: MISS
x-cache-hits: 0
x-timer: S1754036767.576484,VS0,VE222
vary: Accept-Encoding
x-fastly-request-id: 9a8814cafa439cad4e8828338cffab66a6767f47
content-length: 15027
Notícias sobre Ruby
https://www.ruby-lang.org/pt/feeds/news.rss
pt-PT
40
As notícias mais recentes do ruby-lang.org em português.
-
Avisos de segurança: CVE-2025-27219, CVE-2025-27220 e CVE-2025-27221
<p>Publicamos avisos de segurança para CVE-2025-27219, CVE-2025-27220 e CVE-2025-27221. Por favor, leia os detalhes abaixo.</p>
<h2>CVE-2025-27219: Negação de Serviço em <code class="language-plaintext highlighter-rouge">CGI::Cookie.parse</code>.</h2>
<p>Há uma possibilidade de DoS na gem cgi. Esta vulnerabilidade foi identificada com o CVE <a href="https://www.cve.org/CVERecord?id=CVE-2025-27219">CVE-2025-27219</a>. Recomendamos atualizar a gem cgi.</p>
<h3>Detalhes</h3>
<p><code class="language-plaintext highlighter-rouge">CGI::Cookie.parse</code> levava tempo super-linear para analisar uma string de cookie em alguns casos. Alimentar uma string de cookie maliciosamente criada no método poderia levar a uma Negação de Serviço.</p>
<p>Por favor, atualize a gem CGI para a versão 0.3.5.1, 0.3.7, 0.4.2 ou posterior.</p>
<h3>Versões afetadas</h3>
<ul>
<li>Versões da gem cgi <= 0.3.5, 0.3.6, 0.4.0 e 0.4.1.</li>
</ul>
<h3>Créditos</h3>
<p>Obrigado a <a href="https://hackerone.com/lio346">lio346</a> por descobrir este problema. Também agradecemos a <a href="https://github.com/mame">mame</a> por corrigir esta vulnerabilidade.</p>
<h2>CVE-2025-27220: ReDoS em <code class="language-plaintext highlighter-rouge">CGI::Util#escapeElement</code>.</h2>
<p>Há uma possibilidade de Negação de Serviço por expressão regular (ReDoS) na gem cgi. Esta vulnerabilidade foi identificada com o CVE <a href="https://www.cve.org/CVERecord?id=CVE-2025-27220">CVE-2025-27220</a>. Recomendamos atualizar a gem cgi.</p>
<h3>Detalhes</h3>
<p>A expressão regular usada em <code class="language-plaintext highlighter-rouge">CGI::Util#escapeElement</code> é vulnerável a ReDoS. A entrada criada poderia levar a um alto consumo de CPU.</p>
<p>Esta vulnerabilidade afeta apenas Ruby 3.1 e 3.2. Se você estiver usando essas versões, por favor, atualize a gem CGI para a versão 0.3.5.1, 0.3.7, 0.4.2 ou posterior.</p>
<h3>Versões afetadas</h3>
<ul>
<li>Versões da gem cgi <= 0.3.5, 0.3.6, 0.4.0 e 0.4.1.</li>
</ul>
<h3>Créditos</h3>
<p>Obrigado a <a href="https://hackerone.com/svalkanov">svalkanov</a> por descobrir este problema. Também agradecemos a <a href="https://github.com/nobu">nobu</a> por corrigir esta vulnerabilidade.</p>
<h2>CVE-2025-27221: vazamento de informações de usuário em <code class="language-plaintext highlighter-rouge">URI#join</code>, <code class="language-plaintext highlighter-rouge">URI#merge</code> e <code class="language-plaintext highlighter-rouge">URI#+</code>.</h2>
<p>Há uma possibilidade de vazamento de informações de usuário na gem uri. Esta vulnerabilidade foi identificada com o CVE <a href="https://www.cve.org/CVERecord?id=CVE-2025-27221">CVE-2025-27221</a>. Recomendamos atualizar a gem uri.</p>
<h3>Detalhes</h3>
<p>Os métodos <code class="language-plaintext highlighter-rouge">URI#join</code>, <code class="language-plaintext highlighter-rouge">URI#merge</code> e <code class="language-plaintext highlighter-rouge">URI#+</code> mantinham informações de usuário, como <code class="language-plaintext highlighter-rouge">user:password</code>, mesmo após o host ser substituído. Ao gerar uma URL para um host malicioso a partir de uma URL contendo informações de usuário secretas usando esses métodos, e fazer alguém acessar essa URL, poderia ocorrer um vazamento não intencional de informações de usuário.</p>
<p>Por favor, atualize a gem URI para a versão 0.11.3, 0.12.4, 0.13.2, 1.0.3 ou posterior.</p>
<h3>Versões afetadas</h3>
<ul>
<li>Versões da gem uri < 0.11.3, 0.12.0 a 0.12.3, 0.13.0, 0.13.1 e 1.0.0 a 1.0.2.</li>
</ul>
<h3>Créditos</h3>
<p>Obrigado a <a href="https://hackerone.com/lambdasawa">Tsubasa Irisawa (lambdasawa)</a> por descobrir este problema. Também agradecemos a <a href="https://github.com/nobu">nobu</a> por correções adicionais desta vulnerabilidade.</p>
<h2>Histórico</h2>
<ul>
<li>Publicado originalmente em 2025-02-26 7:00:00 (UTC)</li>
</ul>
<p>Escrito por hsbt em 26/02/2025<br />Traduzido por nbluis</p>
Wed, 26 Feb 2025 07:00:00 +0000
https://www.ruby-lang.org/pt/news/2025/02/26/security-advisories/
https://www.ruby-lang.org/pt/news/2025/02/26/security-advisories/
-
Ruby 3.4.2 Lançado
<p>Ruby 3.4.2 foi lançado.</p>
<p>Esta é uma atualização de rotina que inclui correções de bugs. Por favor consulte as
<a href="https://github.com/ruby/ruby/releases/tag/v3_4_2">notas de lançamento no GitHub</a> para maiores detalhes.</p>
<h2>Cronograma de Lançamento</h2>
<p>Nosso objetivo é lançar a versão estável mais recente do Ruby (atualmente Ruby 3.4) a cada 2 meses.
O Ruby 3.4.3 será lançado em abril, 3.4.4 em junho, 3.4.5 em agosto, 3.4.6 em outubro e 3.4.7 em dezembro.</p>
<p>Caso haja alguma alteração que afete um número considerável de pessoas, essas versões podem ser lançadas antes do esperado.</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.2.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.2.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 23174066
SHA1: 1537911b4a47940f11c309898e04187344a43167
SHA256: 41328ac21f2bfdd7de6b3565ef4f0dd7543354d37e96f157a1552a6bd0eb364b
SHA512: edc3aede0aadcaa62343f38ea6cab7adacedba810d883f1d9c3e6e24e28e24e0e27a7df2c8e517cc2aab940168fc4872ab8cad000598aab5940aa79072ac190b
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.2.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.2.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 17218200
SHA1: b169f9e0d35cf85085c5f23d774485ba6c00ebac
SHA256: ebf1c2eb58f5da17c23e965d658dd7e6202c5c50f5179154c5574452bef4b3e0
SHA512: cb8b5023bce316393716548c5f0a44c7d0240724ff79b995517641266af30bedc6f402c1c8fa27368ea607e2aa6d36bbb201e00c6e9dd2a80d837431d32343b5
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.2.zip">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.2.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 28336243
SHA1: 5a790b8a5aa662df6512f865bb042e93b8520864
SHA256: e14b850e831bf046cf78d66f14207782da13e76777610596666a74fd6c786021
SHA512: ac897cdc013b71ac3f76d1f70e9b79155a08197e458ddb7bfb638d1168d166b08fbc022aae95953bdade19ccd68989d666b76b6d681ee3480bb5936fb475959d
</code></pre></div> </div>
</li>
</ul>
<h2>Comentário sobre o Lançamento</h2>
<p>Muitos committers, desenvolvedores e usuários que forneceram relatórios de bugs nos ajudaram a fazer este lançamento.
Obrigado pelas contribuições.</p>
<p>Escrito por k0kubun em 14/02/2025<br />Traduzido por nbluis</p>
Fri, 14 Feb 2025 21:55:17 +0000
https://www.ruby-lang.org/pt/news/2025/02/14/ruby-3-4-2-released/
https://www.ruby-lang.org/pt/news/2025/02/14/ruby-3-4-2-released/
-
CVE-2025-25186: Vulnerabilidade de DoS em net-imap
<p>Existe uma possibilidade de DoS na gem net-imap. Esta vulnerabilidade foi atribuída ao identificador CVE <a href="https://www.cve.org/CVERecord?id=CVE-2025-25186">CVE-2025-25186</a>. Recomendamos atualizar a gem net-imap.</p>
<h2>Detalhes</h2>
<p>Um servidor malicioso pode enviar dados uid-set altamente compactados, que são lidos automaticamente pelo thread receptor do cliente. O parser de resposta usa Range#to_a para converter os dados uid-set em arrays de inteiros, sem limitação no tamanho expandido dos intervalos.</p>
<p>Atualize a gem net-imap para a versão 0.3.8, 0.4.19, 0.5.6 ou posterior.</p>
<h2>Versões afetadas</h2>
<ul>
<li>gem net-imap entre 0.3.2 e 0.3.7, 0.4.0 e 0.4.18, ou 0.5.0 e 0.5.5</li>
</ul>
<h2>Créditos</h2>
<p>Obrigado a <a href="https://hackerone.com/manun">manun</a> por descobrir este problema.</p>
<h2>Histórico</h2>
<ul>
<li>Publicado originalmente em 2025-02-10 03:00:00 (UTC)</li>
</ul>
<p>Escrito por nevans em 10/02/2025<br />Traduzido por nbluis</p>
Mon, 10 Feb 2025 03:00:00 +0000
https://www.ruby-lang.org/pt/news/2025/02/10/dos-net-imap-cve-2025-25186/
https://www.ruby-lang.org/pt/news/2025/02/10/dos-net-imap-cve-2025-25186/
-
Ruby 3.2.7 Lançado
<p>Ruby 3.2.7 foi lançado.</p>
<p>Por favor, consulte os <a href="https://github.com/ruby/ruby/releases/tag/v3_2_7">lançamentos no GitHub</a> para mais detalhes.</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.7.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.7.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 20548416
SHA1: c45aa881a7ea1175212d385fe5c8b6e9ff14b2e5
SHA256: 8488fa620ff0333c16d437f2b890bba3b67f8745fdecb1472568a6114aad9741
SHA512: 174e70ac20a21ea77e2c5055a9123a6812109fd7b54c0f7b948312b8159eedbfb11c06120390c158430ca8543e36893da6c809883c82757082d22e08004c5055
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.7.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.7.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 15128228
SHA1: 54e07b3adf1e948f5a35fc4ef9b24dd5976f1740
SHA256: fc159b0d4a8ce412948fb69e61493839a0b3e1d5c919180f27036f1c948cfbe2
SHA512: c10b6fd27fad3bbd33d780c0a3eccb5df2a8465a89d2294ea6f14c7e5e8f7c8ea30b8a8b68bf8903c76f9133c5d984d5d66052ec4eb413153c739e6eea24beed
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.7.zip">https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.7.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 25129063
SHA1: d18fbf11004fdc98bc2c221b167b0d62bfc98dd2
SHA256: e4efb7d9e8f8fee6c717917760796c3e29d6c644f9777e4a46bd0a69ed21d5fd
SHA512: 5f57fb8b2d44187a8f900095cbe7bc90d9439c6436e3e361241b83102b85f665e3d7ed64fe1f6150dfb94eb289467f375ef24b46d5ac9b5f03b01ef31ed39606
</code></pre></div> </div>
</li>
</ul>
<h2>Comentário do Lançamento</h2>
<p>Muitos committers, desenvolvedores e usuários que forneceram relatórios de bugs nos ajudaram a fazer este lançamento.
Obrigado pelas contribuições.</p>
<p>Escrito por nagachika em 04/02/2025<br />Traduzido por nbluis</p>
Tue, 04 Feb 2025 12:00:00 +0000
https://www.ruby-lang.org/pt/news/2025/02/04/ruby-3-2-7-released/
https://www.ruby-lang.org/pt/news/2025/02/04/ruby-3-2-7-released/
-
Ruby 3.3.7 Lançado
<p>Ruby 3.3.7 foi lançado.</p>
<p>Esta é uma atualização de rotina que inclui correções de bugs menores.
Por favor, consulte <a href="https://github.com/ruby/ruby/releases/tag/v3_3_7">as notas de lançamento no GitHub</a> para mais detalhes.</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.7.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.7.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 22163173
SHA1: aaa94abd1a5676dd24e927876935597a505e2a4d
SHA256: 9c37c3b12288c7aec20ca121ce76845be5bb5d77662a24919651aaf1d12c8628
SHA512: 9b48be05d1210e9194c8a6d77dfc3227599bff2b55fc9bb2049b11547927deef530ece9a2a505600cdc492c8517b1bef7ab5f2520ebd79ffcf76f0a734fa763d
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.7.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.7.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 16379504
SHA1: b5498e7174328fe0af0d93ee9667d39dda36621b
SHA256: 5dbcbc605e0ed4b09c52703241577eb7edc3a2dc747e184c72b5285719b6ad72
SHA512: 4082a7684c1b0d53a0ce493f79568e851d37a864f59c58b2e0c273b2659e0ca75318ddff939fdf5e9d0a3eeba1b6d8f03bf88afb49a5ffd77714f1c8a7dfdd55
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.7.zip">https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.7.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 27589557
SHA1: afe9800b8711aba57df5e11005a1710b48c9377e
SHA256: 9c6b1d13a03d8423391e070e324b1380a597d3ac9eb5d8ea40bc4fd5226556a5
SHA512: 20f0ad9e80528c5c5d42c0be8e85cf3f120a20a973a7d8303785f4201263d7896c9a7462d8b862330c2d4039ab8d47616fa13ef487a2ed05490ca4e731c97ef2
</code></pre></div> </div>
</li>
</ul>
<h2>Comentário sobre o Lançamento</h2>
<p>Muitos committers, desenvolvedores e usuários que forneceram relatórios de bugs nos ajudaram a fazer este lançamento.
Obrigado pelas suas contribuições.</p>
<p>Escrito por k0kubun em 15/01/2025<br />Traduzido por nbluis</p>
Wed, 15 Jan 2025 07:51:59 +0000
https://www.ruby-lang.org/pt/news/2025/01/15/ruby-3-3-7-released/
https://www.ruby-lang.org/pt/news/2025/01/15/ruby-3-3-7-released/
-
Ruby 3.4.1 Lançado
<p>Ruby 3.4.1 foi lançado.</p>
<p>Isso corrige a descrição da versão.</p>
<p>Veja os <a href="https://github.com/ruby/ruby/releases/tag/v3_4_1">lançamentos no GitHub</a> para mais detalhes.</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.1.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.1.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 23152739
SHA1: dc42fe22bcdfbd30f63cd93296d893c53b1dadcc
SHA256: 3d385e5d22d368b064c817a13ed8e3cc3f71a7705d7ed1bae78013c33aa7c87f
SHA512: 93acc262e3b7cf86aeddebdad5b8938c187b9c44a73b0c252b6f873745964001459ae45ece7376745916e317c24895596a42b4544e836670fc6e90058e6f0de4
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.1.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.1.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 17222800
SHA1: 61783f85c57da9f05201e491029889d71742a83f
SHA256: 018d59ffb52be3c0a6d847e22d3fd7a2c52d0ddfee249d3517a0c8c6dbfa70af
SHA512: 8d2e34117696f9debf463ae1eed288fdbb5c1a12e32800e901b69218e3b7302a0066052077e2ebca851e3a635296199bd5a10437eea1d6f787f69a77bb865680
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.1.zip">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.1.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 28310267
SHA1: a7145041a0178f2423dbad5d1dd67ba0862b9ee7
SHA256: a0c62089fb75c47e392bc96778dd76bd7ad1baa40a7ed040372c805de20bccc8
SHA512: 4f96c56b0a26c0d4d554cf47764f4acdc2e59545da0b85fe4d5235a17d26ac47f0c609af66099173056e3405849a9f847c32e7aaaa3a057c7d46007968aa4c73
</code></pre></div> </div>
</li>
</ul>
<p>Escrito por naruse em 25/12/2024<br />Traduzido por nbluis</p>
Wed, 25 Dec 2024 00:00:00 +0000
https://www.ruby-lang.org/pt/news/2024/12/25/ruby-3-4-1-released/
https://www.ruby-lang.org/pt/news/2024/12/25/ruby-3-4-1-released/
-
Ruby 3.4.0 Lançado
<p>Estamos felizes em anunciar o lançamento do Ruby 3.4.0. Ruby 3.4 adiciona a referência de parâmetro de bloco <code class="language-plaintext highlighter-rouge">it</code>,
altera o Prism como parser padrão, adiciona suporte ao Happy Eyeballs Versão 2 na biblioteca de socket, melhora o YJIT,
adiciona GC Modular, e muito mais.</p>
<h2><code class="language-plaintext highlighter-rouge">it</code> é introduzido</h2>
<p><code class="language-plaintext highlighter-rouge">it</code> foi adicionado para referenciar um parâmetro de bloco sem nome de variável. [<a href="https://bugs.ruby-lang.org/issues/18980">Feature #18980</a>]</p>
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">ary</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"foo"</span><span class="p">,</span> <span class="s2">"bar"</span><span class="p">,</span> <span class="s2">"baz"</span><span class="p">]</span>
<span class="nb">p</span> <span class="n">ary</span><span class="p">.</span><span class="nf">map</span> <span class="p">{</span> <span class="n">it</span><span class="p">.</span><span class="nf">upcase</span> <span class="p">}</span> <span class="c1">#=> ["FOO", "BAR", "BAZ"]</span>
</code></pre></div></div>
<p><code class="language-plaintext highlighter-rouge">it</code> se comporta de maneira muito semelhante a <code class="language-plaintext highlighter-rouge">_1</code>. Quando a intenção é usar apenas <code class="language-plaintext highlighter-rouge">_1</code> em um bloco, a possibilidade de outros parâmetros numerados como <code class="language-plaintext highlighter-rouge">_2</code> aparecer impõe uma carga cognitiva extra aos leitores. Então <code class="language-plaintext highlighter-rouge">it</code> foi introduzido como um alias prático. Use <code class="language-plaintext highlighter-rouge">it</code> em casos simples onde <code class="language-plaintext highlighter-rouge">it</code> representa itself, como em blocos de uma linha.</p>
<h2>Prism agora é o parser padrão</h2>
<p>Alteração do parser padrão de parse.y para Prism. [<a href="https://bugs.ruby-lang.org/issues/20564">Feature #20564</a>]</p>
<p>Esta é uma melhoria interna e deve haver pouca mudança visível para o usuário. Se você notar algum problema de compatibilidade, por favor, reporte para nós.</p>
<p>Para usar o parser convencional, use o argumento de linha de comando <code class="language-plaintext highlighter-rouge">--parser=parse.y</code>.</p>
<h2>A biblioteca de socket agora possui Happy Eyeballs Versão 2 (RFC 8305)</h2>
<p>A biblioteca de socket agora possui <a href="https://datatracker.ietf.org/doc/html/rfc8305">Happy Eyeballs Version 2 (RFC 8305)</a>, a versão padronizada mais recente de uma abordagem amplamente adotada para melhor conectividade em muitas linguagens de programação, em <code class="language-plaintext highlighter-rouge">TCPSocket.new</code> (<code class="language-plaintext highlighter-rouge">TCPSocket.open</code>) e <code class="language-plaintext highlighter-rouge">Socket.tcp</code>.
Esta melhoria permite que o Ruby forneça conexões de rede eficientes e confiáveis, adaptadas aos ambientes modernos da internet.</p>
<p>Até o Ruby 3.3, esses métodos realizavam a resolução de nomes e tentativas de conexão de forma serial. Com este algoritmo, eles agora operam da seguinte forma:</p>
<ol>
<li>Realiza a resolução de nomes IPv6 e IPv4 simultaneamente</li>
<li>Tenta conexões com os endereços IP resolvidos, priorizando IPv6, com tentativas paralelas escalonadas em intervalos de 250ms</li>
<li>Retorna a primeira conexão bem-sucedida enquanto cancela quaisquer outras</li>
</ol>
<p>Isso garante atrasos mínimos de conexão, mesmo se um protocolo específico ou endereço IP estiver atrasado ou indisponível.
Este recurso é habilitado por padrão, portanto, configuração adicional não é necessária para usá-lo. Para desativá-lo globalmente, defina a variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_TCP_NO_FAST_FALLBACK=1</code> ou chame <code class="language-plaintext highlighter-rouge">Socket.tcp_fast_fallback=false</code>. Ou para desativá-lo em um método específico, use o argumento <code class="language-plaintext highlighter-rouge">fast_fallback: false</code>.</p>
<h2>YJIT</h2>
<h3>TL;DR</h3>
<ul>
<li>Melhor desempenho na maioria dos benchmarks em plataformas x86-64 e arm64.</li>
<li>Uso reduzido de memória através de metadados comprimidos e um limite de memória unificado.</li>
<li>Várias correções de bugs: YJIT agora é mais robusto e testado exaustivamente.</li>
</ul>
<h3>Novos recursos</h3>
<ul>
<li>Opções de linha de comando
<ul>
<li><code class="language-plaintext highlighter-rouge">--yjit-mem-size</code> introduz um limite de memória unificado (padrão 128MiB) para rastrear o uso total de memória do YJIT,
fornecendo uma alternativa mais intuitiva à antiga opção <code class="language-plaintext highlighter-rouge">--yjit-exec-mem-size</code>.</li>
<li><code class="language-plaintext highlighter-rouge">--yjit-log</code> habilita um log de compilação para rastrear o que é compilado.</li>
</ul>
</li>
<li>API Ruby
<ul>
<li><code class="language-plaintext highlighter-rouge">RubyVM::YJIT.log</code> fornece acesso ao final do log de compilação em tempo de execução.</li>
</ul>
</li>
<li>Estatísticas do YJIT
<ul>
<li><code class="language-plaintext highlighter-rouge">RubyVM::YJIT.runtime_stats</code> agora sempre fornece estatísticas adicionais sobre
invalidação, inlining e codificação de metadados.</li>
</ul>
</li>
</ul>
<h3>Novas otimizações</h3>
<ul>
<li>Contexto comprimido reduz a memória necessária para armazenar metadados do YJIT</li>
<li>Alocar registradores para variáveis locais e argumentos de métodos Ruby</li>
<li>Quando o YJIT está habilitado, usa mais primitivas Core escritas em Ruby:
<ul>
<li><code class="language-plaintext highlighter-rouge">Array#each</code>, <code class="language-plaintext highlighter-rouge">Array#select</code>, <code class="language-plaintext highlighter-rouge">Array#map</code> reescritos em Ruby para melhor desempenho [<a href="https://bugs.ruby-lang.org/issues/20182">Feature #20182</a>].</li>
</ul>
</li>
<li>Capacidade de inline de métodos pequenos/triviais, como:
<ul>
<li>Métodos vazios</li>
<li>Métodos que retornam uma constante</li>
<li>Métodos que retornam <code class="language-plaintext highlighter-rouge">self</code></li>
<li>Métodos que retornam diretamente um argumento</li>
</ul>
</li>
<li>Geração de código especializada para muitos mais métodos em tempo de execução</li>
<li>Otimiza <code class="language-plaintext highlighter-rouge">String#getbyte</code>, <code class="language-plaintext highlighter-rouge">String#setbyte</code> e outros métodos de string</li>
<li>Otimiza operações bitwise para acelerar a manipulação de bits/bytes de baixo nível</li>
<li>Suporte a constantes compartilháveis em modo multi-ractor</li>
<li>Várias outras otimizações incrementais</li>
</ul>
<h2>Modular GC</h2>
<ul>
<li>
<p>Implementações alternativas de garbage collector (GC) podem ser carregadas dinamicamente
através do recurso de garbage collector modular. Para habilitar este recurso,
configure o Ruby com <code class="language-plaintext highlighter-rouge">--with-modular-gc</code> no momento da compilação. Bibliotecas de GC podem ser
carregadas em tempo de execução usando a variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_GC_LIBRARY</code>.
[<a href="https://bugs.ruby-lang.org/issues/20351">Feature #20351</a>]</p>
</li>
<li>
<p>O garbage collector embutido do Ruby foi dividido em um arquivo separado em
<code class="language-plaintext highlighter-rouge">gc/default/default.c</code> e interage com o Ruby usando uma API definida em
<code class="language-plaintext highlighter-rouge">gc/gc_impl.h</code>. O garbage collector embutido agora também pode ser compilado como uma
biblioteca usando <code class="language-plaintext highlighter-rouge">make modular-gc MODULAR_GC=default</code> e habilitado usando a
variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_GC_LIBRARY=default</code>. [<a href="https://bugs.ruby-lang.org/issues/20470">Feature #20470</a>]</p>
</li>
<li>
<p>Uma biblioteca experimental de GC é fornecida com base no <a href="https://www.mmtk.io/">MMTk</a>.
Esta biblioteca de GC pode ser compilada usando <code class="language-plaintext highlighter-rouge">make modular-gc MODULAR_GC=mmtk</code> e
habilitada usando a variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_GC_LIBRARY=mmtk</code>. Isso requer
a ferramenta Rust na máquina de compilação. [<a href="https://bugs.ruby-lang.org/issues/20860">Feature #20860</a>]</p>
</li>
</ul>
<h2>Mudanças na linguagem</h2>
<ul>
<li>
<p>Literais de string em arquivos sem um comentário <code class="language-plaintext highlighter-rouge">frozen_string_literal</code> agora emitem um aviso de descontinuação
quando são mutados.
Esses avisos podem ser habilitados com <code class="language-plaintext highlighter-rouge">-W:deprecated</code> ou configurando <code class="language-plaintext highlighter-rouge">Warning[:deprecated] = true</code>.
Para desativar essa mudança, você pode executar o Ruby com o argumento de linha de comando <code class="language-plaintext highlighter-rouge">--disable-frozen-string-literal</code>. [<a href="https://bugs.ruby-lang.org/issues/20205">Feature #20205</a>]</p>
</li>
<li>
<p>O splatting de palavra-chave <code class="language-plaintext highlighter-rouge">nil</code> ao chamar métodos agora é suportado.
<code class="language-plaintext highlighter-rouge">**nil</code> é tratado de maneira semelhante a <code class="language-plaintext highlighter-rouge">**{}</code>, não passando palavras-chave,
e não chamando nenhum método de conversão. [<a href="https://bugs.ruby-lang.org/issues/20064">Bug #20064</a>]</p>
</li>
<li>
<p>Passagem de bloco não é mais permitida em índice. [<a href="https://bugs.ruby-lang.org/issues/19918">Bug #19918</a>]</p>
</li>
<li>
<p>Argumentos de palavra-chave não são mais permitidos em índice. [<a href="https://bugs.ruby-lang.org/issues/20218">Bug #20218</a>]</p>
</li>
<li>
<p>O nome de nível superior <code class="language-plaintext highlighter-rouge">::Ruby</code> agora está reservado, e a definição será avisada quando <code class="language-plaintext highlighter-rouge">Warning[:deprecated]</code>. [<a href="https://bugs.ruby-lang.org/issues/20884">Feature #20884</a>]</p>
</li>
</ul>
<h2>Atualizações de classes principais</h2>
<p>Nota: Estamos listando apenas atualizações notáveis das classes principais.</p>
<ul>
<li>
<p>Exception</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">Exception#set_backtrace</code> agora aceita um array de <code class="language-plaintext highlighter-rouge">Thread::Backtrace::Location</code>.
<code class="language-plaintext highlighter-rouge">Kernel#raise</code>, <code class="language-plaintext highlighter-rouge">Thread#raise</code> e <code class="language-plaintext highlighter-rouge">Fiber#raise</code> também aceitam este novo formato. [<a href="https://bugs.ruby-lang.org/issues/13557">Feature #13557</a>]</li>
</ul>
</li>
<li>
<p>GC</p>
<ul>
<li>
<p><code class="language-plaintext highlighter-rouge">GC.config</code> adicionado para permitir a configuração de variáveis no Garbage
Collector. [<a href="https://bugs.ruby-lang.org/issues/20443">Feature #20443</a>]</p>
</li>
<li>
<p>Parâmetro de configuração do GC <code class="language-plaintext highlighter-rouge">rgengc_allow_full_mark</code> introduzido. Quando <code class="language-plaintext highlighter-rouge">false</code>
o GC marcará apenas objetos jovens. O padrão é <code class="language-plaintext highlighter-rouge">true</code>. [<a href="https://bugs.ruby-lang.org/issues/20443">Feature #20443</a>]</p>
</li>
</ul>
</li>
<li>
<p>Ractor</p>
<ul>
<li>
<p><code class="language-plaintext highlighter-rouge">require</code> em Ractor é permitido. O processo de requisição será executado no
Ractor principal.
<code class="language-plaintext highlighter-rouge">Ractor._require(feature)</code> é adicionado para executar o processo de requisição no
Ractor principal. [<a href="https://bugs.ruby-lang.org/issues/20627">Feature #20627</a>]</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">Ractor.main?</code> é adicionado. [<a href="https://bugs.ruby-lang.org/issues/20627">Feature #20627</a>]</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">Ractor.[]</code> e <code class="language-plaintext highlighter-rouge">Ractor.[]=</code> são adicionados para acessar o armazenamento local
do Ractor atual. [<a href="https://bugs.ruby-lang.org/issues/20715">Feature #20715</a>]</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">Ractor.store_if_absent(key){ init }</code> é adicionado para inicializar variáveis locais do ractor
de forma segura para threads. [<a href="https://bugs.ruby-lang.org/issues/20875">Feature #20875</a>]</p>
</li>
</ul>
</li>
<li>
<p>Range</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">Range#size</code> agora levanta <code class="language-plaintext highlighter-rouge">TypeError</code> se o intervalo não for iterável. [<a href="https://bugs.ruby-lang.org/issues/18984">Misc #18984</a>]</li>
</ul>
</li>
</ul>
<h2>Atualizações da Biblioteca Padrão</h2>
<p>Nota: Estamos listando apenas atualizações notáveis das bibliotecas padrão.</p>
<ul>
<li>RubyGems
<ul>
<li>Adicionada a opção <code class="language-plaintext highlighter-rouge">--attestation</code> ao gem push. Ela permite armazenar a assinatura no <a href="https://www.sigstore.dev">sigstore.dev</a></li>
</ul>
</li>
<li>Bundler
<ul>
<li>Adicionada uma configuração <code class="language-plaintext highlighter-rouge">lockfile_checksums</code> para incluir checksums em novos arquivos lockfile.</li>
<li>Adicionado bundle lock <code class="language-plaintext highlighter-rouge">--add-checksums</code> para adicionar checksums a um arquivo lockfile existente</li>
</ul>
</li>
<li>
<p>JSON</p>
<ul>
<li>Melhorias de desempenho do <code class="language-plaintext highlighter-rouge">JSON.parse</code> cerca de 1,5 vezes mais rápido que json-2.7.x.</li>
</ul>
</li>
<li>
<p>Tempfile</p>
<ul>
<li>O argumento de palavra-chave <code class="language-plaintext highlighter-rouge">anonymous: true</code> foi implementado para Tempfile.create.
<code class="language-plaintext highlighter-rouge">Tempfile.create(anonymous: true)</code> remove o arquivo temporário criado imediatamente.
Assim, as aplicações não precisam remover o arquivo.
[<a href="https://bugs.ruby-lang.org/issues/20497">Feature #20497</a>]</li>
</ul>
</li>
<li>
<p>win32/sspi.rb</p>
<ul>
<li>Esta biblioteca agora foi extraída do repositório Ruby para <a href="https://github.com/ruby/net-http-sspi">ruby/net-http-sspi</a>.
[<a href="https://bugs.ruby-lang.org/issues/20775">Feature #20775</a>]</li>
</ul>
</li>
</ul>
<h2>Problemas de compatibilidade</h2>
<p>Nota: Excluindo correções de bugs.</p>
<ul>
<li>As mensagens de erro e exibições de backtrace foram alteradas.
<ul>
<li>Usa uma aspa simples em vez de um acento grave como uma aspa de abertura. [<a href="https://bugs.ruby-lang.org/issues/16495">Feature #16495</a>]</li>
<li>Exibe o nome de classe antes de um nome de método (somente quando a classe tiver um nome permanente). [<a href="https://bugs.ruby-lang.org/issues/19117">Feature #19117</a>]</li>
<li><code class="language-plaintext highlighter-rouge">Kernel#caller</code>, métodos de <code class="language-plaintext highlighter-rouge">Thread::Backtrace::Location</code>, etc. também foram alterados de acordo.</li>
</ul>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Antes:
test.rb:1:in `foo': undefined method `time' for an instance of Integer
from test.rb:2:in `<main>'
Agora:
test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer
from test.rb:2:in '<main>'
</code></pre></div> </div>
</li>
<li>
<p>A renderização de Hash#inspect foi alterada. [<a href="https://bugs.ruby-lang.org/issues/20433">Bug #20433</a>]</p>
<ul>
<li>Chaves de símbolo são exibidas usando a sintaxe moderna de chave de símbolo: <code class="language-plaintext highlighter-rouge">"{user: 1}"</code></li>
<li>Outras chaves agora têm espaços ao redor de <code class="language-plaintext highlighter-rouge">=></code>: <code class="language-plaintext highlighter-rouge">'{"user" => 1}'</code>, enquanto anteriormente não tinham: <code class="language-plaintext highlighter-rouge">'{"user"=>1}'</code></li>
</ul>
</li>
<li>
<p>Kernel#Float() agora aceita uma string decimal com a parte decimal omitida. [<a href="https://bugs.ruby-lang.org/issues/20705">Feature #20705</a>]</p>
<div class="language-rb highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="no">Float</span><span class="p">(</span><span class="s2">"1."</span><span class="p">)</span> <span class="c1">#=> 1.0 (anteriormente, um ArgumentError era levantado)</span>
<span class="no">Float</span><span class="p">(</span><span class="s2">"1.E-1"</span><span class="p">)</span> <span class="c1">#=> 0.1 (anteriormente, um ArgumentError era levantado)</span>
</code></pre></div> </div>
</li>
<li>
<p>String#to_f agora aceita uma string decimal com a parte decimal omitida. Note que o resultado muda quando um expoente é especificado. [<a href="https://bugs.ruby-lang.org/issues/20705">Feature #20705</a>]</p>
<div class="language-rb highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="s2">"1."</span><span class="p">.</span><span class="nf">to_f</span> <span class="c1">#=> 1.0</span>
<span class="s2">"1.E-1"</span><span class="p">.</span><span class="nf">to_f</span> <span class="c1">#=> 0.1 (anteriormente, 1.0 era retornado)</span>
</code></pre></div> </div>
</li>
<li>Refinement#refined_class foi removido. [<a href="https://bugs.ruby-lang.org/issues/19714">Feature #19714</a>]</li>
</ul>
<h2>Problemas de compatibilidade da biblioteca padrão</h2>
<ul>
<li>
<p>DidYouMean</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">DidYouMean::SPELL_CHECKERS[]=</code> e <code class="language-plaintext highlighter-rouge">DidYouMean::SPELL_CHECKERS.merge!</code> foram removidos.</li>
</ul>
</li>
<li>
<p>Net::HTTP</p>
<ul>
<li>Removidas as seguintes constantes obsoletas:
<ul>
<li><code class="language-plaintext highlighter-rouge">Net::HTTP::ProxyMod</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::NetPrivate::HTTPRequest</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPInformationCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPSuccessCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPRedirectionCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPRetriableCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPClientErrorCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPFatalErrorCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPServerErrorCode</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPResponseReceiver</code></li>
<li><code class="language-plaintext highlighter-rouge">Net::HTTPResponceReceiver</code></li>
</ul>
<p>Essas constantes foram obsoletas desde 2012.</p>
</li>
</ul>
</li>
<li>
<p>Timeout</p>
<ul>
<li>Rejeita valores negativos para Timeout.timeout. [<a href="https://bugs.ruby-lang.org/issues/20795">Bug #20795</a>]</li>
</ul>
</li>
<li>
<p>URI</p>
<ul>
<li>Alterado o parser padrão para compatível com RFC 3986 em vez de RFC 2396.
[<a href="https://bugs.ruby-lang.org/issues/19266">Bug #19266</a>]</li>
</ul>
</li>
</ul>
<h2>Atualizações da C API</h2>
<ul>
<li><code class="language-plaintext highlighter-rouge">rb_newobj</code> e <code class="language-plaintext highlighter-rouge">rb_newobj_of</code> (e macros correspondentes <code class="language-plaintext highlighter-rouge">RB_NEWOBJ</code>, <code class="language-plaintext highlighter-rouge">RB_NEWOBJ_OF</code>, <code class="language-plaintext highlighter-rouge">NEWOBJ</code>, <code class="language-plaintext highlighter-rouge">NEWOBJ_OF</code>) foram removidos. [<a href="https://bugs.ruby-lang.org/issues/20265">Feature #20265</a>]</li>
<li>Removida a função obsoleta <code class="language-plaintext highlighter-rouge">rb_gc_force_recycle</code>. [<a href="https://bugs.ruby-lang.org/issues/18290">Feature #18290</a>]</li>
</ul>
<h2>Mudanças diversas</h2>
<ul>
<li>
<p>Passar um bloco para um método que não usa o bloco passado mostrará
um aviso no modo verbose (<code class="language-plaintext highlighter-rouge">-w</code>).
[<a href="https://bugs.ruby-lang.org/issues/15554">Feature #15554</a>]</p>
</li>
<li>
<p>Redefinir alguns métodos principais que são especialmente otimizados pelo interpretador
e JIT como <code class="language-plaintext highlighter-rouge">String.freeze</code> ou <code class="language-plaintext highlighter-rouge">Integer#+</code> agora emite um aviso de classe de desempenho
(<code class="language-plaintext highlighter-rouge">-W:performance</code> ou <code class="language-plaintext highlighter-rouge">Warning[:performance] = true</code>).
[<a href="https://bugs.ruby-lang.org/issues/20429">Feature #20429</a>]</p>
</li>
</ul>
<p>Veja <a href="https://docs.ruby-lang.org/en/3.4/NEWS_md.html">NEWS</a>
ou <a href="https://github.com/ruby/ruby/compare/v3_3_0...v3_4_0">logs de commits</a>
para mais detalhes.</p>
<p>Com essas mudanças, <a href="https://github.com/ruby/ruby/compare/v3_3_0...v3_4_0#file_bucket">4942 arquivos alterados, 202244 inserções(+), 255528 deleções(-)</a>
desde Ruby 3.3.0!</p>
<p>Feliz Natal, Boas Festas e aproveite a programação com Ruby 3.4!</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 23153022
SHA1: 8ccb561848a7c460ae08e1a120a47c4a88a79335
SHA256: 068c8523442174bd3400e786f4a6952352c82b1b9f6210fd17fb4823086d3379
SHA512: bc70ecba27d1cdea00879f03487cad137a7d9ab2ad376cfb7a65780ad14da637fa3944eeeede2c04ab31eeafb970c64ccfeeb854c99c1093937ecc1165731562
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 17215572
SHA1: eb25447cc404e8d2e177c62550d0224ebd410e68
SHA256: 0081930db22121eb997207f56c0e22720d4f5d21264b5907693f516c32f233ca
SHA512: 776a2cf3e9ccc77c27500240f168aa3e996b0c7c1ee1ef5a7afc291a06c118444016fde38b5b139c0b800496b8eb1b5456562d833f0edc0658917164763b1af7
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0.zip">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 28310193
SHA1: 26254ca5d3decc28a4e5faec255995265e5270b5
SHA256: c120228038af04554f6363e716b0a32cbf53cf63c6adf9f2c22a24f43dc8b555
SHA512: 4d535ed10db76a6aa74f8a025df319deb28483a7a781c24045906ee7663f1cff9d9f9e71dbc993c9e050113a34b37c7fa2143c355a0a6e1e1029bf2c92213ecc
</code></pre></div> </div>
</li>
</ul>
<h2>O que é Ruby</h2>
<p>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.</p>
<p>Escrito por naruse em 25/12/2024<br />Traduzido por nbluis</p>
Wed, 25 Dec 2024 00:00:00 +0000
https://www.ruby-lang.org/pt/news/2024/12/25/ruby-3-4-0-released/
https://www.ruby-lang.org/pt/news/2024/12/25/ruby-3-4-0-released/
-
Ruby 3.4.0 rc1 Lançado
<p>Estamos felizes em anunciar o lançamento do Ruby 3.4.0-rc1.</p>
<h2>Prism</h2>
<p>Alterado o parser padrão de parse.y para Prism. [<a href="https://bugs.ruby-lang.org/issues/20564">Feature #20564</a>]</p>
<h2>GC Modular</h2>
<ul>
<li>
<p>Implementações alternativas de garbage collector (GC) podem ser carregadas dinamicamente
através do recurso de garbage collector modular. Para habilitar este recurso,
configure o Ruby com <code class="language-plaintext highlighter-rouge">--with-modular-gc</code> no momento da compilação. Bibliotecas de GC podem ser
carregadas em tempo de execução usando a variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_GC_LIBRARY</code>.
[<a href="https://bugs.ruby-lang.org/issues/20351">Feature #20351</a>]</p>
</li>
<li>
<p>O garbage collector embutido do Ruby foi dividido em um arquivo separado em
<code class="language-plaintext highlighter-rouge">gc/default/default.c</code> e interage com o Ruby usando uma API definida em
<code class="language-plaintext highlighter-rouge">gc/gc_impl.h</code>. O garbage collector embutido agora também pode ser compilado como uma
biblioteca usando <code class="language-plaintext highlighter-rouge">make modular-gc MODULAR_GC=default</code> e habilitado usando a
variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_GC_LIBRARY=default</code>. [<a href="https://bugs.ruby-lang.org/issues/20470">Feature #20470</a>]</p>
</li>
<li>
<p>Uma biblioteca experimental de GC é fornecida com base no <a href="https://www.mmtk.io/">MMTk</a>.
Esta biblioteca de GC pode ser compilada usando <code class="language-plaintext highlighter-rouge">make modular-gc MODULAR_GC=mmtk</code> e
habilitada usando a variável de ambiente <code class="language-plaintext highlighter-rouge">RUBY_GC_LIBRARY=mmtk</code>. Isso requer
a ferramenta Rust na máquina de compilação. [<a href="https://bugs.ruby-lang.org/issues/20860">Feature #20860</a>]</p>
</li>
</ul>
<h2>Mudanças na linguagem</h2>
<ul>
<li>
<p>Literais de string em arquivos sem um comentário <code class="language-plaintext highlighter-rouge">frozen_string_literal</code> agora emitem um aviso de descontinuação
quando são mutados.
Esses avisos podem ser habilitados com <code class="language-plaintext highlighter-rouge">-W:deprecated</code> ou configurando <code class="language-plaintext highlighter-rouge">Warning[:deprecated] = true</code>.
Para desativar essa mudança, você pode executar o Ruby com o argumento de linha de comando <code class="language-plaintext highlighter-rouge">--disable-frozen-string-literal</code>. [<a href="https://bugs.ruby-lang.org/issues/20205">Feature #20205</a>]</p>
</li>
<li>
<p><code class="language-plaintext highlighter-rouge">it</code> foi adicionado para referenciar um parâmetro de bloco. [<a href="https://bugs.ruby-lang.org/issues/18980">Feature #18980</a>]</p>
</li>
<li>
<p>O splatting de palavra-chave <code class="language-plaintext highlighter-rouge">nil</code> ao chamar métodos agora é suportado.
<code class="language-plaintext highlighter-rouge">**nil</code> é tratado de maneira semelhante a <code class="language-plaintext highlighter-rouge">**{}</code>, não passando palavras-chave,
e não chamando nenhum método de conversão. [<a href="https://bugs.ruby-lang.org/issues/20064">Bug #20064</a>]</p>
</li>
<li>
<p>Passagem de bloco não é mais permitida em índice. [<a href="https://bugs.ruby-lang.org/issues/19918">Bug #19918</a>]</p>
</li>
<li>
<p>Argumentos de palavra-chave não são mais permitidos em índice. [<a href="https://bugs.ruby-lang.org/issues/20218">Bug #20218</a>]</p>
</li>
</ul>
<h2>YJIT</h2>
<p>TL;DR:</p>
<ul>
<li>Melhor desempenho na maioria dos benchmarks em plataformas x86-64 e arm64.</li>
<li>Uso reduzido de memória de metadados de compilação</li>
<li>Várias correções de bugs. YJIT agora é ainda mais robusto e melhor testado.</li>
</ul>
<p>Novos recursos:</p>
<ul>
<li>Adiciona limite de memória unificado via opção de linha de comando <code class="language-plaintext highlighter-rouge">--yjit-mem-size</code> (padrão 128MiB)
que rastreia o uso total de memória do YJIT e é mais intuitivo do que o
antigo <code class="language-plaintext highlighter-rouge">--yjit-exec-mem-size</code>.</li>
<li>Mais estatísticas agora sempre disponíveis via <code class="language-plaintext highlighter-rouge">RubyVM::YJIT.runtime_stats</code></li>
<li>Adiciona log de compilação para rastrear o que é compilado via <code class="language-plaintext highlighter-rouge">--yjit-log</code>
<ul>
<li>Final do log também disponível em tempo de execução via <code class="language-plaintext highlighter-rouge">RubyVM::YJIT.log</code></li>
</ul>
</li>
<li>Adiciona suporte para constantes compartilháveis em modo multi-ractor</li>
<li>Agora pode rastrear saídas contadas com <code class="language-plaintext highlighter-rouge">--yjit-trace-exits=COUNTER</code></li>
</ul>
<p>Novas otimizações:</p>
<ul>
<li>Contexto comprimido reduz a memória necessária para armazenar metadados do YJIT</li>
<li>Alocador aprimorado com capacidade de alocar registradores para variáveis locais</li>
<li>Quando o YJIT está habilitado, use mais primitivas Core escritas em Ruby:
<ul>
<li><code class="language-plaintext highlighter-rouge">Array#each</code>, <code class="language-plaintext highlighter-rouge">Array#select</code>, <code class="language-plaintext highlighter-rouge">Array#map</code> reescritos em Ruby para melhor desempenho [<a href="https://bugs.ruby-lang.org/issues/20182">Feature #20182</a>].</li>
</ul>
</li>
<li>Capacidade de inline de métodos pequenos/triviais, como:
<ul>
<li>Métodos vazios</li>
<li>Métodos que retornam uma constante</li>
<li>Métodos que retornam <code class="language-plaintext highlighter-rouge">self</code></li>
<li>Métodos que retornam diretamente um argumento</li>
</ul>
</li>
<li>Geração de código especializada para muitos mais métodos em tempo de execução</li>
<li>Otimiza <code class="language-plaintext highlighter-rouge">String#getbyte</code>, <code class="language-plaintext highlighter-rouge">String#setbyte</code> e outros métodos de string</li>
<li>Otimiza operações bitwise para acelerar a manipulação de bits/bytes de baixo nível</li>
<li>Várias outras otimizações incrementais</li>
</ul>
<h2>Atualizações das classes principais</h2>
<p>Nota: Estamos listando apenas atualizações notáveis das classes principais.</p>
<ul>
<li>
<p>Exception</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">Exception#set_backtrace</code> agora aceita um array de <code class="language-plaintext highlighter-rouge">Thread::Backtrace::Location</code>.
<code class="language-plaintext highlighter-rouge">Kernel#raise</code>, <code class="language-plaintext highlighter-rouge">Thread#raise</code> e <code class="language-plaintext highlighter-rouge">Fiber#raise</code> também aceitam este novo formato. [<a href="https://bugs.ruby-lang.org/issues/13557">Feature #13557</a>]</li>
</ul>
</li>
<li>
<p>Range</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">Range#size</code> agora levanta <code class="language-plaintext highlighter-rouge">TypeError</code> se o intervalo não for iterável. [<a href="https://bugs.ruby-lang.org/issues/18984">Misc #18984</a>]</li>
</ul>
</li>
</ul>
<h2>Problemas de compatibilidade</h2>
<p>Nota: Excluindo correções de bugs.</p>
<ul>
<li>As mensagens de erro e exibições de backtrace foram alteradas.
<ul>
<li>Usa uma aspa simples em vez de um acento grave como uma aspa de abertura. [<a href="https://bugs.ruby-lang.org/issues/16495">Feature #16495</a>]</li>
<li>Exibe o nome de classe antes de um nome de método (somente quando a classe tiver um nome permanente). [<a href="https://bugs.ruby-lang.org/issues/19117">Feature #19117</a>]</li>
<li><code class="language-plaintext highlighter-rouge">Kernel#caller</code>, métodos de <code class="language-plaintext highlighter-rouge">Thread::Backtrace::Location</code>, etc. também foram alterados de acordo.</li>
</ul>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Antes:
test.rb:1:in `foo': undefined method `time' for an instance of Integer
from test.rb:2:in `<main>'
Agora:
test.rb:1:in 'Object#foo': undefined method 'time' for an instance of Integer
from test.rb:2:in '<main>'
</code></pre></div> </div>
</li>
</ul>
<h2>Atualizações da C API</h2>
<ul>
<li><code class="language-plaintext highlighter-rouge">rb_newobj</code> e <code class="language-plaintext highlighter-rouge">rb_newobj_of</code> (e macros correspondentes <code class="language-plaintext highlighter-rouge">RB_NEWOBJ</code>, <code class="language-plaintext highlighter-rouge">RB_NEWOBJ_OF</code>, <code class="language-plaintext highlighter-rouge">NEWOBJ</code>, <code class="language-plaintext highlighter-rouge">NEWOBJ_OF</code>) foram removidos. [<a href="https://bugs.ruby-lang.org/issues/20265">Feature #20265</a>]</li>
<li>Removida a função obsoleta <code class="language-plaintext highlighter-rouge">rb_gc_force_recycle</code>. [<a href="https://bugs.ruby-lang.org/issues/18290">Feature #18290</a>]</li>
</ul>
<h2>Mudanças diversas</h2>
<ul>
<li>
<p>Passar um bloco para um método que não usa o bloco passado mostrará
um aviso no modo verbose (<code class="language-plaintext highlighter-rouge">-w</code>).
[<a href="https://bugs.ruby-lang.org/issues/15554">Feature #15554</a>]</p>
</li>
<li>
<p>Redefinir alguns métodos principais que são especialmente otimizados pelo interpretador
e JIT como <code class="language-plaintext highlighter-rouge">String.freeze</code> ou <code class="language-plaintext highlighter-rouge">Integer#+</code> agora emite um aviso de classe de desempenho
(<code class="language-plaintext highlighter-rouge">-W:performance</code> ou <code class="language-plaintext highlighter-rouge">Warning[:performance] = true</code>).
[<a href="https://bugs.ruby-lang.org/issues/20429">Feature #20429</a>]</p>
</li>
</ul>
<p>Veja lançamentos no GitHub como <a href="https://github.com/ruby/logger/releases">Logger</a> ou
changelog para detalhes das gems padrão ou gems incluídas.</p>
<p>Veja <a href="https://github.com/ruby/ruby/blob/v3_4_0_rc1/NEWS.md">NEWS</a>
ou <a href="https://github.com/ruby/ruby/compare/v3_3_0...v3_4_0_rc1">logs de commits</a>
para mais detalhes.</p>
<p>Com essas mudanças, <a href="https://github.com/ruby/ruby/compare/v3_3_0...v3_4_0_rc1#file_bucket">4820 arquivos alterados, 196907 inserções(+), 253488 deleções(-)</a>
desde Ruby 3.3.0!</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-rc1.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-rc1.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 23055998
SHA1: 216e3085ab8b886b9f74943ee5b62bd2e3d86671
SHA256: 1f3187d3366e90af6d760994f8bfe1fe8999a8ba3553ea4dcfae63e548236e2a
SHA512: 0b0420a39c0bf3b38600d4e28805a581c4b5a6cf2abe41be8c8164276a8044a19e676de74eea5dd5b4d7d667d821a6144119795fea510fd4ba6e34865a2ae172
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-rc1.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-rc1.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 17116016
SHA1: 1424671cdc9c4bfe3778ac159d917c8bfe6107bd
SHA256: 9c54225747f7a786727aa6213503083d5d8ff7097505d4b7456ff60880ee4a17
SHA512: 5b92a2b5829ab23735617945839e45df984b319b8932e790a8e0c6f681b9bd74249511a76345516cc216c002ed7887bdd27151501491d5ecedc20acd3fb57cc5
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-rc1.zip">https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.0-rc1.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 28323595
SHA1: 4ae8ce4b15ccc3f0c6f42e408c44aa287a1ccc14
SHA256: 653162a2db627e8e5feee22a00b20acf215509d88b06ffb281bc8788ed12c74c
SHA512: c6c6b9a0e61308e3f3303cd148613feabb2ee12d8e2fefc1f4aa1403237310f7c9be5e2031248ea89ff01cdc0bca1a66ff60f9f1f19ed9c9fccef3d7a3bbebb8
</code></pre></div> </div>
</li>
</ul>
<h2>O que é Ruby</h2>
<p>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.</p>
<p>Escrito por naruse em 12/12/2024<br />Traduzido por nbluis</p>
Thu, 12 Dec 2024 00:00:00 +0000
https://www.ruby-lang.org/pt/news/2024/12/12/ruby-3-4-0-rc1-released/
https://www.ruby-lang.org/pt/news/2024/12/12/ruby-3-4-0-rc1-released/
-
Ruby 3.3.6 Lançado
<p>Ruby 3.3.6 foi lançado.</p>
<p>Esta é uma atualização de rotina que inclui correções de bugs menores.
Esta versão também para de notificar sobre a ausência de dependências de gems padrões que serão incorporadas no Ruby 3.5.
Para mais detalhes, por favor, consulte <a href="https://github.com/ruby/ruby/releases/tag/v3_3_6">as notas de lançamento no GitHub</a>.</p>
<h2>Cronograma de Lançamento</h2>
<p>Conforme <a href="https://www.ruby-lang.org/en/news/2024/07/09/ruby-3-3-4-released/">anunciado</a> anteriormente, pretendemos lançar a versão estável mais recente do Ruby (atualmente Ruby 3.3) a cada 2 meses após um lançamento <code class="language-plaintext highlighter-rouge">.1</code>.</p>
<p>Esperamos lançar o Ruby 3.3.7 em 7 de janeiro. Se surgirem mudanças significativas que impactem um grande número de usuários, podemos lançar uma nova versão antes do previsto.</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 22153657
SHA1: 0106171cd1801fb5663e8e709f3d6c935d683c9b
SHA256: 8dc48fffaf270f86f1019053f28e51e4da4cce32a36760a0603a9aee67d7fd8d
SHA512: 4ae22f5c2a1f7ed84aab7587ff04ce4d9933cffe4347deaef0ab88d22c9780f274c1664a4ee1dd8235bc3cc749be828ffa8db7cb5f5002339a59a599acf3c729
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 16398228
SHA1: 25391e9bd8547cd07e09afcfc472777520a3178a
SHA256: 540975969d1af42190d26ff629bc93b1c3f4bffff4ab253e245e125085e66266
SHA512: c4b86188bf539fa737932e1ba5b746bc295e7c43b2f8cca2668eb7c88aa7228e2ce9032bbcd244a7d558a11bc842445b5fbeac3503ca7d223b63c53e08dba4ab
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.zip">https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 27048656
SHA1: 88239456249cd80cadd1cbf98a317ae700ccd9df
SHA256: a60240a6f9bcc8db6c07d40ad29c7dceb21430debe3ebc39bf339207818132f6
SHA512: c010c7d3e2b373b41a18bcadfb6dba276afabe479d75624569b5bdc605f3575bced2aff511708e25ceca43c7c918400222329e55e599c54154f203957f119ad2
</code></pre></div> </div>
</li>
</ul>
<h2>Comentário sobre o Lançamento</h2>
<p>Muitos committers, desenvolvedores e usuários que forneceram relatórios de bugs nos ajudaram a fazer este lançamento.
Obrigado pelas suas contribuições.</p>
<p>Escrito por k0kubun em 05/11/2024<br />Traduzido por nbluis</p>
Tue, 05 Nov 2024 04:25:00 +0000
https://www.ruby-lang.org/pt/news/2024/11/05/ruby-3-3-6-released/
https://www.ruby-lang.org/pt/news/2024/11/05/ruby-3-3-6-released/
-
Ruby 3.2.6 Lançado
<p>Ruby 3.2.6 foi lançado.</p>
<p>Por favor, consulte os <a href="https://github.com/ruby/ruby/releases/tag/v3_2_6">lançamentos no GitHub</a> para mais detalhes.</p>
<h2>Download</h2>
<ul>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.tar.gz">https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.tar.gz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 20521981
SHA1: bbf265f5e7a3f480056dc2fa6d600a97cba00713
SHA256: d9cb65ecdf3f18669639f2638b63379ed6fbb17d93ae4e726d4eb2bf68a48370
SHA512: 26ae9439043cf40e5eddde6b92ae51c9e1fa4e89c8ec6da36732c59c14873b022c683fb3007950d372f35de9b62a4fabbbc3ef1f4ef58cd53058bd56e1552cbe
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.tar.xz">https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.tar.xz</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 15126888
SHA1: eabbe230df704e7141d53d8221314bb33b5f0dea
SHA256: 671134022238c2c4a9d79dc7d1e58c909634197617901d25863642f735a27ecb
SHA512: 78f7fc76d47c772b9bc313cbcb57a2c0f1a975e09cfe46a3083f6f603d62b0031bd4c55896c8353c1c343974d45077e06e310111198d870883e06a0cf6fd03ce
</code></pre></div> </div>
</li>
<li>
<p><a href="https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.zip">https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.6.zip</a></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>TAMANHO: 24653808
SHA1: efbcfc2c2e238a7201366fdefdcf0dc16e4072af
SHA256: 36ca2292b48d8f6a0281d6c772dc47c358cb838774addc0344e38d4d2735704f
SHA512: 8474829ebe13b3357f962571e8114e47634b5ed1f3e2dbfdf4ecb2ece1a3ed354f3506e8526a6768457e980ea4f056d77cd5b547419f2d8f9bea07348f64edc2
</code></pre></div> </div>
</li>
</ul>
<h2>Comentário do Lançamento</h2>
<p>Muitos committers, desenvolvedores e usuários que forneceram relatórios de bugs nos ajudaram a fazer este lançamento.
Obrigado pelas suas contribuições.</p>
<p>Escrito por nagachika em 30/10/2024<br />Traduzido por nbluis</p>
Wed, 30 Oct 2024 10:00:00 +0000
https://www.ruby-lang.org/pt/news/2024/10/30/ruby-3-2-6-released/
https://www.ruby-lang.org/pt/news/2024/10/30/ruby-3-2-6-released/