Rust 1.93 chegou, aqui estão as novidades

Rust 1.93 chegou, aqui estão as novidades

Rust 1.93.0 agora está estável e foi lançado hoje. Ele se concentra em reforçar as garantias de segurança do compilador, ao mesmo tempo em que fornece novas ferramentas cruciais para tarefas críticas de desempenho. É um lançamento sólido que faz com que a linguagem pareça mais madura nas áreas mais importantes.

Se você construir binários estáticos para Linux (especialmente em x86_64 ou aarch64), a confiabilidade da sua rede estará prestes a receber um grande impulso. Rust 1.93 eleva a biblioteca musl incluída para a versão 1.2.5, o que resolve algumas dores de cabeça de longa data com a resolução de DNS nas versões mais antigas. Esta é uma ótima notícia se você estiver construindo binários Linux portáteis que lidam com redes, porque torna essa funcionalidade muito mais confiável.

Isso ajuda especialmente ao lidar com grandes registros DNS ou servidores de nomes recursivos complicados. A atualização do musl removeu alguns símbolos de compatibilidade herdados. A ferrugem libc caixa usou esses símbolos. No entanto, uma correção para esse problema foi enviada há mais de dois anos, portanto, a maioria dos projetos modernos não deverá apresentar problemas durante o processo de atualização.

Ao permitir que alocadores globais acessem o armazenamento local de thread, a biblioteca padrão agora permite que você use com segurança recursos como std::thread_local! sem desencadear problemas de reentrada. Para aqueles que escrevem código altamente otimizado e de baixo nível, o novo suporte para cfg atributos diretamente em asm! linhas é fantástico. Anteriormente, se você quisesse incluir condicionalmente algumas instruções de montagem com base nos recursos de destino, era necessário duplicar o conjunto inteiro. asm! bloco dentro de instruções de compilação condicional.

Agora, você pode aplicar compilação condicional, como #[cfg(target_feature = "sse2")]diretamente para linhas de montagem individuais ou restrições dentro do bloco. Isso torna a escrita de otimizações específicas da plataforma muito mais limpa e fácil de manter.

A versão estabiliza um grande número de APIs, dando aos desenvolvedores novas ferramentas para gerenciar memória e estruturas de dados. Vários novos métodos para MaybeUninit as fatias agora estão estáveis. Estes incluem assume_init_drop, assume_init_refe métodos como write_copy_of_slice. Eles fornecem controle granular sobre a segurança da memória ao lidar com buffers não inicializados. Se você trabalha com FFI ou gerenciamento de memória personalizado, também apreciará isso String::into_raw_parts e Vec::into_raw_parts agora são oficiais.

Isso permite desconstruir essas coleções em seus componentes principais, como ponteiros brutos, comprimentos e capacidades. Os viciados em desempenho apreciarão a estabilização de operações inteiras não verificadas, como unchecked_neg, unchecked_shle unchecked_shr. Eles são cruciais para escrever código extremamente rápido e inseguro, onde o desenvolvedor garante que não ocorrerão overflows ou mudanças inválidas.

Para uso diário, o VecDeque coleção tem métodos como pop_front_if e pop_back_if. Isso permite que os usuários removam itens condicionalmente de qualquer extremidade da fila, tornando a lógica da fila muito mais simples.

O deref_nullptr lint, que captura tentativas de desreferenciar ponteiros nulos, agora é negado por padrão. Esta é uma mudança muito bem-vinda porque ajuda a detectar problemas críticos de segurança em tempo de compilação, e não durante o tempo de execução. Novos avisos também foram adicionados, incluindo function_casts_as_integer e const_item_interior_mutations. Isso ajuda a aplicar as melhores práticas e a evitar erros sutis relacionados à mutabilidade interna em itens constantes.

A variável de ambiente CARGO_CFG_DEBUG_ASSERTIONS agora está habilitado em scripts de construção com base no perfil ativo. Isso fornece aos scripts de construção mais contexto sobre como o código está sendo compilado. Adicionalmente, cargo clean agora apoia o --workspace flag, simplificando a limpeza para grandes projetos com vários pacotes. Se você analisa gráficos de dependência com frequência, cargo tree agora suporta formulários longos para sua --format variáveis, tornando a saída complexa mais fácil de personalizar.

Há muito para ver nesta nova versão e você ficará feliz por ter atualizado. Se você já tem o Rust instalado, você pode obter a atualização agora mesmo executando rustup update stable.

Fonte: Ferrugem (1), Ferrugem (2)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Sair da versão mobile