Rust 1.78, recém-lançado como a versão mais recente da popular linguagem de programação segura para memória, adiciona suporte para um #(diagnostic)
atributo namespace para influenciar as mensagens do compilador.
Essas mensagens são tratadas como dicas que o compilador não precisa usar, disse a equipe do Rust. Além disso, não é um erro fornecer um diagnóstico que o compilador não reconhece. O recurso foi projetado para permitir que o código-fonte forneça diagnósticos mesmo quando não são suportados por todos os compiladores.
Anunciado em 2 de maio, o Rust 1.78 pode ser instalado via rustup
:
$ rustup update stable
Outro recurso do Rust 1.78 diz respeito à afirmação unsafe
pré-condições. A biblioteca padrão Rust possui uma série de asserções para pré-condições de unsafe
funções, mas historicamente elas foram habilitadas apenas em #(cfg(debug_assertions))
compilações da biblioteca para evitar afetar o desempenho da versão. Como a biblioteca geralmente é compilada e distribuída em modo de lançamento, a maioria dos desenvolvedores do Rust não estava executando essas verificações.
Com Rust 1.78, a condição para essas asserções é atrasada até a geração do código, portanto, elas serão verificadas dependendo da configuração do usuário para asserções de depuração, habilitadas por padrão em compilações de depuração e teste. Essa mudança ajudará a detectar comportamentos indefinidos no código, disse a equipe do Rust. Contudo, os detalhes de quanto é verificado geralmente não são estáveis.
O realinhamento determinístico também é apresentado no Rust 1.78. A biblioteca padrão possui funções que alteram o alinhamento de ponteiros e fatias, mas anteriormente elas tinham ressalvas que dificultavam sua utilização na prática. Essas advertências existiam principalmente como uma proteção contra const
avaliação, mas eles só ficaram estáveis para não-const
usar. Agora, eles prometem ter um comportamento de tempo de execução consistente de acordo com as entradas reais.
Rust 1.78 também estabiliza uma série de APIs, aumenta seu requisito mínimo para o Windows 10 para alvos como x_86-pc-windows-msvc
e atualiza seu pacote LLVM para LLVM 18.
Rust 1.78 segue o lançamento de 21 de março do Rust 1.77, que apresentava suporte para literais de string C. Dois lançamentos pontuais subsequentes também foram feitos, Rust 1.77.1, que desabilitou o novo comportamento do Cargo no Windows para alvos usando MSVC (Microsoft C e C++), e Rust 1.77.2, que incluiu uma correção de vulnerabilidade.