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

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»), позволяющая оценить зависимости в разных версиях одного пакета.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amônia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── registro v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── marcação5ever v0.9.0
    │ │ ├── registro v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [dependências de compilação] │ │ │ └── version_check v0.1.5
    ...

  • 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".
    • Adicionado suporte para Unicode 13.
    • Implementado em String De<&mut str>.
    • IoSlice implementa a característica Copiar.
    • Vec implementado De<[T; N]>.
    • 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.

Fonte: opennet.ru

Adicionar um comentário