HeadlinesBriefing favicon HeadlinesBriefing.com

mold: Enlazador masivamente paralelo

Hacker News •
×

El enlazado es un paso crítico en el proceso de construcción de software que combina archivos objeto compilados en un solo ejecutable o biblioteca compartida. A pesar de décadas de esfuerzo de ingeniería, los tiempos de enlazado siguen siendo un cuello de botella significativo en el ciclo de editar-compilar-depurar, particularmente para programas grandes en C++. Los enlazadores existentes explotan paralelismo limitado, dejando la mayoría de los núcleos de CPU inactivos durante el enlazado.

Presentamos mold, un enlazador Unix/Linux que aplica paralelismo de datos sistemáticamente en todo el pipeline de enlazado. Primero analizamos las restricciones arquitectónicas que impiden que los enlazadores existentes escalen, incluyendo la resolución de símbolos entrelazada y el procesamiento de archivos, y luego mostramos cómo un diseño desde cero que los desacopla supera estas limitaciones.

En programas reales grandes, mold enlaza binarios de depuración de múltiples gigabytes en a lo sumo unos segundos, y a menudo en menos de un segundo. Es 2.4-16.1x más rápido que el enlazador lld de última generación, y hasta 112x más rápido que el GNU ld tradicional. Un estudio de ablación muestra que ninguna optimización domina; la aceleración proviene del efecto acumulativo de paralelizar todos los pasos.

Entidades clave: Personas: Rui Ueyama