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

Foi publicado o lançamento da linguagem de programação de uso geral Rust 1.69, 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 gerenciador de pacotes Cargo implementa a detecção de avisos que podem ser resolvidos automaticamente e as recomendações apropriadas para executar "cargo fix" ou "cargo clippy --fix". aviso: importação não utilizada: 'std::hash::Hash' --> src/main.rs:1:5 | 1 | use std::hash::hash; | ^^^^^^^^^^^^^^^ | = note: '#[warn(unused_imports)]' ativado por padrão aviso: 'foo' (bin "foo") gerou 1 aviso (execute 'cargo fix --bin "foo"' para aplicar 1 sugestão)
  • Adicionado Cargo para exibir uma recomendação para usar o comando "cargo add" ao tentar instalar uma biblioteca com o comando "cargo install".
  • Para reduzir o tempo de compilação, as informações de depuração nos scripts de compilação foram desativadas por padrão. Se os scripts de compilação forem executados com sucesso, a alteração não fará nenhuma diferença visível, mas se falhar, o dump do backtrace conterá menos informações. Para retornar o comportamento antigo ao Cargo.toml, adicione: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • 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:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • O atributo "const", que determina a possibilidade de utilizá-lo em qualquer contexto ao invés de constantes, é utilizado em funções:
    • SocketAddr::novo
    • SocketAddr::ip
    • SocketAddr::porta
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::novo
    • SocketAddrV4::ip
    • SocketAddrV4::porta
    • SocketAddrV6::novo
    • SocketAddrV6::ip
    • SocketAddrV6::porta
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Adicionada a capacidade de usar sinalizadores verdadeiro e falso em argumentos do compilador.

Fonte: opennet.ru

Adicionar um comentário