En las compilaciones nocturnas de Rust se han ampliado las capacidades de paralelización de la compilación.

En el frontend del compilador Rust, que lleva a cabo tareas como análisis sintáctico, verificación de tipos y análisis de préstamos, se ha implementado soporte para la ejecución paralela, lo que permite reducir significativamente el tiempo de compilación. La paralelización ya está disponible en las compilaciones nocturnas de Rust y se activa mediante la opción "-Z threads=8". Se planea incluir esta funcionalidad en la rama estable en 2024.

El trabajo para reducir el tiempo de compilación en Rust se ha estado realizando durante varios años. En los primeros 10 meses de 2023, el tiempo de compilación se redujo en promedio en un 13%, el consumo máximo de memoria disminuyó en un 15% y el tamaño de los archivos generados se redujo en un 7%. En esta etapa, se alcanzó una aceleración gracias a las optimizaciones del propio compilador. Después de esto, los desarrolladores comenzaron a trabajar en la aceleración mediante la paralelización de las operaciones durante la compilación.

Hasta ahora, la paralelización en Rust se había asegurado principalmente a nivel de procesos, por ejemplo, el gestor de paquetes Cargo puede iniciar varios procesos rustc para compilar varios paquetes simultáneamente. Soporte para paralelización también está presente en el backend, que realiza operaciones relacionadas con la generación de código: el backend de Rust puede generar código en partes que posteriormente LLVM puede procesar en paralelo. Sin embargo, el frontend aún solo podía procesar el código fuente en modo de un solo hilo.

Para soportar la paralelización, el frontend ha sido adaptado para utilizar la biblioteca Rayon y ha sido significativamente revisado. Por ejemplo, muchas de sus partes ahora se sincronizan mediante mutexes y bloqueos de lectura/escritura, y se utilizan tipos atómicos en el código. Durante las pruebas de rendimiento, la nueva implementación paralelizable podía realizar la compilación hasta un 2% más lenta en modo de un solo hilo (-Z threads=1), pero cuando había más de un hilo, la velocidad aumentaba significativamente. Por ejemplo, al establecer 8 hilos (-Z threads=8), en algunas situaciones se lograba reducir el tiempo de compilación en un 50%.

Sin embargo, el resultado depende en gran medida de la configuración del entorno y del código compilado: para programas muy pequeños, que ya se compilan rápidamente, la compilación en modo multihilo puede tardar más. Además, el consumo de memoria en modo multihilo puede aumentar significativamente; por ejemplo, en las pruebas se observó un aumento del consumo de memoria de hasta un 35%.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster