Lanzamiento del lenguaje de programación Rust 1.44

publicado lanzamiento del lenguaje de programación del sistema Moho 1.44, fundado por el proyecto Mozilla. El lenguaje se centra en la seguridad de la memoria, proporciona administración automática de la memoria y proporciona herramientas para lograr un alto paralelismo de tareas sin utilizar un recolector de basura y tiempo de ejecución.

La gestión automática de la memoria de Rust elimina errores al manipular punteros y protege contra problemas derivados de la manipulación de la memoria de bajo nivel, como el acceso a una región de memoria después de haber sido liberada, desreferencias de punteros nulos, desbordamientos de búfer, etc. Se está desarrollando un administrador de paquetes para distribuir bibliotecas, garantizar el ensamblaje y gestionar las dependencias del proyecto. , permitiéndole obtener las bibliotecas necesarias para el programa con un solo clic. Se admite un repositorio para alojar bibliotecas. cajas.io.

En el texto del anuncio del nuevo lanzamiento, los desarrolladores de Rust se involucraron en política y se negaron deliberadamente a publicar una revisión completa de los cambios en Rust 1.44 como muestra de solidaridad con los manifestantes contra la violencia policial, indicando que este tema es más importante. que el intercambio de conocimientos técnicos. Básico innovaciones:

  • El administrador de paquetes Cargo integra el comando "árbol de carga", que muestra un gráfico de dependencia en forma de árbol. También se agrega la opción “—duplicados” (“árbol de carga -d”), que permite evaluar dependencias en diferentes versiones de un mismo paquete.

    mdbook v0.3.2 (/Usuarios/src/rust/mdbook)
    ├── amoniaco v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── registro v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── marcado5ever v0.9.0
    │ │ ├── registro v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [dependencias de compilación] │ │ │ └── version_check v0.1.5
    ...

  • Para aplicaciones no vinculadas a un std ("#![no_std]"), el soporte para técnicas de programación asíncrona se implementa basándose en la función "async", el bloque async move {...} y el operador ".await", que Simplifique la escritura del flujo de comando principal de controladores sin bloqueo.
  • Se ha agregado al analizador soporte para un esquema de definición de jerarquía de módulos extensible. Por ejemplo, la siguiente construcción no producirá un error, a pesar de la ausencia real del módulo "foo/bar/baz.rs" (la construcción aún es semánticamente inválida y puede causar un error, pero los cambios se pueden ver y analizar en el nivel de compilación macro y condicional):

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

  • El compilador Rustc ha agregado la capacidad de usar el indicador "-C codegen-units" en modo incremental. La implementación de catch_unwind se ha rediseñado para que no tenga impacto en el rendimiento si el proceso de desenredado está deshabilitado y no se lanzan excepciones.
  • Se ha proporcionado soporte de nivel 64 para las plataformas aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos y x64_XNUMX-apple-tvos. El tercer nivel implica soporte básico, pero sin pruebas automatizadas ni publicación de compilaciones oficiales.
  • Una nueva porción de API se ha transferido a la categoría estable, incluida la estabilizada
    RutaBuf::con_capacidad,
    RutaBuf::capacidad,
    RutaBuf::claro,
    RutaBuf::reserva,
    PathBuf::reserva_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Diseño::align_to,
    Diseño::pad_to_align,
    Diseño::matriz y
    Diseño::extender.

  • Funciones ampliadas de la biblioteca estándar:
    • Se agregó una variante especial "vec![]" que se refleja directamente en Vec::new(), lo que permite usar "vec![]" en contexto en lugar de constantes.
    • Se ha agregado una implementación (impl) del rasgo para convertir::Infalible Hash.
    • OsString implementa punteros inteligentes DerefMut и ÍndiceMut, devolviendo "&mut OsStr".
    • Se agregó soporte para Unicode 13.
    • Implementado en cadena De<&mut str>.
    • IoSlice implementa el rasgo Copiar.
    • vec implementado Desde<[T; N]>.
    • proc_macro::LexError implementa fmt::Display y Error.
  • El atributo "const", que determina si se puede utilizar en cualquier contexto en lugar de constantes, se utiliza en los métodos from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes y to_ne_bytes para todos los tipos de enteros.
  • Se agregó soporte para generar bibliotecas estáticas en formato ".a" en lugar de ".lib" para plataformas GNU en Windows.
  • Los requisitos mínimos para LLVM se han elevado a LLVM versión 8.

Fuente: opennet.ru

Añadir un comentario