Lanzamiento del lenguaje de programación Rust 1.43

publicado lanzamiento del lenguaje de programación del sistema Moho 1.43, 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 libera al desarrollador de la manipulación del puntero y protege contra problemas que surgen de la manipulación de la memoria de bajo nivel, como accesos posteriores a la memoria, desreferencias de punteros nulos, desbordamientos del búfer y similares. 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:

  • Las macros brindan la capacidad de usar fragmentos de elementos para convertirlos en código para rasgos (trait), implementaciones (impl) o bloques externos. Por ejemplo:

    macro_reglas! rasgo_mac {
    ($i:elemento) => {
    rasgo T { $i }
    }
    }
    mac_trait! {
    fnfoo() {}
    }

    Conducirá a la generación:

    rasgo T {
    fnfoo() {}
    }

  • Detección de tipos mejorada de primitivas, referencias y operaciones binarias.
    Por ejemplo, el siguiente código, que anteriormente causaba un error, ahora podrá compilarse (Rust ahora determina correctamente que 0.0 y &0.0 deben ser del tipo f32):

    sea ​​n: f32 = 0.0 + &0.0;

  • Se agregó una nueva variable de entorno CARGO_BIN_EXE_{name} a Cargo, que se configura al crear pruebas de integración y le permite determinar la ruta completa al archivo ejecutable definido en la sección "[[bin]]" del paquete.
  • Si las declaraciones pueden utilizar atributos como "#[cfg()]".
  • La biblioteca ofrece la posibilidad de utilizar constantes asociadas directamente para tipos enteros y fraccionarios, sin importar un módulo. Por ejemplo, puede escribir inmediatamente u32::MAX o f32::NAN sin especificar primero "use std::u32" y "use std::f32".
  • Nuevo módulo agregado primitivo, que reexporta tipos primitivos de Rust, por ejemplo, cuando necesita escribir una macro y asegurarse de que los tipos no estén ocultos.
  • Una nueva porción de API se ha transferido a la categoría estable, incluida la estabilizada

    Una vez::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 y
    iter::once_with.

Fuente: opennet.ru

Añadir un comentario