Rust 1.88.0 ya está disponible: novedades en let chains, funciones naked, limpieza automática en Cargo y mejoras clave para sistemas embebidos y compilación condicional

El equipo de Rust ha anunciado el lanzamiento de la versión 1.88.0 del lenguaje, consolidando su compromiso con la seguridad, eficiencia y control a bajo nivel. Esta versión llega con funcionalidades largamente esperadas por la comunidad de sistemas, herramientas para compiladores y desarrollo embebido, así como mejoras en el compilador y en el gestor de paquetes Cargo.

Los usuarios que ya tengan Rust instalado mediante rustup pueden actualizar directamente con el comando:

rustup update stable

Principales novedades de Rust 1.88.0

? Let chains en condiciones if y while (solo en Rust 2024)

Una de las mejoras más destacadas es la estabilización de let chains, que permite encadenar declaraciones let usando && dentro de condiciones if y while. Esto permite mezclar expresiones booleanas y patrones sin necesidad de anidar múltiples bloques if let.

Ejemplo:

if let Channel::Stable(v) = release_info()
    && let Semver { major, minor, .. } = v
    && major == 1
    && minor == 88
{
    println!("`let_chains` fue estabilizado en esta versión");
}

Esta característica solo está disponible en la edición 2024 de Rust, ya que depende de cambios internos en el manejo del alcance temporal de if let.

?? Funciones naked: control total del ensamblado

Rust ahora admite funciones naked, ideales para contextos de bajo nivel como sistemas operativos, bootloaders o bibliotecas embebidas. Estas funciones se declaran con el atributo #[unsafe(naked)] y no generan epílogo ni prólogo por parte del compilador. El cuerpo debe estar compuesto exclusivamente por una llamada a naked_asm!.

Ejemplo:

#[unsafe(naked)]
pub unsafe extern "sysv64" fn suma(a: u64, b: u64) -> u64 {
    core::arch::naked_asm!(
        "lea rax, [rdi + rsi]",
        "ret"
    );
}

Esto permite a los desarrolladores tener control completo sobre el código máquina generado.

? Compilación condicional con booleanos: cfg(true) y cfg(false)

A partir de esta versión, el sistema de predicados cfg permite utilizar directamente los valores booleanos true y false para definir bloques de código activado o desactivado sin ambigüedad.

Antes, se usaban expresiones como cfg(all()) (para habilitar algo) o cfg(any()) (para deshabilitar), lo cual era menos intuitivo.

Ahora se puede escribir:

#[cfg(true)]
fn activa() {}

#[cfg(false)]
fn inactiva() {}

Esto también se extiende a las configuraciones en los manifiestos de Cargo.

? Limpieza automática de caché en Cargo

Cargo, el gestor de paquetes de Rust, incluye ahora un sistema de recolección automática de basura (garbage collection) en su directorio de caché ($CARGO_HOME).

A partir de la versión 1.88, Cargo eliminará automáticamente:

  • Archivos .crate descargados desde Internet no accedidos en 3 meses.
  • Archivos locales no accedidos en 1 mes.

Esto resuelve un problema histórico donde el espacio ocupado por la caché de dependencias podía crecer indefinidamente. Esta limpieza no se ejecutará si se usa Cargo en modo offline (--offline, --frozen). Puede desactivarse en la configuración con:

[net]
cache.auto-clean-frequency = "never"

? Nuevas APIs estabilizadas

Rust 1.88 estabiliza múltiples funciones nuevas y habilita otras ya existentes en contextos constantes (const). Algunas de las más destacadas son:

  • HashMap::extract_if, HashSet::extract_if
  • Cell::update, Cell::replace, Cell::get_mut
  • Nuevas funciones en proc_macro::Span (posición, archivo, línea, columna?)
  • Métodos de slicing: as_chunks, as_rchunks, as_chunks_unchecked, etc.
  • hint::select_unpredictable

Esto mejora la ergonomía para código genérico, macros procedurales y operaciones en compilación constante.

Otros cambios relevantes

  • El target i686-pc-windows-gnu baja a Tier 2, lo que implica menor prioridad en las pruebas automáticas. Sin embargo, sigue estando disponible a través de rustup.
  • Continúa el trabajo en nuevas funcionalidades inestables, como el comando cargo gc, aún en seguimiento bajo cargo#13060.

Conclusión

Rust 1.88.0 representa un paso firme hacia la edición 2024 del lenguaje, que promete unificar más aspectos del diseño, hacer el código más expresivo y brindar mayor control a quienes trabajan cerca del hardware.

Desde la ergonomía de los let chains, hasta la posibilidad de escribir funciones en ensamblador limpio y controlar la limpieza de cachés automáticamente, esta versión consolida a Rust como una opción seria para desarrolladores de sistemas, compiladores, backends de alto rendimiento y entornos embebidos.

? Actualiza ya:

rustup update stable

? Notas completas de la versión: https://blog.rust-lang.org/2025/06/26/Rust-1.88.0.html
? Participa en las betas: rustup default beta o nightly para probar antes que nadie.

 

Fuente: https://blog.rust-lang.org/2025/06/26/Rust-1.88.0/

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP