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

Foi publicado o lançamento da linguagem de programação de uso geral Rust 1.62, 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:

  • O gerenciador de pacotes “cargo” oferece o comando “add”, que permite adicionar novas dependências ao manifesto Cargo.toml ou alterar as dependências existentes na linha de comando. O comando também permite especificar recursos e versões individuais, por exemplo: cargo add serde —features derive cargo add nom@5
  • Adicionada a capacidade de usar “#[derive(Default)]” com enumerações nas quais a opção padrão é definida usando o atributo “#[default]”. #[derive(Default)] enum Talvez { #[padrão] Nada, Algo(T), }
  • Na plataforma Linux é utilizada uma implementação mais compacta e rápida do mecanismo de sincronização Mutex, baseada na utilização de futexes fornecidos pelo kernel Linux. Ao contrário da implementação usada anteriormente baseada na biblioteca pthreads, a nova versão usa apenas 5 bytes em vez de 40 para armazenar o estado Mutex.Da mesma forma, os mecanismos de bloqueio Condvar e RwLock foram transferidos para futex.
  • Um segundo nível de suporte para a plataforma de destino x86_64-unknown-none foi implementado, projetado para gerar arquivos executáveis ​​que podem funcionar sem um sistema operacional. Por exemplo, a plataforma de destino especificada pode ser usada ao escrever componentes do kernel. O segundo nível de apoio envolve uma garantia de montagem.
  • O terceiro nível de suporte foi implementado para as plataformas aarch64-pc-windows-gnullvm e x86_64-pc-windows-gnullvm. 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.
  • 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:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::linhas
    • windows::CommandExt::raw_arg
    • impl. valor padrão para AssertUnwindSafe
    • De > para RC
    • De > para Arco<[u8]>
    • FusedIterator para EncodeWide

    Fonte: opennet.ru

Adicionar um comentário