¡El equipo de desarrolladores se complace en presentar Rust 1.36!
¿Qué hay de nuevo en Rust 1.36?
Y ahora, más detalles:
- En Rust 1.36 finalmente se ha estabilizado el rasgo Future.
- El paquete alloc.
A partir de Rust 1.36, las partes de std que dependen del asignador global (por ejemplo, Vec) se encuentran en el paquete alloc. Ahora, std reexporta estas partes. Más sobre esto. - MaybeUninit en lugar de mem::uninitialized.
En versiones anteriores, mem::uninitialized te permitía evitar la verificación de inicialización, siendo utilizada para la asignación perezosa de arrays, pero esta función era bastante peligrosa (más detalles), por lo que se ha estabilizado el tipo MaybeUninit, que es más seguro.
Y dado que MaybeUninit es una alternativa más segura, a partir de Rust 1.38, mem::uninitialized se convertirá en una función obsoleta.
Si quieres saber más sobre la memoria no inicializada, puedes leer el artículo del blog (Alexis Beingessner). - NLL para Rust 2015.
En el anuncio de Rust 1.31.0 los desarrolladores nos hablaban sobre NLL (Non-Lexical Lifetime), una mejora para el lenguaje que hace que el verificador de préstamos sea más inteligente y amigable con el usuario. Ejemplo:
fn main() {
let mut x = 5;
let y = &x;
let z = &mut x; // Esto no estaba permitido antes de 1.31.0.
}En 1.31.0, NLL solo funcionaba en Rust 2018, con la promesa de que los desarrolladores agregarían soporte también para Rust 2015.
Si quieres saber más sobre NLL, puedes leer más en esta entrada del blog (Felix Klocks). - Nueva bandera para Cargo —offline.
En Rust 1.36 se ha estabilizado una nueva bandera para Cargo. La bandera —offline indica a Cargo que utilice las dependencias en caché localmente, para que luego puedan ser usadas sin conexión. Cuando las dependencias necesarias no están disponibles offline, y si internet es necesario, Cargo devolverá un error. Para predescargar las dependencias, se puede usar el comando cargo fetch, que descargará todas las dependencias. - Aquí puedes leer una revisión más detallada de los cambios.
También hay cambios en la biblioteca estándar:
- Ahora el macro dbg!() puede aceptar varios argumentos.
- Algunos APIs ahora están marcados como const:
- Nuevos APIs que han sido estabilizados:
- Puedes encontrar otros cambios en la biblioteca estándar aquí.
Otras modificaciones Rust, Cargo y Clippy.
Fuente: linux.org.ru
