Linguaxe de programación Rust versión 1.44

publicado versión da linguaxe de programación do sistema Ferruxe 1.44, fundada polo proxecto Mozilla. A linguaxe céntrase na seguridade da memoria, ofrece unha xestión automática da memoria e ofrece ferramentas para lograr un alto paralelismo de tarefas sen utilizar un colector de lixo e tempo de execución.

A xestión automática da memoria de Rust elimina os erros ao manipular os punteiros e protexe contra os problemas derivados da manipulación de memoria de baixo nivel, como acceder a unha rexión de memoria despois de liberarse, desreferencias de punteiros nulos, desbordamentos do búfer, etc. Estase a desenvolver un xestor de paquetes para distribuír bibliotecas, garantir a montaxe e xestionar as dependencias do proxecto. Carga, o que lle permite obter as bibliotecas necesarias para o programa cun só clic. Admítese un repositorio para aloxar bibliotecas caixóns.io.

No texto do anuncio do novo lanzamento, os desenvolvedores de Rust involucráronse na política e negáronse deliberadamente a publicar unha revisión completa dos cambios en Rust 1.44 en sinal de solidariedade cos manifestantes contra a violencia policial, indicando que este tema é máis importante. que o intercambio de coñecementos técnicos. Básico innovacións:

  • O xestor de paquetes Cargo integra o comando "árbore de carga", que mostra un gráfico de dependencias tipo árbore. Tamén se engade a opción “—duplicates” (“árbore de carga -d”), que permite avaliar as dependencias en diferentes versións do mesmo paquete.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoníaco v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── rexistro v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── rexistro v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [build-dependencies] │ │ │ └── version_check v0.1.5
    ...

  • Para aplicacións non vinculadas a un estándar ("#![no_std]"), implementouse o soporte para técnicas de programación asíncrona baseadas na función "async", o bloque de movemento asíncrono { ... } e o operador ".await". o que facilita a escritura do fluxo de comandos principais de controladores non bloqueadores.
  • Engadiuse ao analizador soporte para un esquema de definición de xerarquía de módulos extensible. Por exemplo, a seguinte construción non producirá un erro, a pesar da ausencia real do módulo "foo/bar/baz.rs" (a construción aínda non é semanticamente válida e pode causar un erro, pero os cambios pódense ver e analizar en o nivel de compilación macro e condicional):

    #[cfg(FALSO)] mod foo {
    barra de modificación {
    mod baz;
    }
    }

  • O compilador rustc engadiu a posibilidade de usar a marca "-C codegen-units" en modo incremental. A implementación de catch_unwind foi reelaborada para que non teña ningún impacto no rendemento se o proceso de desenrolamento está desactivado e non se xeran excepcións.
  • Proporcionouse soporte de nivel 64 para as plataformas aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos e x64_XNUMX-apple-tvos. O terceiro nivel implica soporte básico, pero sen probas automatizadas e publicación de compilacións oficiais.
  • Unha nova parte das API foi transferida á categoría estable, incluída a estabilizada
    PathBuf::con_capacidade,
    PathBuf::capacidade,
    PathBuf::borrar,
    PathBuf::reserva,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_desmarcado,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::array e
    Disposición::ampliar.

  • Funcións ampliadas da biblioteca estándar:
    • Engadiuse unha variante especial "vec![]" que se reflicte directamente en Vec::new(), permitindo que "vec![]" se use no contexto en lugar de constantes.
    • Engadiuse unha implementación (impl) do trazo para converter::Infalible Hash.
    • OsString implementa punteiros intelixentes DerefMut и IndexMut, devolvendo "&mut OsStr".
    • Engadido soporte para Unicode 13.
    • Implementado en String Desde<&mut str>.
    • IoSlice implementa o trazo Copiar.
    • Vec implementado Desde<[T; N]>.
    • proc_macro::LexError implementa fmt::Mostrar e erro.
  • O atributo "const", que determina a posibilidade de usalo en calquera contexto en lugar de constantes, úsase 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 de enteiros.
  • Engadido soporte para xerar bibliotecas estáticas en formato ".a" en lugar de ".lib" para plataformas GNU en Windows.
  • Os requisitos mínimos para LLVM eleváronse á versión 8 de LLVM.

Fonte: opennet.ru

Engadir un comentario