Equipe Rust anuncia a versão 1.78.0 da linguagem de programação

Rust agora suporta um namespace de atributo #[diagnostic]

A equipe por trás da linguagem de programação Rust anunciou a versão 1.78.0. Essa nova edição estável traz novos atributos e melhorias. Por exemplo, Rust agora suporta um namespace de atributo #[diagnostic] para mensagens de erro do compilador, de acordo com o anúncio.

As mensagens são tratadas como dicas que o compilador não precisa usar e não é um erro especificar um diagnóstico que o compilador não reconhece. A vantagem desta flexibilidade é que o código-fonte pode fornecer diagnósticos mesmo que não sejam suportados por todos os compiladores, independentemente de serem versões diferentes ou implementações completamente diferentes, continua. As referências ao atributo diagnóstico fornecem todos os detalhes.

Mais adições a versão 1.78.0 da linguagem Rust

A biblioteca padrão Rust possui uma série de asserções para pré-condições de função inseguras. No entanto, historicamente eles são ativados apenas em #[cfg(debug_assertions)] compilações da biblioteca padrão para não influenciar o desempenho do lançamento.

No entanto, como a biblioteca padrão normalmente é compilada e distribuída no modo de lançamento, a maioria dos desenvolvedores do Rust não realizou essas verificações. Agora adie a condição para essas asserções até a geração do código, para que elas sejam verificadas dependendo da configuração do próprio usuário para asserções de depuração. De acordo com os desenvolvedores, e essa mudança ajudará os usuários a identificar comportamentos indefinidos em seus códigos.

As inovações e mudanças estão documentadas detalhadamente nas notas de lançamento do Rust 1.78.0.

  • Estabilizar #[cfg(target_abi = …)];
  • Estabilizar o namespace #[diagnostic] e o atributo #[diagnostic::on_unimplemented];
  • Torne async-fn-in-trait implementável com assinaturas concretas;
  • Torne a correspondência no NaN um erro rígido e remova o resto do illegal_floating_point_literal_pattern;
  • static mut: permite referência mutável a tipos arbitrários, não apenas fatias e matrizes;
  • Estender invalid_reference_casting para incluir a conversão de referências para um layout de memória maior;
  • Adicione non_contiguous_range_endpoints para intervalos singleton após intervalos exclusivos;
  • Adicionar wasm_c_abi para uso de versões mais antigas do wasm-bindgen Atualmente, esse fiapo só funciona quando se usa o Cargo;
  • Atualize indirect_structural_match e pointer_structural_match lints para corresponder à RFC;
  • Tornar consts não parciais do tipo Eq como padrões um erro rígido;
  • Divida refining_impl_trait fiapos em _reachable _internal variantes;
  • Remova a inferência de tipo desnecessária ao usar tipos associados dentro de limites de onde classificados mais alto;
  • Enfraquecer a detecção ansiosa de tipos cíclicos durante a inferência de tipos;
  • Traço Traço: Auto {}: permitir upcasting de dyn Trait para dyn Auto.

Entre as mudanças, algumas internas. Essas alterações não afetam nenhuma interface pública do Rust, mas representam Melhorias significativas no desempenho ou internos do RustC e relacionados Ferramentas.

  • Atualização para LLVM 18;
  • Construa rustc com 1CGU em x86_64-pc-windows-msvc;
  • Construa rustc com 1CGU em x86_64-apple-darwin;
  • Introduza a infraestrutura V2 de run-make, uma biblioteca de run_make_support e a porta mais de 2 testes como exemplo;
  • Windows: Implementar condvar, mutex e rwlock usando futex.
Share This Article
Follow:
Jardeson é Mestre em Tecnologia Agroalimentar e Licenciado em Ciências Agrária pela Universidade Federal da Paraíba. Entusiasta no mundo tecnológico, gosta de arquitetura e design gráfico. Economia, tecnologia e atualidade são focos de suas leituras diárias. Acredita que seu dia pode ser salvo por um vídeo engraçado.
Sair da versão mobile