La nueva versión de Rust 1.78 ya fue liberada y llega implementado nuevas características, asi como también con la estabilización de algunas API, mejoras en Cargo y más.
Para quienes desconocen de este lenguaje de programación deben saber que se enfoca en la seguridad de la memoria y proporciona los medios para lograr un alto paralelismo de trabajos mientras evita el uso de un recolector de basura y tiempo de ejecución (el tiempo de ejecución se reduce a la inicialización básica y el mantenimiento de la biblioteca estándar).
Principales novedades de Rust 1.78
En esta nueva versión que se presenta de Rust 1.78 ha aumentado su requisito mínimo para Windows 10, ademas de que el compilador se cambió para usar LLVM 18. Cuando se usa LLVM 18 para arquitecturas x86-32 y x86-64, se cambió la ABI asociada con los tipos u128 e i128.
Por la parte de los cambios, una de las características que se destaca es que Rust ahora soporta un espacio de nombres de atributos «#[diagnostic]«, que proporciona un medio para influir en los mensajes de error producidos por el compilador. Estos son tratados como sugerencias que el compilador no está obligado a utilizar, y tampoco es un error proporcionar un diagnóstico que el compilador no reconozca. Esto permite que el código fuente proporcione diagnósticos incluso cuando no son compatibles con todos los compiladores, ya sean diferentes versiones o implementaciones completamente diferentes.
Además, se ha estabilizado un caché global en Cargo que almacena información sobre el uso de datos más reciente. Este caché se encuentra en $CARGO_HOME/.global-cache y utiliza SQLite para su implementación. Automáticamente, se actualiza para reflejar los cambios más recientes en el índice, el archivo crate, el directorio de códigos, git clone y git checkout, lo que mejora la eficiencia y la velocidad de las operaciones de gestión de dependencias en los proyectos de desarrollo.
Otra de las novedades de Rust 1.78, es que la biblioteca estándar de Rust tiene diversas afirmaciones para las precondiciones de las funciones «unsafe» que ahora se pueden aplazar hasta la generación del código. Esto permite realizar estas comprobaciones que históricamente solo se habían habilitado en compilaciones «#[cfg(debug_assertions)]» para evitar afectar el rendimiento en la versión de lanzamiento. Con este cambio, ahora los usuarios pueden detectar comportamientos indefinidos en su código, aunque los detalles sobre cuánto se verifica no son estables en general. Para activar comprobaciones, ahora es suficiente habilitar las afirmaciones de depuración para las compilaciones de prueba o depuración del código.
Ademas de ello, ahora el comportamiento de las funciones de la biblioteca estándar que afectan la alineación de punteros y sectores ahora es predecible en el runtime y depende de los datos de entrada.La función pointer::align_offset, que calcula el desplazamiento para alinear el puntero ahora devuelve usize::MAX solo si la operación falla. Las funciones slice::align_to y slice::align_to_mut, que transforman los cortes en una representación con un corte medio alineado y los cortes iniciales y finales originales, ahora siempre devuelven la parte media más grande.
Por parte, se menciona que se han pasado a la categoría «estable las siguientes APIa: impl Read for &Stdin, impl From<TryReserveError> for io::Error y la implementación impl<Fd: AsFd> que permite el uso de ?Sized.
De los demas cambios que se destacan de esta nueva versión:
- Se ha implementado el segundo nivel de soporte para la plataforma de destino Add wasm32-wasip1. El segundo nivel de soporte implica una garantía de montaje.
- La plataforma wasm32-wasi-preview1-threads ha cambiado de nombre a wasm32-wasip1-threads.
- En el administrador de paquetes Cargo, se ha estabilizado la versión 4 de los archivos de bloqueo (lockfile v4). Cargo ahora utiliza esta versión como estándar para garantizar la consistencia y la gestión eficiente de las dependencias en los proyectos.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Finalmente, para quienes estén interesados en actualizar desde una versión anterior de Rust instalada a través de rustup, se puede obtener la nueva versión de Rust 1.78 con:
rustup update stable
Si aún no cuentas con Rust instalado en tu sistema, puedes hacerlo ejecutando el siguiente comando en una terminal:
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
Fuente: desdelinux