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

Foi publicado o lançamento da linguagem de programação de uso geral Rust 1.68, 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 suporte ao protocolo Sparse foi estabilizado no gerenciador de pacotes Cargo e no repositório crates.io, o que define uma nova forma de trabalhar com um índice que reflete as versões disponíveis de todos os pacotes existentes no repositório. O novo protocolo permite aumentar significativamente a velocidade de trabalho com crates.io e resolver problemas de dimensionamento com um aumento adicional no número de pacotes no repositório.

    Para reduzir os atrasos resultantes do download de um índice completo, o Sparse, em vez de acessar o índice usando Git, baixa diretamente por HTTPS apenas os dados de índice necessários, cobrindo as dependências de um projeto específico. O novo serviço index.crates.io é usado para retornar dados de índice. Por padrão, o novo protocolo está planejado para ser usado na ramificação Rust 1.70 e, antes disso, para habilitá-lo, você pode definir a variável de ambiente "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" ou adicionar o parâmetro 'protocol = ao "[registries.crates -io]" seção do arquivo .cargo/config.toml "sparse"'.

  • Adicionada a macro "pin!", que permite criar uma estrutura Pin<&mut T> a partir da expressão "T" com pinagem local de seu estado (ao contrário de Box::pin não aloca memória no heap, mas liga no nível da pilha) .
  • Um manipulador de erro de alocação de memória padrão é proposto, que é usado ao usar o pacote alloc padrão. Os aplicativos que habilitam apenas alloc (sem std) agora chamarão o manipulador "panic!" em falhas de alocação de memória, que podem opcionalmente ser interceptadas com "#[panic_handler]". Os programas que usam a biblioteca std ainda imprimirão informações de erro no stderr e travarão.
  • 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:
    • {núcleo,std}::pin::pin!
    • impl De para {f32,f64}
    • padrão::caminho::MAIN_SEPARATOR_STR
    • impl DerefMut para PathBuf
  • O atributo "const", que determina a possibilidade de utilizá-lo em qualquer contexto ao invés de constantes, é utilizado na função VecDeque::new.
  • A plataforma Android agora requer pelo menos NDK r25 (API 19), ou seja, A versão mínima suportada do Android foi aumentada para 4.4 (KitKat).
  • O terceiro nível de suporte para a plataforma Sony PlayStation Vita foi implementado (armv7-sony-vita-newlibeabihf). O terceiro nível implica suporte básico, mas sem testes automatizados, publicando compilações oficiais e verificando a capacidade de construir o código.

Fonte: opennet.ru

Adicionar um comentário