A equipe oficial do Rust anunciou a disponibilização da versão estável 1.97.0. O novo release traz melhorias significativas no esquema de symbol mangling, na forma como o Cargo lida com avisos de compilação e na visibilidade das mensagens do linker.
Usuários que já utilizam o rustup podem atualizar para a versão estável com o comando:
rustup update stable
Caso ainda não tenha o rustup instalado, ele pode ser obtido na página de download oficial do projeto.
Principais novidades da Rust 1.97.0
Mangling de símbolos v0 ativado por padrão
Ao gerar arquivos objeto e binários, o compilador Rust cria um símbolo único para cada item (funções, variáveis estáticas etc.). O novo esquema de mangling v0 substitui o antigo baseado no Itanium ABI, trazendo:
- Preservação dos valores de parâmetros genéricos em vez de usar apenas um hash.
- Eliminação de inconsistências que exigiam demangling customizado.
Desde a versão 1.59 era possível optar por esse esquema via -Csymbol-mangling-version=v0. A partir de novembro de 2025 ele já era padrão em nightly; a 1.97.0 o torna padrão também em stable. O modo legado permanece disponível apenas em nightly e será removido futuramente. Mais detalhes podem ser encontrados no post anterior do blog do Rust.
Cargo passa a controlar o tratamento de warnings
A prática de transformar avisos em erros (RUSTFLAGS=-Dwarnings) é comum em pipelines de CI. Na 1.97.0 o Cargo introduz a variável de ambiente CARGO_BUILD_WARNINGS, que permite três modos:
allow– suprime avisos (útil durante refatorações).warn– comportamento padrão, apenas exibe avisos.deny– impede a compilação caso existam avisos, ideal para CI.
Exemplo de uso local:
CARGO_BUILD_WARNINGS=allow cargo check
Em ambientes de integração contínua:
CARGO_BUILD_WARNINGS=deny cargo build --keep-going
A configuração via Cargo não invalida o cache de compilação, facilitando a alternância entre os modos.
Mensagens do linker deixam de ser ocultas por padrão
Historicamente, o rustc silenciava a saída do linker quando a ligação terminava sem erros, o que podia esconder problemas reais. A partir da 1.97.0, essas mensagens são exibidas como um lint de aviso (#[warn(linker_messages)]). Caso alguma mensagem seja considerada um falso‑positivo, ela pode ser silenciada no Cargo.toml:
[lints.rust]
linker_messages = "allow"
O lint linker_messages não faz parte do grupo geral de avisos, pois a saída do linker varia entre plataformas e nem sempre pode ser controlada com precisão pelo compilador.
APIs estabilizadas na 1.97.0
RepeatNagora tem valor padrão.- Implementação de
Copyparaffi::FromBytesUntilNulError. - Trait
Sendhabilitada parastd::fs::Fileem ambientes UEFI. - Métodos auxiliares para inteiros e tipos
NonZerocomoisolate_highest_one,highest_one,bit_width, entre outros. - Constantes e funções anteriormente estáveis agora podem ser usadas em contextos
const, comochar::is_control.
A lista completa de mudanças pode ser consultada nas notas de lançamento oficiais.
Como participar dos testes futuros
Desenvolvedores interessados em testar versões pré‑release podem mudar o canal padrão do rustup:
rustup default beta # para a versão beta
rustup default nightly # para a versão nightly
Qualquer bug encontrado deve ser reportado no repositório oficial.
Agradecimentos
A versão 1.97.0 foi produzida por uma comunidade ampla de contribuidores. O agradecimento vai a todos que colaboraram, revisaram código e reportaram issues, tornando o Rust cada vez mais robusto e confiável.