BookinglyTech News
Software

El compilador de Rust acelera un 4,57% en dos meses gracias a optimizaciones clave

Nick Nethercote detalla cómo el equipo de Rust ha logrado mejoras significativas en el tiempo de compilación, incluyendo la activación del nuevo borrow checker Polonius Alpha.

2 min de lecturaLobsters0 vistas

El compilador de Rust ha registrado una reducción media del tiempo de ejecución real (wall-time) del 4,57% entre el 29 de julio y el 28 de septiembre de 2026. Nick Nethercote, quien lleva el seguimiento de rendimiento del proyecto, describe el resultado como un "mar de verde" en los benchmarks: de 629 mediciones, 555 mejoraron y solo 74 retrocedieron, con algunas reducciones de doble dígito.

Optimizaciones específicas

Una de las contribuciones más destacadas llega de Jakub Beránek, quien habilitó la generación de código orientada a perfiles (PGO) para Clippy en la pull request #159642. Esto arrojó mejoras de hasta el 18% en los benchmarks de Clippy. Por otro lado, Nikita Popov actualizó la versión de LLVM subyacente a la 23 en la pull request #158734, lo que supuso una reducción media del 1,2% en el tiempo de compilación, una cifra considerable para un solo cambio de dependencias.

El impacto de las nuevas características activadas en Nightly también ha sido gestionado activamente. El nuevo borrow checker, Polonius Alpha, es más preciso pero más lento en ciertos casos, como con la crate serde. Jack Huey ha trabajado en este frente, haciendo las computaciones de liveness perezosas (lazy) en la PR #161938, reduciendo el conteo de instrucciones en serde entre un 3% y un 5%. Similarmente, el nuevo resueltor de traits, Penelope Hammertime, ha requerido ajustes; Nethercote menciona varias PRs que han logrado reducciones del 50% en crates específicos que eran casos extremos de lentitud.

Otro contribuyente destacado, xmakro, optimizó la gestión de impl en el grafo de especialización (PR #157281), logrando una reducción media del 1,58% en el conteo de ciclos. También mejoró la carga de datos de compilación incremental y eliminó allocations en rutas críticas, usando dispatch estático en lugar de dinámico donde era posible.

Finalmente, hubo mejoras en el análisis de flujo de datos. Nethercote cambió el algoritmo de recorrido del grafo de flujo de control (CFG) para que converja más rápido al punto fijo. Esto tuvo un efecto dramático en cranelift-codegen, reduciendo el tiempo de compilación aproximadamente un 30% al pasar de 1,5 millones a 90.000 llamadas a una función de análisis, gracias a la estructura de esa crate que contiene funciones enormes con miles de bloques básicos.