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

Foi publicado o lançamento da linguagem de programação do sistema Rust 1.54, 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:

  • Adicionada a capacidade de usar macros semelhantes a funções dentro de atributos (macros procedimentais e macros criadas usando a macro “macro_rules!”). Tais macros são diferenciadas das funções pelo símbolo “!” após o nome (macro!(...)) e substituindo o texto fonte da macro em vez de gerar uma chamada de função. Chamar macros dentro de atributos pode ser útil para incluir conteúdo de outros arquivos na documentação de comentários. Por exemplo, para inserir o conteúdo do arquivo README e o resultado da execução do script, você pode especificar: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod gerado;
  • As funções integradas do compilador (Intrinsics) para a plataforma wasm32 foram estabilizadas, permitindo o uso de instruções SIMD no WebAssembly. A maioria das funções, como v128_bitselect, estão disponíveis no modo "seguro", mas algumas funções que funcionam com ponteiros (por exemplo, v128_load) permanecem "inseguras".
  • O uso padrão de compilação incremental retornou, permitindo reconstruir apenas as partes alteradas do código, o que pode reduzir significativamente o tempo necessário para construir um projeto ao recompilar após fazer pequenas alterações. A compilação incremental foi desativada na versão 1.52.1 devido a bugs ocultos que surgiram após a adição de uma verificação adicional para carregar dados do cache de disco.
  • Uma nova parcela de APIs foi transferida para a categoria estável, incluindo as seguintes estabilizadas:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arco::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Adicionadas opções ao cargo-tree: “—prune " para remover um pacote do gráfico de dependência, "-profundidade" para exibir apenas elementos de um determinado nível de aninhamento na árvore de dependência, "-edges no-proc-macro" para ocultar dependências de macro processuais.

Fonte: opennet.ru

Adicionar um comentário