mold: A Massively Parallel Linker
Rui Ueyama
Abstract
Linking is a critical step in the software build process that combines compiled object files into a single executable or shared library. Despite decades of engineering effort, link times remain a significant bottleneck in the edit-compile-debug cycle, particularly for large C++ programs. Existing linkers exploit limited parallelism, leaving most CPU cores idle during linking. We present mold, a Unix/Linux linker that applies data parallelism systematically across the entire linking pipeline. We first analyze the architectural constraints that prevent existing linkers from scaling, including entangled symbol resolution and archive processing, and then show how a clean-slate design that decouples them overcomes these limitations. On large real-world programs, mold links multi-gigabyte debug binaries in at most a few seconds, and often in under a second. It is 2.4-16.1x faster than the state-of-the-art lld linker, and up to 112x faster than the traditional GNU ld. An ablation study shows that no single optimization dominates; the speedup comes from the cumulative effect of parallelizing all passes.
Create a lesson
Related papers
AdaSprite: Resource-efficient Online Co-Adaptation for V2I Systems Under Large-scale Data Drifts
Lehao Wang, Zhiwen Yu, Sicong Liu et al.
Global Simulation-Guided Dynamic Operator Scheduling for Efficient Multi-Tenant Model Serving
Weinan Liu, Zeyuan Ding, Dian Ding et al.
From LLM Inference to Agentic Workloads: Characterization and Implications for Serving Systems
Chaokun Chang, Yukun Zhou, Kaihua Fu et al.
CoRun: Padding is Simple and Efficient for Deterministic LLM Inference
Shiju Zhao, Jiacheng Yang, Qihang Chen et al.
A Bounded Reclaim Actuator for PSI-Guided Compressed Memory: A Controlled Ablation
Abhiyan Dhakal, Sanjog Sigdel
The Ingestion Tax: Adopting File-Backed Weights in Tensor Frameworks
Yuan Si, Yufeng Lin, Daming Li et al.