Lançamento do Rust 1.79. Foi criado um consórcio para desenvolver sistemas de alta confiabilidade em Rust.

Foi lançado o Rust 1.79, uma linguagem de programação de propósito geral, originada do projeto Mozilla, mas agora desenvolvida sob a tutela da organização independente sem fins lucrativos Rust Foundation. A linguagem foca na segurança da memória e fornece recursos para alcançar alto paralelismo na execução de tarefas, eliminando a necessidade de um coletor de lixo e de um tempo de execução (runtime), que se limita à inicialização básica e ao suporte da biblioteca padrão.

Os métodos de manipulação de memória em Rust protegem o desenvolvedor de erros ao trabalhar com ponteiros e evitam problemas decorrentes de manipulação de memória de baixo nível, como acesso a áreas de memória após sua liberação, desreferenciação de ponteiros nulos, e estouro de buffer, entre outros. Para distribuição de bibliotecas, construção e gerenciamento de dependências, o projeto conta com o gerenciador de pacotes Cargo. O repositório crates.io é suportado para hospedagem de bibliotecas.

A manipulação segura da memória em Rust é garantida em tempo de compilação através da verificação de referências, rastreamento de propriedade de objetos, controle do tempo de vida dos objetos (escopos) e avaliação da correção do acesso à memória durante a execução do código. Rust também oferece mecanismos para proteção contra estouros inteiros, exige a inicialização obrigatória de valores de variáveis antes do uso, trata erros de forma superior na biblioteca padrão, aplica o conceito de referências e variáveis imutáveis (immutable) por padrão e oferece uma forte tipagem estática para minimizar erros lógicos.

Principais novidades:

  • Foi adicionada a suporte a constantes inline, que podem ser especificadas diretamente no código usando blocos «const { … }», processados no contexto de constantes e permitindo evitar a definição separada de constantes. O código dentro do bloco «const { … }» é calculado durante a compilação e usado como uma constante, sem execução durante a execução do programa. Ao contrário da definição de constantes através da expressão «const ITEM: … = …», em blocos «const { … }», o tipo não precisa ser especificado, pois há suporte para a dedução automática do tipo. Por exemplo, o código com uma definição separada de constante

    const EMPTY: Option<Vec> = None;
    let foo = [EMPTY; 100];

    pode ser substituído pelo uso in-situ:

    let foo = [const { None }; 100];

  • Foi estabilizada a sintaxe «T: Trait» para definir restrições em posições de tipo associado, permitindo encurtar a definição de expressões com restrições aninhadas que antes requeriam a especificação de uma implementação aninhada de Trait ou várias cláusulas «where».
  • Foi garantido o prolongamento automático do tempo de vida de valores temporários que são usados em construções «match» e «if».

    let a = if true {
    ..;
    &temp() // o tempo de vida será prolongado
    } else {
    ..;
    &temp() // o tempo de vida será prolongado
    };

  • Foi estabilizada a capacidade de importar a função main de outros módulos e pacotes crate.
  • Durante a construção da biblioteca padrão no compilador, foi utilizado o sinalizador «-Cforce-frame-pointers=yes», que adiciona dados para a reconstrução da pilha durante a profilação de programas.
  • Uma nova leva de APIs foi traduzida para a categoria estável, incluindo estabilizações de métodos e implementações de traits:
    • {integer}::unchecked_add
    • {integer}::unchecked_mul
    • {integer}::unchecked_sub
    • ::split_at_unchecked
    • ::split_at_mut_unchecked
    • ::utf8_chunks
    • str::Utf8Chunks
    • str::Utf8Chunk
    • ::is_aligned
    • ::is_aligned
    • NonNull::is_aligned
    • ::len
    • ::len
    • ::is_empty
    • ::is_empty
    • NonNull::::is_empty
    • CStr::count_bytes
    • io::Error::downcast
    • num::NonZero
    • path::absolute
    • proc_macro::Literal::byte_character
    • proc_macro::Literal::c_string
  • O sinal "const", que determina a possibilidade de uso em qualquer contexto em vez de constantes, é aplicado em funções:
    • Atomic*::into_inner
    • io::Cursor::new
    • io::Cursor::get_ref
    • io::Cursor::position
    • io::empty
    • io::repeat
    • io::sink
    • panic::Location::caller
    • panic::Location::file
    • panic::Location::line
    • panic::Location::column
  • Estabilizado
    parte das funcionalidades que podem ser utilizadas ao compilar para a representação intermediária Webassembly (WASM).
  • Implementado o terceiro nível de suporte para as plataformas aarch64-apple-visionos, aarch64-apple-visionos-sim e riscv32ima-unknown-none-elf. O terceiro nível implica suporte básico, mas sem testes automatizados, publicação de builds oficiais e verificação da possibilidade de compilação de código.
  • Implementado o segundo nível de suporte para as plataformas alvo aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm e x86_64-pc-windows-gnullvm. O segundo nível de suporte implica a garantia de compilação.

Além disso, a organização Rust Foundation, que supervisiona o ecossistema relacionado à linguagem Rust, anunciou a criação do consórcio "Safety-Critical Rust Consortium", voltado para o uso da linguagem Rust em soluções que exigem alta confiabilidade (Software Crítico para a Segurança), cuja falha pode ameaçar vidas, causar danos ao meio ambiente ou resultar em sérios danos a equipamentos. O consórcio conta com a participação das empresas ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle e Woven by Toyota. As tarefas a serem realizadas pelo consórcio incluem a redação de diretrizes e o desenvolvimento de bibliotecas, linters e analisadores estáticos, bem como a aplicação de métodos de verificação formal de confiabilidade e o desenvolvimento de subconjuntos da linguagem para sistemas de alta confiabilidade.

Dos projetos relacionados a sistemas de alta confiabilidade, destaca-se o Verus — uma ferramenta para verificar a correção de código escrito em Rust. A verificação é realizada por meio da definição de uma especificação que descreve o comportamento aceitável do código. Durante a execução do código, o Verus verifica a conformidade com a especificação para confirmar a correção do funcionamento.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster