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.
Links relacionados
- Categoria
- CEVIU Web Dev
- Publicado
- 10 de junho de 2026
- Fonte
- CEVIU Web Dev
