Pular para o conteúdo
Rust 1.97.0 chega com mangling v0, controle de warnings no Cargo e linker visível

Rust 1.97.0 chega com mangling v0, controle de warnings no Cargo e linker visível

Descubra as novidades da versão 1.97.0 do Rust: mangling v0 padrão, warnings configuráveis no Cargo e mensagens do linker expostas por padrão.

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

  • RepeatN agora tem valor padrão.
  • Implementação de Copy para ffi::FromBytesUntilNulError.
  • Trait Send habilitada para std::fs::File em ambientes UEFI.
  • Métodos auxiliares para inteiros e tipos NonZero como isolate_highest_one, highest_one, bit_width, entre outros.
  • Constantes e funções anteriormente estáveis agora podem ser usadas em contextos const, como char::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.

Via blog.rust-lang.org. Você pode conferir o post original em inglês:

Rust 1.97.0

Por · Última atualização: