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

publicado versão 1.46 da linguagem de programação do sistema Ferrugem, fundado pelo projeto Mozilla. A linguagem se concentra na segurança da memória, fornece gerenciamento automático de memória e fornece ferramentas para alcançar alto paralelismo de tarefas sem usar um coletor de lixo e tempo de execuçã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. Está sendo desenvolvido um gerenciador de pacotes para distribuir bibliotecas, garantir a montagem e gerenciar dependências pelo projeto. Carga, permitindo que você obtenha as bibliotecas necessárias para o programa com um clique. Um repositório é suportado para hospedar bibliotecas caixas.io.

O principal inovações:

  • Foram ampliadas as capacidades das funções definidas usando a expressão “const fn”, que podem ser chamadas não apenas como funções regulares, mas também usadas em qualquer contexto em vez de constantes. Essas funções são calculadas em tempo de compilação, não em tempo de execução, portanto estão sujeitas a certas restrições, como a capacidade de ler somente constantes.

    A nova versão elimina a proibição do uso de operadores booleanos (“&&” e “||”) em tais funções e permite o uso de construções “if”, “if let”, “match”,
    "while", "while let" e "loop", e também oferece a capacidade de converter em fatias (fatia, matrizes dinâmicas) usando a expressão "&[T]". O uso desses recursos nas funções “const fn” permite mover algumas operações que consomem muitos recursos para o estágio de compilação. Por exemplo, a implementação de "const-sha1" torna possível calcular hashes SHA-1 em tempo de compilação, o que acelera as ligações WinRT para Rust em quase 40 vezes.

  • Para tornar as mensagens de erro mais informativas, o suporte para o atributo “#[track_caller]” foi estabilizado, o que é útil para funções como unwrap, que pode causar pânico se os tipos forem usados ​​incorretamente. O atributo especificado será usado pelo manipulador de pânico para imprimir a localização do chamador em uma mensagem de erro.
  • O atributo “const”, que determina a possibilidade de utilizá-lo em qualquer contexto ao invés de constantes, é utilizado no método std::mem::forget.
  • Uma nova parte da API foi movida para a categoria estável, incluindo Option::zip e vec::Drain::as_slice estabilizados.
  • No gerenciador de pacotes Cargo adicionado suporte para novas variáveis ​​de ambiente definidas ao compilar um pacote: CARGO_BIN_NAME (nome do arquivo executável resultante), CARGO_CRATE_NAME (nome do pacote), CARGO_PKG_LICENSE (licença especificada no manifesto), CARGO_PKG_LICENSE_FILE (caminho para o arquivo de licença).

Fonte: opennet.ru

Adicionar um comentário