A equipe Rust lançou o Rust 1.100.0 em 12 de novembro de 2026. A atualização chega com o comando rustup update stable e traz um dos recursos mais aguardados da história da linguagem: o tipo never finalmente estável, depois de 10 anos e cinco tentativas frustradas de estabilização. O anúncio oficial foi publicado no blog da linguagem.
O tipo never, enfim estável
O tipo never, escrito como ! no código, é o tipo das computações que nunca produzem um valor — como return, break e std::process::exit. Até agora, ele só podia aparecer como tipo de retorno de função (-> !); nesta versão, ele pode ser usado em qualquer posição de tipo, por exemplo em Result<T, !>, que expressa no próprio tipo que uma operação não pode falhar.
A versão também transforma Infallible em um apelido do tipo never, o que torna antigas APIs compatíveis com !. Para isso, foi necessária uma pequena mudança de compatibilidade: a inferência de tipo em expressões divergentes passa a usar ! em vez de () nas edições anteriores a 2024 (2015, 2018 e 2021). Segundo o LWN, a equipe mediu o impacto com o crater, que compila todos os crates públicos do crates.io: cerca de 3.300 crates foram afetados, mas apenas sete ficaram totalmente quebrados, e correções já foram enviadas aos crates públicos atingidos.
Alocadores personalizados para Vec e Box
O Rust 1.100 estabiliza o núcleo da API Allocator, que permite a autores de bibliotecas definir alocadores personalizados para tipos da biblioteca padrão — por enquanto, Vec e Box, com métodos como Vec::new_in e Box::new_in. É a base do projeto Allocators 1.0, com mais coleções e tipos de ponteiro a caminho.
DropGuard e tipos de tamanho zero
O novo core::mem::DropGuard executa um closure quando o valor sai de escopo, em qualquer caminho de saída — retorno, ? ou pânico — e oferece o método dismiss para liberar a guarda, o que facilita APIs transacionais com rollback. Já std::mem::conjure_zst é a forma dedicada e insegura (unsafe) de criar valores de tipos de tamanho zero quando isso é sabidamente seguro.
Cargo contra dependências esquecidas e ataques à cadeia de suprimentos
O Cargo passa a avisar sobre dependências não usadas, com o lint cargo::unused_dependencies, ativado por padrão como aviso e configurável na tabela [lints.cargo] do Cargo.toml. É o primeiro passo do novo sistema de lints do Cargo.
A versão também estabiliza o min-publish-age, conhecido como "cooldown" de dependências: com registry.global-min-publish-age = "3 days", o Cargo ignora versões publicadas há menos tempo que o prazo, porque versões maliciosas costumam ser detectadas em horas ou dias. No exemplo do anúncio, o cargo update manteve o clap 4.6.7 e deixou de fora o 4.6.9, publicado há dois dias. A própria equipe ressalta que o recurso reduz o risco, mas não é uma defesa completa — e o cargo install ignora o prazo mínimo.
Outros destaques
A biblioteca padrão ganha o método bool::toggle, que inverte um booleano no lugar. Em plataformas, o alvo wasm32-wasip3 foi promovido a Tier 2, enquanto os alvos Windows de 32 bits (i686) deixam de distribuir ferramentas do compilador e passam a receber apenas a biblioteca padrão. A atualização também reduz colisões de cache do Cargo ao reorganizar o diretório de build.
Fontes
- Rust Blog — Announcing Rust 1.100.0 (oficial)
- Rust — Release Notes 1.100.0 (oficial)
- LWN.net — Stabilizing Rust's never type
- dev.to — Rust 1.100: 3 errors become zero with the never type
Imagem: logotipo Rust, Rust Foundation, CC BY 4.0, via Wikimedia Commons.
Transparência: Este conteúdo foi criado, editado ou revisado com auxílio de inteligência artificial. As informações foram cruzadas com publicações públicas no X e fontes disponíveis na internet. Consulte as fontes originais para verificar o contexto completo.
Por Muse