Lançamento do Rust 1.90. Ferramenta para criação de drivers para Windows em Rust.

Foi lançado o Rust 1.90, uma linguagem de programação criada pelo projeto Mozilla, agora desenvolvida sob a tutela da organização sem fins lucrativos Rust Foundation. A linguagem se concentra em segurança na manipulação de memória e fornece ferramentas para alcançar um alto paralelismo na execução de tarefas, sem utilizar um coletor de lixo e com um runtime reduzido à inicialização básica e suporte à biblioteca padrão.

Os métodos de manipulação de memória em Rust protegem o desenvolvedor de erros ao trabalhar com ponteiros e evitam problemas decorrentes de manipulação de memória de baixo nível, como acesso a áreas de memória após sua liberação, desreferenciação de ponteiros nulos, e estouro de buffer, entre outros. Para distribuição de bibliotecas, construção e gerenciamento de dependências, o projeto conta com o gerenciador de pacotes Cargo. O repositório crates.io é suportado para hospedagem de bibliotecas.

A manipulação segura da memória em Rust é garantida em tempo de compilação através da verificação de referências, rastreamento de propriedade de objetos, controle do tempo de vida dos objetos (escopos) e avaliação da correção do acesso à memória durante a execução do código. Rust também oferece mecanismos para proteção contra estouros inteiros, exige a inicialização obrigatória de valores de variáveis antes do uso, trata erros de forma superior na biblioteca padrão, aplica o conceito de referências e variáveis imutáveis (immutable) por padrão e oferece uma forte tipagem estática para minimizar erros lógicos.

Principais novidades:

  • No Linux, em computadores com arquitetura x86_64, o vinculador padrão para a ligação dinâmica de pacotes crate é o LLD do projeto LLVM. O uso do LLD, em comparação com o vinculador BFD, melhorou o desempenho da ligação de grandes arquivos executáveis e projetos com grande volume de informações de depuração, além de acelerar a recompilação incremental. Na maioria dos casos, o LLD é compatível retroativamente com o BFD. Se ocorrerem problemas, é possível reverter para o BFD definindo a variável de ambiente RUSTFLAGS com o sinalizador “-C linker-features=-lld” ou adicionando ao arquivo de configuração .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = [“-Clinker-features=-lld”]
  • No gerenciador de pacotes cargo, o comando “publish” possui a opção “—workspace”, que permite a publicação automática de todos os pacotes de um espaço de trabalho selecionado (um conjunto de pacotes que utiliza um único arquivo Cargo.lock e um diretório comum para os resultados da compilação), mantendo a ordem de sequência dos pacotes e levando em consideração suas dependências.
  • Uma nova leva de APIs foi traduzida para a categoria estável, incluindo estabilizações de métodos e implementações de traits:
    • u{n}::checked_sub_signed
    • u{n}::overflowing_sub_signed
    • u{n}::saturating_sub_signed
    • u{n}::wrapping_sub_signed
    • impl Copy for IntErrorKind
    • impl Hash for IntErrorKind
    • impl PartialEq for CStr
    • impl PartialEq for CStr
    • impl PartialEq<Cow> for CStr
    • impl PartialEq for CString
    • impl PartialEq for CString
    • impl PartialEq<Cow> for CString
    • impl PartialEq for Cow
    • impl PartialEq for Cow
    • impl PartialEq for Cow
  • O modificador «const» é aplicado em funções:
    • ::reverse
    • f32::floor
    • f32::ceil
    • f32::trunc
    • f32::fract
    • f32::round
    • f32::round_ties_even
    • f64::floor
    • f64::ceil
    • f64::trunc
    • f64::fract
    • f64::round
    • f64::round_ties_even
  • Para plataformas alvo baseadas na biblioteca Musl, que estão no terceiro nível de suporte, a ligação dinâmica está habilitada por padrão: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl e thumbv7neon-unknown-linux-musleabihf.
  • A plataforma de destino "x86_64-apple-darwin" foi movida do primeiro nível de suporte para o segundo (a Apple planeja descontinuar o suporte para a arquitetura x86_64). O primeiro nível de suporte envolve a formação de builds binários, testes rigorosos e a mais alta garantia de suporte da plataforma — cada mudança no compilador é verificada mediante a execução de um conjunto completo de testes. O segundo nível de suporte garante a construção, mas não oferece garantias durante a execução do conjunto de testes.

Adicionalmente, pode-se destacar o desenvolvimento pela Microsoft de ferramentas para a criação de drivers do Windows na linguagem Rust. No GitHub, já está disponível um conjunto de pacotes crate para criação de drivers baseados no WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) e UMDF (User-Mode Driver Framework), além de serviços Win32, adequados para uso no Windows 11. O objetivo do projeto é fornecer aos desenvolvedores em Rust bibliotecas e funções semelhantes às oferecidas no WDK para desenvolvedores de drivers em C. Neste estágio, a ferramenta de desenvolvimento de drivers em Rust utiliza um grande número de chamadas unsafe ao interagir com as subsistemas do Windows, mas no futuro, planeja-se preparar abstrações seguras para estruturas do núcleo e DDI (Device Driver Interface). As contribuições do projeto são distribuídas sob as licenças MIT e Apache 2.0.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster