HeadlinesBriefing favicon HeadlinesBriefing.com

mold: Linker Massivamente Paralelo

Hacker News •
×

A ligação é uma etapa crítica no processo de construção de software que combina arquivos de objeto compilados em um único executável ou biblioteca compartilhada. Apesar de décadas de esforço de engenharia, os tempos de ligação continuam sendo um gargalo significativo no ciclo editar-compilar-depurar, particularmente para grandes programas C++. Os linkers existentes exploram paralelismo limitado, deixando a maioria dos núcleos de CPU ociosos durante a ligação.

Apresentamos mold, um linker Unix/Linux que aplica paralelismo de dados sistematicamente em todo o pipeline de ligação. Primeiro analisamos as restrições arquitetônicas que impedem os linkers existentes de escalar, incluindo resolução de símbolos entrelaçada e processamento de arquivos, e depois mostramos como um design novo que os desacopla supera essas limitações.

Em grandes programas do mundo real, mold liga binários de depuração de vários gigabytes em no máximo alguns segundos, e muitas vezes em menos de um segundo. É 2,4-16,1x mais rápido que o linker lld de última geração, e até 112x mais rápido que o GNU ld tradicional. Um estudo de ablação mostra que nenhuma otimização única domina; a aceleração vem do efeito cumulativo de paralelizar todas as passagens.

Entidades-chave: Pessoas: Rui Ueyama