Rui Ueyama, автор компоновщика LLVM lld и компилятора chibicc, представил первый стабильный релиз нового высокопроизводительного компоновщика Mold, заметно опережающего по скорости связывания объектных файлов компоновщики GNU gold и LLVM lld. Проект признан готовым для рабочих внедрений и может применяться в качестве более быстрой прозрачной замены GNU linker на Linux-системах. Из планов на следующий значительный выпуск отмечается доведение до готовности поддержки платформы macOS, после чего начнётся работа по адаптации Mold для Windows.
Mold je napisan v C++ (C++20) in je licenciran pod AGPLv3, ki je združljiv z GPLv3, ni pa združljiv z GPLv2, saj zahteva odprte spremembe pri razvoju omrežnih storitev. Ta izbira je razložena z željo po pridobitvi sredstev za razvoj - avtor je pripravljen prodati pravice do kode za ponovno licenciranje pod permisivno licenco, kot je MIT, ali zagotoviti ločeno komercialno licenco za tiste, ki niso zadovoljni z AGPL.
Mold podpira vse funkcije povezovalnika GNU in ima zelo visoko zmogljivost - povezovanje se izvaja s hitrostjo, ki je le polovica hitrejša od preprostega kopiranja datotek s pripomočkom cp. Na primer, ko gradite Chrome 96 (velikost kode 1.89 GB), potrebujete 8 sekund, da povežete izvedljive datoteke z debuginfo na 53-jedrnem računalniku z uporabo GNU gold, LLVM lld - 11.7 sekunde in Mold le 2.2 sekunde (26-krat hitreje kot zlato GNU). Pri povezovanju Clang 13 (3.18 GB) traja 64 sekund v GNU gold, 5.8 sekunde v LLVM lld in 2.9 sekunde v Mold. Ko gradite Firefox 89 (1.64 GB), potrebujete 32.9 sekunde v GNU gold, 6.8 sekunde v LLVM lld in 1.4 sekunde v Moldu.

Zmanjšanje časa gradnje lahko znatno izboljša udobje razvijanja velikih projektov z zmanjšanjem čakanja v procesu generiranja izvedljivih datotek pri odpravljanju napak in preizkušanju sprememb. Motivacija za ustvarjanje Molda je bila frustracija zaradi čakanja na dokončanje povezovanja po vsaki spremembi kode, slaba zmogljivost obstoječih povezovalnikov v večjedrnih sistemih in želja po preizkusu bistveno drugačne povezovalne arhitekture brez uporabe preveč zapletenih modelov, kot je kot inkrementalno povezovanje.
Visoka zmogljivost povezovanja izvedljive datoteke iz velikega števila predmetnih datotek, pripravljenih s prevajalnikom, v Moldu je dosežena z uporabo hitrejših algoritmov, aktivnim paraleliziranjem operacij med razpoložljivimi jedri CPE in uporabo učinkovitejših podatkovnih struktur. Mold na primer izvaja tehnike za izvajanje intenzivnih izračunov med kopiranjem datotek, prednalaganjem predmetnih datotek v pomnilnik, uporabo hitrih zgoščevalnih tabel za ločljivost znakov, skeniranje premestitvenih tabel v ločeni niti in odstranjevanje podvojitev združenih odsekov, ki se ponavljajo v različnih datotekah.
Vir: opennet.ru
