LLVM lld poolt välja töötatud Mold builderi esimene stabiilne väljalase

LLVM lld linkeri ja chibicci kompilaatori autor Rui Ueyama esitles uue suure jõudlusega Mold linkeri esimest stabiilset väljalaset, mis on objektifailide linkimise kiiruse poolest märgatavalt ees GNU gold ja LLVM lld linkeritest. Projekt loetakse tootmiseks juurutamiseks valmis ja seda saab kasutada Linuxi süsteemides GNU linkeri kiirema läbipaistva asendusena. Järgmise suurema väljalaske plaanid hõlmavad macOS-i platvormi toe valmimist, misjärel algab töö Moldi Windowsi jaoks kohandamisega.

Mold on kirjutatud C++ (C++20) keeles ja levitatakse AGPLv3 litsentsi all, mis on küll GPLv3-ga ühilduv, kuid mitte GPLv2-ühilduv, kuna nõuab võrguteenuste arendamisel muudatuste avamist. See valik on tingitud soovist saada arendusraha – autor on nõus müüma koodi õigused uuesti litsentsimiseks lubava litsentsi alusel, nagu MIT, või andma eraldi kommertslitsentsi neile, kes pole AGPL-iga rahul.

Mold toetab kõiki GNU linkeri funktsioone ja on väga kiire, linkides vaid poole kiiremini kui lihtsalt kopeerides faile cp-ga. Näiteks Chrome 96 (koodi suurus 1.89 GB) ehitamisel kulub C debuginfo käivitatavate failide loomiseks 8-tuumalises arvutis GNU goldi abil 53 sekundit, LLVM lld puhul 11.7 sekundit ja Moldi puhul vaid 2.2 sekundit (26 korda kiirem kui GNU kuld). Clang 13 (3.18 GB) linkimisel võtab GNU gold 64 sekundit, LLVM lld 5.8 sekundit ja Mold 2.9 sekundit. Firefox 89 (1.64 GB) linkimisel võtab GNU gold 32.9 sekundit, LLVM lld 6.8 ​​sekundit ja Mold 1.4 sekundit.

LLVM lld poolt välja töötatud Mold builderi esimene stabiilne väljalase

Linkimisaja lühendamine võib oluliselt parandada suurte projektide arendamise kasutatavust, vähendades silumis- ja muudatuste testimise ajal käivitatavate failide loomise protsessi. Hallituse põhjuseks oli pahameel, et pärast iga koodi muutmist tuli oodata linkimise lõpetamist, samuti olemasolevate linkerite kehv jõudlus mitmetuumalistes süsteemides ning soov proovida põhimõtteliselt teistsugust linkimisarhitektuuri ilma asjatult kasutamata. keerulised mudelid, näiteks järkjärguline linkimine.

Suur jõudlus käivitatava faili linkimisel suurest hulgast Moldis kompilaatori poolt koostatud objektifailidest saavutatakse kiiremate algoritmide kasutamise, saadaolevate protsessorituumade aktiivse paralleelsusega ja tõhusamate andmestruktuuride kasutamisega. Näiteks rakendab Mold intensiivsete arvutuste tegemise tehnikat samaaegselt failide kopeerimisega, objektifailide eellaadimisega mällu, kiirete räsitabelite kasutamist märkide lahendamisel, ümberpaigutamise tabelite skannimist eraldi lõimes ja erinevates failides korduvate liidetud lõikude dubleerimist.

Allikas: opennet.ru

Lisa kommentaar