Lanzamiento del lenguaje de programación Rust 1.46

publicado versión 1.46 del lenguaje de programación del sistema Herrumbre, 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.

El principal innovaciones:

  • Se han ampliado las capacidades de las funciones definidas mediante la expresión "const fn", que pueden denominarse no solo funciones regulares, sino que también pueden usarse en cualquier contexto en lugar de constantes. Estas funciones se calculan en tiempo de compilación, no en tiempo de ejecución, por lo que están sujetas a ciertas restricciones, como la capacidad de leer solo desde constantes.

    La nueva versión elimina la prohibición de utilizar operadores booleanos (“&&” y “||”) en dichas funciones y permite el uso de construcciones “if”, “if let”, “match”,
    " while ", " while let " y " loop ", y también proporciona la capacidad de convertir en sectores (slice, matrices dinámicas) utilizando la expresión "&[T]". El uso de estas características en las funciones "const fn" le permite mover algunas operaciones que consumen muchos recursos a la etapa de compilación. Por ejemplo, la implementación de "const-sha1" permite calcular hashes SHA-1 en tiempo de compilación, lo que acelera los enlaces de WinRT para Rust casi 40 veces.

  • Para que los mensajes de error sean más informativos, se ha estabilizado la compatibilidad con el atributo “#[track_caller]”, que es útil para funciones como desenvolver, que puede causar pánico si los tipos se usan incorrectamente. El controlador de pánico utilizará el atributo especificado para imprimir la ubicación de la persona que llama en un mensaje de error.
  • El atributo "const", que determina la posibilidad de usarlo en cualquier contexto en lugar de constantes, se utiliza en el método std::mem::forget.
  • Una nueva parte de la API se ha movido a la categoría estable, incluidas las estabilizadas Option::zip y vec::Drain::as_slice.
  • En el administrador de paquetes Carga agregado soporte para nuevas variables de entorno establecidas al compilar un paquete: CARGO_BIN_NAME (nombre del archivo ejecutable resultante), CARGO_CRATE_NAME (nombre del paquete), CARGO_PKG_LICENSE (licencia especificada en el manifiesto), CARGO_PKG_LICENSE_FILE (ruta al archivo de licencia).

Fuente: opennet.ru

Añadir un comentario