CEVIU Logo
Voltar

Ruby 3.5: novidades, data de lançamento e o que esperar da próxima versão

Aprofundamento CEVIU

Aprofundamento

O Ruby 3.5, lançado em sua versão preview1 em 18 de abril de 2025, não é uma versão intermediária entre o Ruby 3.4 e o Ruby 4.0 — é um ciclo paralelo de desenvolvimento com foco em estabilidade, desempenho e refatoração profunda. Diferentemente do que muitos supõem ao ler 'Ruby 3.5', essa versão não substitui o Ruby 4.0 (lançado em dezembro de 2024), mas coexiste como uma alternativa otimizada para cenários que priorizam compatibilidade incremental e correções de longo prazo. A mudança mais impactante é a promoção da classe Set do stdlib para o core da linguagem, implementada em C com tabela hash otimizada: isso reduz uso de memória em até 33% e acelera operações em grandes conjuntos sem quebra de API. Também foi introduzido suporte nativo a Unicode 15.1.0 e Emoji 15.1, essencial para aplicações globais com processamento de texto moderno.

As Ractors recebem atualizações críticas: o novo Ractor::Port substitui métodos obsoletos como Ractor.yield, Ractor#take e Ractor.select, exigindo adaptação imediata de código concorrente. Paralelamente, o Ruby 3.5 traz ganhos reais de performance na alocação de objetos: com YJIT ativado, Class#new fica até 6,5× mais rápido com argumentos nomeados e 2,3× mais rápido com argumentos posicionais comparado ao Ruby 3.4. A linguagem de assinatura de tipo RBS 3.5 também evolui com chaves opcionais (?key:) e parâmetros sem tipo ((?)), fortalecendo a adoção de tipagem estática em projetos escaláveis.

Por que isso importa

O Ruby 3.5 importa porque resolve problemas reais enfrentados por equipes em produção: falhas silenciosas de dependência com require transitório, lentidão em operações de conjunto massivas e inconsistências na inspeção de objetos cíclicos. A remoção de métodos legados de Ractor e a nova política de escopo em Binding (que agora rejeita parâmetros numerados) eliminam comportamentos ambíguos que causavam bugs difíceis de rastrear. Além disso, a limitação no escopo de variáveis locais em Binding e a introdução de instance_variables_to_inspect aumentam a previsibilidade em debugging e ferramentas de análise estática — fatores críticos para times que adotam CI/CD rigoroso ou migração para Ruby 4.0. Para arquitetos de sistemas, o Ruby 3.5 funciona como um 'canário' seguro: permite testar melhorias de concorrência e desempenho antes de migrar para o modelo radical do Ruby 4.0 com Ruby::Box e ZJIT.

Impacto para desenvolvedores

Desenvolvedores precisam revisar imediatamente código que usa Ractor.yield, Ractor#take ou Ractor.select, pois esses métodos foram removidos na preview1 do Ruby 3.5 e serão indisponíveis no release final. A substituição recomendada é usar Ractor::Port.send e .recv, exigindo refatoração em aplicações que dependem de comunicação entre Ractors. Também é necessário ajustar testes que verificam Binding#local_variables com parâmetros numerados — agora rejeitados — e garantir que chamadas a nil.to_a sejam substituídas por lógica explícita, já que o comportamento foi alterado para alinhar com **nil. Projetos que usam CGI devem migrar para alternativas como Rack ou WEBrick, pois partes da biblioteca foram removidas. Por fim, times que adotam RBS devem atualizar seus tipos para usar a nova sintaxe de chaves opcionais (?nome:) e parâmetros sem tipo ((?)), especialmente em gems públicas compatíveis com Ruby 3.5.

Perguntas frequentes

Quando o Ruby 3.5 vai ser lançado?

A versão preview1 do Ruby 3.5 foi lançada em 18 de abril de 2025. O lançamento da versão estável (Ruby 3.5.0) está previsto para dezembro de 2025, seguindo o calendário tradicional da equipe de desenvolvimento do Ruby, conforme confirmado no repositório oficial ruby/ruby e nas atualizações do Ruby Release Team.

O que mudou no Ractor no Ruby 3.5?

No Ruby 3.5, métodos legados de Ractor como Ractor.yield, Ractor#take, Ractor.select, Ractor#close_incoming e Ractor#close_outgoing foram removidos. Foi introduzido Ractor::Port para sincronização segura, exigindo que desenvolvedores substituam Ractor.yield por port.send e ractor.take por port.recv. Essas mudanças visam simplificar a concorrência e evitar condições de corrida.

Ruby 3.5 é compatível com Ruby 4.0?

Ruby 3.5 e Ruby 4.0 são versões paralelas com objetivos distintos: Ruby 3.5 prioriza estabilidade, correções incrementais e otimizações de desempenho com menor risco de quebra; Ruby 4.0 introduz inovações radicais como Ruby::Box e ZJIT. Não há incompatibilidade direta, mas não são intercambiáveis — projetos devem escolher o ciclo de versão conforme necessidade de inovação versus previsibilidade.

Por que Set foi movida para o core no Ruby 3.5?

A classe Set foi promovida do stdlib para o core no Ruby 3.5 para melhorar desempenho e eficiência de memória: implementada em C com tabela hash otimizada, ela reduz uso de memória em até 33% para grandes conjuntos e mantém compatibilidade total com a API existente. Essa mudança atende à demanda de frameworks como Rails e Hanami por estruturas de dados mais rápidas sem custo de adoção.

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Web Dev
Publicado
10 de junho de 2026
Fonte
CEVIU Web Dev

Quer receber mais sobre CEVIU Web Dev?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser