mold: un enlazador masivamente paralelo para compilar binarios en segundos

Fuentes: mold: A Massively Parallel Linker

mold es un enlazador (linker) para sistemas Unix y Linux que aplica paralelismo de datos de forma sistemática a todo el proceso de enlazado, una fase crítica en la construcción de software que combina ficheros objeto compilados para producir un ejecutable o una biblioteca compartida. Aunque los enlazadores se han optimizado durante décadas, los tiempos de enlace siguen siendo un cuello de botella importante en el ciclo editar-compilar-depurar, sobre todo en programas grandes escritos en ese lenguaje.

Los autores del trabajo, disponible en arXiv, analizan primero las restricciones arquitectónicas que impiden escalar a los enlazadores actuales, como el entrelazado entre la resolución de símbolos y el procesamiento de archivos estáticos (archivos .a). A partir de ese diagnóstico, mold propone un diseño desde cero que desacopla esas etapas para eliminar las dependencias que frenan la paralelización y mantiene ocupados los múltiples núcleos del procesador durante toda la fase de enlace.

El resultado se mide sobre programas reales de gran tamaño: mold enlaza binarios de depuración de varios gigabytes en pocos segundos y, con frecuencia, en menos de uno. Frente al estado del arte, el enlazador lld, mold es entre 2,4 y 16,1 veces más rápido; frente al clásico GNU ld, la mejora llega hasta 112 veces. Un estudio de ablación muestra que la ganancia no procede de una única optimización, sino del efecto acumulado de paralelizar todas las pasadas del proceso.