Voltar
Rust 1.100.0 chega com never type estável e allocator_api

Rust 1.100.0 chega com never type estável e allocator_api

Aprofundamento CEVIU

Aprofundamento

O never type (!) é o tipo uninhabited canônico do Rust. Ele representa computações divergentes, aquelas que nunca resolvem para valor algum, como return, break e std::process::exit. O que o diferencia de outros tipos sem valores possíveis é a coerção never-to-any: ! vira qualquer outro tipo, o que permite, por exemplo, não retornar valor em um ramo de match ou if. A estabilização levou 10 anos e 5 tentativas fracassadas, e agora o tipo pode ser nomeado em qualquer lugar. Infallible virou alias de !, então APIs antigas baseadas nele seguem compatíveis.

O preço é uma breaking change: o never type fallback passou de () para ! nas editions 2015, 2018 e 2021, como já era na 2024. O impacto deve ser pequeno, mas pode aparecer ao ignorar o resultado de uma função que retorna um parâmetro genérico, e o compilador pode marcar mais código como inalcançável. Se uma dependência quebrar, a recomendação é atualizá-la, porque correções em crates públicos já foram publicadas.

A versão também estabiliza o núcleo da allocator_api. Com a trait Allocator, autores de bibliotecas definem allocators customizados para Vec e Box. É a base do project goal Allocators 1.0, e mais estabilizações são esperadas. Chega ainda o core::mem::DropGuard, que executa uma closure ao ser descartado e tem o método dismiss para cancelar a execução, útil em operações transacionais com rollback. No Cargo, há aviso de dependências não usadas, novo layout do build-dir e resolução com idade mínima de publicação (dependency cooldowns), contra ataques de supply chain.

O que mudou

A cobertura do CEVIU mostra a cadência da linguagem em 2026. Em 17 de abril de 2026, o CEVIU noticiou o "Anunciado Rust 1.95.0", com cfg_select! e if let guards em match. Em 29 de maio de 2026, veio o "Anunciado o Rust 1.96.0 com Tipos core::range Estabilizados e Melhorias no Cargo". Em 21 de agosto de 2026, o "Rust 1.98.0 Otimiza Cálculos de Ponto Flutuante e Acelera Formatação". A 1.100.0 segue essa linha de estabilizações graduais, mas com uma peça que esperava há uma década.

Em 3 de novembro de 2026, o CEVIU também noticiou o "Rustup 1.29.3 corrige regressões em CPUs x86_64 sem SSE4.1 e no Solaris". O rustup é o caminho de atualização citado para chegar à 1.100.0.

Por que isso importa

Para quem opera Rust em produção, a leitura prática é: atualize em CI primeiro e observe warnings de código inalcançável, sobretudo em projetos ainda nas editions 2018 e 2021. Para quem constrói infraestrutura, a allocator_api estável abre espaço para arenas e controle de memória sem depender de nightly. Já o cooldown de dependências do Cargo é uma defesa barata de ligar, mas não substitui a revisão de atualizações.

Linha do tempo

  1. CEVIU noticia o Rust 1.95.0, com cfg_select! e if let guards.

  2. Rust 1.96.0 estabiliza os tipos core::range.

  3. Rust 1.98.0 traz operações algébricas de ponto flutuante.

  4. Rustup 1.29.3 corrige regressões em x86_64 sem SSE4.1 e no Solaris.

  5. Rust 1.100.0 estabiliza o never type e o núcleo da allocator_api.

Perguntas frequentes

O que é o never type no Rust?

É o tipo escrito como ! no código, que representa computações que nunca produzem valor, como return, break e std::process::exit. Ele pode ser coagido para qualquer outro tipo. Na 1.100.0, ele ficou estável e pode ser nomeado em qualquer lugar.

A atualização para o Rust 1.100.0 pode quebrar meu código?

É raro, mas possível. O never type fallback passou de () para ! nas editions 2015, 2018 e 2021, o que pode afetar casos como ignorar o resultado de função que retorna parâmetro genérico. Se uma dependência falhar por isso, atualize-a, pois correções podem já existir.

O que a allocator_api estável permite fazer?

Autores de bibliotecas podem definir allocators customizados via trait Allocator e usá-los com Vec e Box. É a base do project goal Allocators 1.0. Outras coleções e tipos de ponteiro ainda devem ser estabilizados.

Como funciona o cooldown de dependências do Cargo?

Você configura uma idade mínima de publicação no .cargo/config.toml, e o Cargo ignora versões publicadas mais recentemente que isso. Versões sem o campo pubtime no índice nunca são barradas, e o cargo install ignora o limite. A equipe avisa que não é defesa completa.

Fontes

Avalie este artigo:
Categoria
CEVIU Startups, Tecnologia e Programação
Publicado
12 de novembro de 2026
Editoria
CEVIU Startups, Tecnologia e Programação

Quer receber mais sobre CEVIU Startups, Tecnologia e Programação?

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

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser