El equipo de Rust lanzó Rust 1.100.0 el 12 de noviembre de 2026. La actualización se instala con rustup update stable y trae una de las funciones más esperadas de la historia del lenguaje: el tipo never por fin es estable, después de 10 años y cinco intentos fallidos de estabilización. El anuncio oficial se publicó en el blog del lenguaje.
El tipo never, por fin estable
El tipo never, escrito como ! en el código, es el tipo de las computaciones que nunca producen un valor, como return, break y std::process::exit. Hasta ahora solo podía aparecer como tipo de retorno de una función (-> !); en esta versión puede usarse en cualquier posición de tipo, por ejemplo en Result<T, !>, que expresa en el propio tipo que una operación no puede fallar.
La versión también convierte Infallible en un alias del tipo never, lo que hace compatibles las APIs antiguas con !. Para ello fue necesario un pequeño cambio de compatibilidad: la inferencia de tipos en expresiones divergentes ahora usa ! en lugar de () en las ediciones anteriores a 2024 (2015, 2018 y 2021). Según LWN, el equipo midió el impacto con crater, que compila todos los crates públicos de crates.io: unos 3.300 crates resultaron afectados, pero solo siete quedaron totalmente rotos, y ya se enviaron correcciones a los crates públicos afectados.
Asignadores personalizados para Vec y Box
Rust 1.100 estabiliza el núcleo de la API Allocator, que permite a los autores de bibliotecas definir asignadores personalizados para tipos de la biblioteca estándar — por ahora, Vec y Box, con métodos como Vec::new_in y Box::new_in. Es la base del proyecto Allocators 1.0, con más colecciones y tipos de puntero en camino.
DropGuard y tipos de tamaño cero
El nuevo core::mem::DropGuard ejecuta un closure cuando un valor sale de ámbito, en cualquier camino de salida — retorno, ? o pánico — y ofrece el método dismiss para liberar la guarda, lo que facilita escribir APIs transaccionales con rollback. Por su parte, std::mem::conjure_zst es la forma dedicada e insegura (unsafe) de crear valores de tipos de tamaño cero cuando se sabe que es seguro hacerlo.
Cargo contra dependencias olvidadas y ataques a la cadena de suministro
Cargo ahora avisa sobre dependencias no utilizadas, con el lint cargo::unused_dependencies, activado por defecto como advertencia y configurable en la tabla [lints.cargo] de Cargo.toml. Es el primer paso del nuevo sistema de lints de Cargo.
La versión también estabiliza min-publish-age, conocido como "cooldown" de dependencias: con registry.global-min-publish-age = "3 days", Cargo ignora las versiones publicadas hace menos tiempo que el plazo, porque las versiones maliciosas suelen detectarse en horas o días. En el ejemplo del anuncio, cargo update mantuvo clap 4.6.7 y dejó fuera la 4.6.9, publicada dos días antes. El propio equipo subraya que la función reduce el riesgo, pero no es una defensa completa, y que cargo install ignora el plazo mínimo.
Otros aspectos destacados
La biblioteca estándar incorpora el método bool::toggle, que invierte un booleano en su lugar. En plataformas, el objetivo wasm32-wasip3 fue promovido a Tier 2, mientras que los objetivos de Windows de 32 bits (i686) dejan de distribuir las herramientas del compilador y pasan a recibir solo la biblioteca estándar. La actualización también reduce las colisiones de caché de Cargo al reorganizar el directorio de build.
Fuentes
- Rust Blog — Announcing Rust 1.100.0 (oficial)
- Rust — Release Notes 1.100.0 (oficial)
- LWN.net — Stabilizing Rust's never type
- dev.to — Rust 1.100: 3 errors become zero with the never type
Imagen: logotipo de Rust, Rust Foundation, CC BY 4.0, vía Wikimedia Commons.
Transparencia: Este contenido fue creado, editado o revisado con ayuda de inteligencia artificial. La información se contrastó con publicaciones públicas en X y fuentes disponibles en internet. Consulta las fuentes originales para verificar el contexto completo.
Por Muse