Rust 1.100.0 estabiliza el tipo never, habilita partes centrales de los asignadores personalizados y suma controles de Cargo para gestionar dependencias y compilaciones.
***
- El tipo never, escrito como !, queda estable tras años de trabajo.
- Cargo puede advertir sobre dependencias no utilizadas y esperar antes de aceptar versiones recién publicadas.
- DropGuard, conjure_zst y las API de asignadores amplían las herramientas disponibles en la biblioteca estándar.
El equipo de lanzamientos de Rust anunció el 12 de noviembre de 2026 la versión 1.100.0 del lenguaje y su conjunto de herramientas. La actualización reúne cambios en el sistema de tipos, la biblioteca estándar y Cargo, el gestor de paquetes y herramienta de compilación de Rust; quienes ya usan rustup pueden instalarla con rustup update stable.
Entre las novedades más destacadas están la estabilización del tipo never, una API central para asignadores personalizados y nuevas funciones orientadas al manejo de dependencias. Cargo también reorganiza componentes de su caché de compilación, mientras que la biblioteca estándar incorpora utilidades para ejecutar cierres al salir de un ámbito y crear ciertos tipos de tamaño cero bajo condiciones inseguras.
Un hito para el tipo never
El tipo never, representado por el signo !, es el tipo de los cálculos que no producen un valor porque su ejecución no termina normalmente. Expresiones como return, break y std::process::exit tienen ese tipo, que permite al compilador reconocer que el flujo no llegará a las instrucciones posteriores.
La estabilización permite escribir ! en cualquier posición de un tipo, no solo como tipo de retorno de una función. Por ejemplo, ahora puede emplearse en Result<T, !> para representar una operación que no puede fallar, mientras que antes el lenguaje no permitía nombrar el tipo de esa manera.
Rust también convierte Infallible en un alias del tipo never, una decisión que el equipo presenta como parte del plan original para ese tipo. La integración fue compleja porque afecta a APIs existentes que utilizan Infallible, y la actualización modifica además el comportamiento de respaldo del tipo never en las ediciones 2015, 2018 y 2021.
Ese ajuste cambia el tipo de respaldo de () a ! en esas ediciones, como ya ocurría en la edición 2024. El equipo advierte que el efecto debería ser poco perceptible, aunque ciertos casos poco comunes podrían dejar de compilar o hacer que el compilador identifique más código como inalcanzable; por ello, recomienda actualizar dependencias afectadas, para las que ya pueden existir correcciones publicadas.
Más control sobre memoria y salidas de funciones
La versión estabiliza partes centrales de allocator_api mediante el trait Allocator, que permite a autores de bibliotecas definir asignadores personalizados. La posibilidad de usar esos asignadores con tipos de la biblioteca estándar se concentra actualmente en Vec y Box, y el equipo considera este paso una base para ampliar el soporte a otras colecciones y tipos de puntero.
La estabilización incluye Global y System, implementaciones de Allocator para referencias y tipos como Box, Arc y Rc, además de métodos para crear y recuperar valores con asignadores específicos. Entre las APIs incluidas figuran Box::new_in, Vec::new_in y variantes para manejar sus partes sin procesar; el anuncio señala que el trabajo sobre una superficie de API más amplia continuará.
Otra incorporación es core::mem::DropGuard, un auxiliar que ejecuta un cierre cuando se descarta el guardián. Recibe una variable y una función, permite seguir accediendo a esa variable mediante Deref y DerefMut, y consume el valor al ejecutar el cierre, de modo que una función puede definir qué hacer al salir por éxito, error o pánico.
El método dismiss devuelve el valor protegido sin ejecutar el cierre, lo que habilita patrones de operación transaccional. El equipo ilustra su uso con un analizador que guarda la longitud inicial de un vector y, si falla la conversión de una cadena a número, lo trunca para deshacer las modificaciones; si todas las conversiones funcionan, descarta el guardián y conserva los resultados.
Rust 1.100.0 también añade std::mem::conjure_zst, una forma específica de crear un valor de un tipo de tamaño cero cuando hacerlo es seguro. La función es unsafe: ciertos tipos de tamaño cero representan una condición que no puede fabricarse sin más, como un token marcador de PyO3 que indica que el programa mantiene el GIL de Python.
Cargo incorpora advertencias y enfriamiento de dependencias
Cargo ahora puede avisar cuando un proyecto declara dependencias que no utiliza, una situación que puede aumentar el tiempo de compilación. La nueva advertencia se integra en el sistema de lints de Cargo, se configura desde la tabla [lints.cargo] y queda activada con nivel warn por defecto.
El diagnóstico tiene límites relacionados con los distintos objetivos de compilación de un paquete. Cargo solo puede informar sobre una dependencia cuando se han compilado todos los objetivos que podrían utilizarla; por eso, una comprobación dirigida a un solo binario puede no revelar que una dependencia de uso compartido está sin utilizar, y tampoco hay advertencias para dependencias de desarrollo.
La actualización estabiliza además la resolución de dependencias con una edad mínima de publicación, conocida como tiempo de enfriamiento. Se configura en .cargo/config.toml mediante global-min-publish-age; con un valor de tres días, por ejemplo, Cargo omite durante la resolución las versiones más recientes y explica qué paquetes quedaron retenidos.
El anuncio muestra un ejemplo en el que Cargo selecciona cc 1.11.0 frente a la versión disponible 1.18.0, publicada tres horas antes, y clap 4.6.7 frente a 4.6.9, publicada dos días antes. Si hace falta una versión nueva de inmediato, una variable de entorno permite autorizarla para una actualización concreta; una vez registrada en Cargo.lock, permanecerá allí hasta que otra actualización vuelva a resolver dependencias.
La medida depende de que el registro incluya la fecha de publicación, por lo que no retiene versiones sin el campo pubtime. También queda fuera de su alcance cargo install, tanto para el paquete instalado como para sus dependencias, y el equipo aclara que el enfriamiento reduce ciertos riesgos de la cadena de suministro, pero no reemplaza la revisión habitual de actualizaciones.
Cambios internos y actualización a la versión estable
Cargo reorganiza la ubicación de los archivos de compilación para aplicar de manera más consistente el hash asociado a cada configuración. Ese hash distingue resultados generados con combinaciones diferentes, como distintas opciones de características; el cambio mueve el hash desde el nombre del archivo al directorio padre y ordena los directorios según la etapa de compilación.
El equipo relaciona esta modificación con problemas que podían provocar compilaciones adicionales, compilaciones omitidas o confusión sobre qué bibliotecas y binarios se estaban utilizando. También apunta a los casos en que varios worktrees de Git comparten un directorio de compilación; el nuevo diseño prepara mejoras posteriores, como recolección de basura de la caché y su desduplicación entre espacios de trabajo.
Aunque se trata de un cambio interno, algunos procesos de compilación y pruebas que dependían de soluciones temporales podrían verse afectados. Rust recomienda consultar el seguimiento de Cargo identificado como cargo#17287 para revisar posibles soluciones y reportar casos nuevos; en ciertos escenarios, la reorganización también puede volver innecesaria una solución provisional anterior.
La entrega incluye otras APIs estabilizadas, entre ellas comparaciones de Vec y slices con Cow, métodos de mapeo para Box, Rc y Arc, y funciones como bool::toggle, Vec::from_fn, str::trim_prefix y str::trim_suffix. También suma métodos para UnsafeCell, Child::main_thread_handle y la extensión de procesos de Windows show_window; las notas de lanzamiento enlazadas por el equipo reúnen el detalle completo de Rust, Cargo y Clippy.
Quienes ya administran Rust con rustup pueden obtener la versión estable mediante rustup update stable, y quienes todavía no tienen la herramienta pueden instalar rustup desde el sitio del proyecto. El equipo invita a probar versiones futuras desde los canales beta o nightly y a reportar errores, mientras advierte que los tiempos de enfriamiento son una capa adicional de protección, no una garantía total frente a paquetes maliciosos.
ADVERTENCIA: DiarioBitcoin ofrece contenido informativo y educativo sobre diversos temas, incluyendo criptomonedas, IA, tecnología y regulaciones. No brindamos asesoramiento financiero. Las inversiones en criptoactivos son de alto riesgo y pueden no ser adecuadas para todos. Investigue, consulte a un experto y verifique la legislación aplicable antes de invertir. Podría perder todo su capital.
Suscríbete a nuestro boletín
Artículos Relacionados
Empresas
CEO de Huggin Face promete defender la IA abierta tras los reportes sobre Jensen Huang
IA
La IA generativa gana terreno entre los desarrolladores de videojuegos
Curiosidades
Euclid publica su primer gran mapa del universo oscuro y abre una nueva etapa
Educación
