Lanzamiento del lenguaje de programación Rust 1.52

Se ha publicado el lanzamiento del lenguaje de programación del sistema Rust 1.52, fundado por el proyecto Mozilla, pero ahora desarrollado bajo los auspicios de la organización independiente sin fines de lucro Rust Foundation. El lenguaje se centra en la seguridad de la memoria, proporciona administración automática de la memoria y proporciona los medios para lograr un alto paralelismo de tareas sin utilizar un recolector de basura o tiempo de ejecución (el tiempo de ejecución se reduce a la inicialización y el mantenimiento básicos de la biblioteca estándar).

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. Para distribuir bibliotecas, garantizar el ensamblaje y gestionar dependencias, el proyecto está desarrollando el administrador de paquetes Cargo. El repositorio crates.io es compatible con bibliotecas de alojamiento.

Principales novedades:

  • Se eliminó el vínculo con el orden de ejecución de los comandos “cargo check” y “cargo clippy”. Anteriormente, llamar a "cargo clippy" después de "cargo check" no iniciaba la utilidad clippy (linter) debido a la falta de separación de caché para estos modos de verificación. Ahora este problema se ha resuelto y el orden en el que se llaman “cargo clippy” y “cargo check” ya no importa.
  • Una nueva parte de la API se ha transferido a la categoría estable, incluidos los siguientes métodos que se han estabilizado:
    • Argumentos::as_str
    • carácter::MAX
    • carácter::REPLACEMENT_CHARACTER
    • carácter::UNICODE_VERSION
    • char::decode_utf16
    • char::desde_dígito
    • char::from_u32_unchecked
    • char::desde_u32
    • sector::punto_partición
    • str::rsplit_once
    • str::split_once
  • El atributo “const”, que determina la posibilidad de utilizarlo en cualquier contexto en lugar de constantes, se utiliza en los métodos:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::a_ascii_minúsculas
    • u8::eq_ignore_ascii_case
  • Se agregó lint check unsafe_op_in_unsafe_fn para determinar si el código inseguro utilizado en funciones inseguras está enmarcado por bloques inseguros.
  • Está permitido convertir punteros mutables a matrices en forma de punteros al tipo de elemento de la matriz. let mut x: [usar; 2] = [0, 0]; let p = &mut x as *mut usize; sea ​​p = &mut x como *const usize;
  • Se han agregado 9 nuevos controles a clippy (linter).
  • El administrador de paquetes de carga ahora admite el campo "manifest_path" en JSON para paquetes. Se agregó soporte para especificar información de licencia en formato SPDX 3.11 al repositorio crates.io.
  • Se permite especificar varios filtros al ejecutar pruebas; por ejemplo, ejecutar "prueba de carga - foo bar" ejecutará todas las pruebas que coincidan con las máscaras "foo" y "bar".
  • El kit de herramientas LLVM predeterminado se actualizó a LLVM 12.
  • Se ha implementado el tercer nivel de soporte para las plataformas s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl y powerpc-unknown-openbsd. El tercer nivel implica soporte básico, pero sin pruebas automatizadas, publicación de compilaciones oficiales y verificación de la capacidad de compilación del código.

Fuente: opennet.ru

Añadir un comentario