Lanzamiento del lenguaje de programación Rust 1.37

publicado lanzamiento del lenguaje de programación del sistema Moho 1.37, 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 un medio para lograr un alto paralelismo de tareas sin utilizar un recolector de basura o 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:

  • En el compilador Rustc. proporcionado soporte para optimización basada en resultados de creación de perfiles de código (PGO, optimización guiada por perfiles),
    permitiéndole generar código más óptimo basado en el análisis de las estadísticas acumuladas durante la ejecución del programa. Para generar un perfil, se proporciona el indicador "-C perfil-generar" y para usar el perfil durante el ensamblaje - "-C perfil-uso" (inicialmente, el programa se ensambla con el primer indicador, se ejecuta y después de crear el perfil, se vuelve a montar con la segunda bandera);

  • Al ejecutar el comando "cargo run", que es conveniente para probar rápidamente aplicaciones de consola, se agregó la capacidad de seleccionar automáticamente un archivo ejecutable para ejecutar si hay varios archivos ejecutables en el paquete. El archivo predeterminado que se ejecutará se determina mediante la directiva default-run en la sección [paquete] con parámetros del paquete, lo que le permite evitar especificar explícitamente el nombre del archivo a través del indicador "-bin" cada vez que ejecuta "cargo run";
  • El comando “proveedor de carga”, previamente proporcionado como paquete separado. El comando le permite organizar el trabajo con una copia local de las dependencias: después de ejecutar "cargo seller", todos los códigos fuente de las dependencias del proyecto se descargan de crates.io a un directorio local, que luego se puede usar para trabajar sin acceder a crates. io (después de ejecutar el comando, se muestra una sugerencia para cambiar la configuración para usar el directorio para compilaciones). Esta característica ya se utiliza para organizar la entrega del compilador Rustc con el empaquetado de todas las dependencias en un archivo con el lanzamiento;
  • Ahora es posible crear enlaces a opciones de enumeración usando alias de tipo (por ejemplo, en el cuerpo de la función “fn increment_or_zero(x: ByteOption) puede especificar “ByteOption::None => 0”), escribir construcciones de cálculo (‹ MyType ‹.. ››::option => N) o Accesos propios (en los bloques c &self se puede especificar “Self::Quarter => 25”);
  • Se agregó la capacidad de crear constantes sin nombre en macros. En lugar de definir el nombre del elemento en "const", ahora puede usar el carácter "_" para seleccionar dinámicamente un identificador que no se repita, evitando conflictos de nombres al volver a llamar a la macro;
  • Se agregó la capacidad de usar el atributo "#[repr(align(N))" con enumeraciones usando una sintaxis similar a definir una estructura AlignN`T` con alineación y luego usar AlignN`MyEnum`;
  • Una nueva parte de la API se ha movido a la categoría estable, incluidos BufReader::buffer, BufWriter::buffer y
    Celda::from_mut,
    Celda::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Opción::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Envoltura::reverse_bits y
    segmento::copiar_dentro.

Adicionalmente, se puede señalar inicio de la prueba proyecto estándar asíncrono, que ofrece una variante asíncrona de la biblioteca estándar de Rust (un puerto de la biblioteca estándar, en el que todas las interfaces se ofrecen en una versión asíncrona y están listas para usar con sintaxis async/await).

Fuente: opennet.ru

Añadir un comentario