Rust é uma linguagem de programação compilada multiparadigma e de uso geral.
A nova versão do Rust 1.78 já foi lançada e novos recursos são implementados, bem como a estabilização de algumas APIs, melhorias no Cargo e muito mais.
Para quem não conhece esta linguagem de programação, deve saber que concentra-se na segurança da memória e fornece os meios para alcançar alto paralelismo de tarefas, evitando o uso de coletor de lixo e tempo de execução (o tempo de execução é reduzido à inicialização básica e à manutenção padrão da biblioteca).
Principais novidades do Rust 1.78
Nesta nova versão apresentada por Rust 1.78 aumentou seu requisito mínimo para Windows 10, além disso o compilador foi alterado para usar LLVM 18. Ao usar o LLVM 18 para arquiteturas x86-32 e x86-64, a ABI associada aos tipos u128 e i128 foi alterada.
Em relação às mudanças, uma das características que se destaca é que Rust agora suporta um namespace de atributo «#[diagnóstico]", o que fornece um meio de influenciar as mensagens de erro produzidas pelo compilador. Eles são tratados como dicas que o compilador não precisa usar, nem é um erro fornecer um diagnóstico que o compilador não reconhece. Esse permite que o código-fonte forneça diagnósticos mesmo quando não são suportados por todos os compiladores, sejam versões diferentes ou implementações completamente diferentes.
Além disso, um cache global foi estabilizado no Cargo que armazena informações sobre o uso de dados mais recente. Esta cache está localizada em $CARGO_HOME/.global-cache e usa SQLite para sua implementação. Ele é atualizado automaticamente para refletir as alterações mais recentes no índice, arquivo crate, diretório de código, clone git e checkout git, melhorando a eficiência e a velocidade das operações de gerenciamento de dependências em projetos de desenvolvimento.
Outro novo recurso do Rust 1.78 é que a biblioteca padrão do Rust possui várias declarações para as pré-condições de funções "inseguras" que agora pode ser adiado até a geração do código. Isso permite que essas verificações sejam realizadas historicamente, eles só foram habilitados em compilações «#[cfg(debug_assertions)]» para evitar afetar o desempenho na versão de lançamento. Com essa mudança, os usuários agora podem detectar comportamento indefinido em seu código, embora os detalhes sobre o quanto é verificado geralmente não sejam estáveis. Para habilitar verificações, agora é suficiente habilitar asserções de depuração para testes ou compilações de depuração do código.
Além disso, agora comportamento das funções da biblioteca padrão que afetam o alinhamento de ponteiros e setores agora é previsível em tempo de execução e depende dos dados de entrada. A função ponteiro::align_offset, que calcula o deslocamento para alinhar o ponteiro agora retorna tamanho de uso::MAX somente se a operação falhar. As funções slice::align_to e slice::align_to_mut, que transformam fatias em uma representação com uma fatia intermediária alinhada e as fatias inicial e final originais, agora sempre retornam a maior parte central.
Por outro lado, é mencionado que As seguintes APIs foram movidas para a categoria “estável”: impl Ler para &Stdin, impl De para io::Erro e a implementação impl. que permite o uso de ?Tamanho.
Do Outras mudanças que se destacam desta nova versão:
- O segundo nível de suporte para a plataforma de destino Add wasm32-wasip1 foi implementado. O segundo nível de apoio envolve uma garantia de montagem.
- A plataforma wasm32-wasi-preview1-threads foi renomeada para wasm32-wasip1-threads.
- No gerenciador de pacotes Cargo, a versão 4 dos arquivos de bloqueio (lockfile v4) foi estabilizada. Cargo agora usa esta versão como padrão para garantir consistência e gerenciamento eficiente de dependências entre projetos.
Se você interessado em saber mais sobre o assunto, você pode verificar os detalhes em o seguinte link.
Finalmente, para aqueles que estão Interessado em atualizar de uma versão anterior do Rust instalado via rustup, você pode obter a nova versão do Rust 1.78 com:
rustup update stable
Se você ainda não tem o Rust instalado em seu sistema, você pode fazer isso executando o seguinte comando em um terminal:
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh