Versão da linguagem de programação Rust 1.67

Foi publicado o lançamento da linguagem de programação de uso geral Rust 1.67, fundada pelo projeto Mozilla, mas agora desenvolvida sob os auspícios da organização independente sem fins lucrativos Rust Foundation. A linguagem se concentra na segurança da memória e fornece os meios para obter alto paralelismo de trabalho, evitando o uso de um coletor de lixo e tempo de execução (o tempo de execução é reduzido à inicialização básica e manutenção da biblioteca padrão).

Os métodos de manipulação de memória do Rust salvam o desenvolvedor de erros ao manipular ponteiros e protegem contra problemas que surgem devido ao manuseio de memória de baixo nível, como acessar uma área de memória após ter sido liberada, desreferenciar ponteiros nulos, saturação de buffer, etc. Para distribuir bibliotecas, prover builds e gerenciar dependências, o projeto desenvolve o gerenciador de pacotes Cargo. O repositório crates.io é compatível com hospedagem de bibliotecas.

A segurança da memória é fornecida no Rust em tempo de compilação por meio de verificação de referência, acompanhando a propriedade do objeto, acompanhando o tempo de vida do objeto (escopos) e avaliando a exatidão do acesso à memória durante a execução do código. Rust também fornece proteção contra estouros de número inteiro, requer inicialização obrigatória de valores de variáveis ​​antes do uso, lida melhor com erros na biblioteca padrão, aplica o conceito de referências e variáveis ​​imutáveis ​​por padrão, oferece tipagem estática forte para minimizar erros lógicos.

Principais inovações:

  • Para funções assíncronas com Future::Output, agora é possível especificar anotações "#[must_use]" que incluem um aviso se o valor de retorno for ignorado, o que ajuda a identificar erros causados ​​pela suposição de que a função alterará os valores em vez de retornar um novo valor. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } aviso: saída não utilizada do futuro retornada por `bar` que deve ser usada —> src/lib.rs:5:5 | 5 | barra().aguardar; | ^^^^^^^^^^^^ | = nota: `#[warn(unused_must_use)]` ativado por padrão
  • Foi atualizada a implementação das filas FIFO std::sync::mpsc (multi-produtor single-consumer), que passou a usar o módulo crossbeam-channel, mantendo a API anterior. A nova implementação se diferencia pela resolução de diversos problemas, maior desempenho e manutenção simplificada do código.
  • Uma nova parte da API foi movida para a categoria de estável, incluindo os métodos e implementações de características que foram estabilizadas:
    • {inteiro}::checked_ilog
    • {inteiro}::checked_ilog2
    • {inteiro}::checked_ilog10
    • {inteiro}::ilog
    • {inteiro}::ilog2
    • {inteiro}::ilog10
    • Diferente de ZeroU*::ilog2
    • Diferente de ZeroU*::ilog10
    • Diferente de zero*::BITS
  • O atributo "const", que determina a possibilidade de utilizá-lo em qualquer contexto ao invés de constantes, é utilizado em funções:
    • char::from_u32
    • char::from_digit
    • char::to_dígito
    • núcleo::char::from_u32
    • core::char::from_digit
  • Um terceiro nível de suporte foi implementado para usar Rust no kernel Linux (linuxkernel), bem como para Sony PlayStation 1 (mipsel-sony-psx), PowerPC com AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( plataformas aarch64-unknown-nto-) qnx710, x86_64-pc-nto-qnx710). O terceiro nível envolve suporte básico, mas sem testes automatizados, publicação de compilações oficiais ou verificação se o código pode ser compilado.

Adicionalmente, podemos notar a publicação pela ARM de patches que permitem a utilização da linguagem Rust para desenvolver drivers e módulos do kernel Linux montados para sistemas baseados na arquitetura AArch64.

Fonte: opennet.ru

Adicionar um comentário