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

Foi publicado o lançamento da linguagem de programação do sistema Rust 1.52, 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, fornece gerenciamento automático de memória e fornece meios para alcançar alto paralelismo de tarefas sem usar um coletor de lixo ou tempo de execução (o tempo de execução é reduzido à inicialização básica e manutenção da biblioteca padrão).

O gerenciamento automático de memória do Rust elimina erros ao manipular ponteiros e protege contra problemas decorrentes da manipulação de memória de baixo nível, como acesso a uma região de memória após ela ter sido liberada, desreferências de ponteiro nulo, saturação de buffer, etc. Para distribuir bibliotecas, garantir a montagem e gerenciar dependências, o projeto está desenvolvendo o gerenciador de pacotes Cargo. O repositório crates.io é compatível com hospedagem de bibliotecas.

Principais inovações:

  • Removida a vinculação à ordem de execução dos comandos “cargo check” e “cargo clippy”. Anteriormente, chamar "cargo clippy" após "cargo check" não iniciava o utilitário clippy (linter) devido à falta de separação de cache para esses modos de verificação. Agora esse problema foi resolvido e a ordem em que “cargo clippy” e “cargo check” são chamados não importa mais.
  • Uma nova parte da API foi transferida para a categoria estável, incluindo os seguintes métodos que foram estabilizados:
    • Argumentos::as_str
    • caractere::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • fatia::partition_point
    • str::rsplit_once
    • str::split_once
  • O atributo “const”, que determina a possibilidade de utilização em qualquer contexto ao invés de constantes, é utilizado nos métodos:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Adicionada verificação de lint unsafe_op_in_unsafe_fn para determinar se o código inseguro usado em funções inseguras é enquadrado por blocos inseguros.
  • É permitido converter ponteiros mutáveis ​​para arrays na forma de ponteiros para o tipo do elemento do array. deixe mut x: [usar; 2] = [0, 0]; seja p = &mut x as *mut usize; deixe p = &mut x as *const usize;
  • 9 novas verificações foram adicionadas ao clippy (linter).
  • O gerenciador de pacotes de carga agora suporta o campo “manifest_path” em JSON para pacotes. Adicionado suporte para especificação de informações de licença no formato SPDX 3.11 ao repositório crates.io.
  • É permitido especificar vários filtros ao executar testes, por exemplo, executar "cargo test - foo bar" executará todos os testes que correspondam às máscaras "foo" e "bar".
  • O kit de ferramentas LLVM padrão foi atualizado para LLVM 12.
  • O terceiro nível de suporte foi implementado para as plataformas s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl e powerpc-unknown-openbsd. O terceiro nível envolve suporte básico, mas sem testes automatizados, publicação de compilações oficiais e verificação da capacidade de construção do código.

Fonte: opennet.ru

Adicionar um comentário