mold: Ein Linker, der Multi-Gigabyte-Binaries in unter einer Sekunde verlinkt
mold: A Parallel Linker

Das Verlinken ist ein kritischer Schritt im Software-Build-Prozess, der kompilierte Objektdateien zu einem ausführbaren Programm oder einer Shared Library zusammenführt. Trotz jahrzehntelanger Optimierung bleibt die Linkzeit ein Engpass, besonders bei großen C++-Programmen. Bisherige Linker nutzen nur begrenzte Parallelität und lassen die meisten CPU-Kerne ungenutzt. Mit mold stellen wir einen Unix/Linux-Linker vor, der Datenparallelität systematisch über die gesamte Linking-Pipeline einsetzt. Durch eine saubere Neugestaltung, die Symbolauflösung und Archivverarbeitung entkoppelt, überwindet mold die Skalierungsgrenzen bestehender Linker. Bei großen realen Programmen verlinkt mold Multi-Gigabyte-Debug-Binaries in wenigen Sekunden, oft in unter einer Sekunde. Es ist 2,4- bis 16,1-mal schneller als der lld-Linker und bis zu 112-mal schneller als GNU ld. Eine Ablationsstudie zeigt, dass keine einzelne Optimierung dominiert; der Geschwindigkeitsgewinn entsteht durch die kumulative Wirkung der Parallelisierung aller Durchläufe.
Auf großen realen Programmen verlinkt mold Multi-Gigabyte-Debug-Binaries in höchstens ein paar Sekunden, oft in unter einer Sekunde.
- gabeochoa
Alter Tweet von Rui, aber ich habe ihn in einem neueren Zig-Video gesehen und fand die Einstellung wirklich gut:
(https://x.com/rui314/status/1560277403787997185)
> Meine Strategie ist es, den Wert von Gemeingütern um, sagen wir, 100 zu erhöhen und 1 als Gegenleistung zu bekommen, also habt Geduld mit mir. Wenn du mold kostenlos nutzen willst, kannst du das einfach tun. Das ist meine Open-Source-Geschäftsstrategie.
Ich wünsche Mold und Rui alles Gute.
- dochtman
Wild ist mittlerweile ein gutes Stück schneller als mold:
https://github.com/wild-linker/wild
(Benchmarks in der README.)
- lrvick
Wir verwenden mold als Standard-Linker in der Stagex-Linux-Distribution. Das hat Stunden von unserer Build-Zeit für den gesamten Baum gespart.