publicado liberação da linguagem de programação do sistema Ferrugem 1.44, 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.
No texto do anúncio do novo lançamento, os desenvolvedores do Rust se envolveram na política e se recusaram explicitamente a publicar uma revisão completa das mudanças no Rust 1.44 como um sinal de solidariedade aos manifestantes contra a violência policial, indicando que esta questão é mais importante do que a troca de conhecimento técnico. Básico inovações:
В пакетный менеджер Cargo интегрирована команда «cargo tree», выводящая древовидный граф зависимостей. Также добавлена опция «—duplicates» («cargo tree -d»), позволяющая оценить зависимости в разных версиях одного пакета.
Para aplicações não vinculadas a um std ("#![no_std]"), o suporte para técnicas de programação assíncrona é implementado com base na função "async", no bloco de movimentação assíncrona {...} e no operador ".await", que simplificar a gravação do fluxo de comando principal dos manipuladores sem bloqueio.
O suporte para um esquema de definição de hierarquia de módulo extensível foi adicionado ao analisador. Por exemplo, a construção a seguir não produzirá um erro, apesar da ausência real do módulo "foo/bar/baz.rs" (a construção ainda é semanticamente inválida e pode causar um erro, mas as alterações podem ser vistas e analisadas em o nível de compilação macro e condicional):
#[cfg(FALSO)] mod foo {
barra de mods {
mod baz;
}
}
O compilador Rustc adicionou a capacidade de usar o sinalizador “-C codegen-units” no modo incremental. A implementação de catch_unwind foi reformulada para que não tenha impacto no desempenho se o processo de desenrolamento for desabilitado e nenhuma exceção for lançada.
O suporte de nível 64 foi fornecido para as plataformas aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos e x64_XNUMX-apple-tvos. O terceiro nível envolve suporte básico, mas sem testes automatizados e publicação de compilações oficiais.
Uma nova parcela de APIs foi transferida para a categoria estável, incluindo estabilizadas
PathBuf::com_capacidade,
PathBuf::capacidade,
PathBuf::claro,
PathBuf::reserva,
PathBuf::reserva_exata,
PathBuf::encolher_para_ajustar,
{f32|f64}::to_int_unchecked,
Layout::align_to,
Layout::pad_to_align,
Layout::array e
Layout::estender.
Funções estendidas da biblioteca padrão:
Добавлен специальный вариант «vec![]», напрямую отражаемый в Vec::new(), что позволяет использовать «vec![]» в контексте вместо констант.
Uma implementação (impl) do trait foi adicionada para convert::Infallible Hash.
OsString implementa ponteiros inteligentes DerefMut и IndexMut, retornando "&mut OsStr".
proc_macro::LexError implementa fmt::Display e Error.
O atributo “const”, que determina se pode ser usado em qualquer contexto em vez de constantes, é usado nos métodos from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes e to_ne_bytes para todos os tipos inteiros.
Добавлена поддержка генерации статических библиотек в формате «.a» вместо «.lib» для GNU-платформ для Windows.
Os requisitos mínimos do LLVM foram aumentados para a versão 8 do LLVM.