Rui Ueyama, LLVM lld linkija ja chibicc kompilaatori autor, tutvustas uue kõrge jõudlusega linkija Mold esimest stabiilset versioon, mis on märkimisväärselt kiirem kui GNU gold ja LLVM lld objekti failide ühendamiseks. Projekt on tunnustatud tööstuslikuks kasutamiseks valmis ja võib olla kiire, läbipaistva asendajana GNU linkija jaoks Linuxi süsteemides. Järgmise suure väljaande plaanides on toeks macOS platvorm, pärast mida algab Moldi kohandamine Windowsile.
Mold on kirjutatud C++ (C++20) keeles ja levitatakse AGPLv3 litsentsi alusel, mis on ühilduv GPLv3-ga, kuid mitte GPLv2-ga, kuna nõuab muudatuste avaldamist võrguteenuste arendamisel. Selline valik on seletatav sooviga saada arendustegevuseks rahastust — autor on valmis müüma koodi õigusi litsentsi andmiseks vabamatel tingimustel, näiteks MIT, või pakkuma eraldi kommertslitsentsi neile, kellele AGPL ei sobi.
Mold toetab kõiki GNU linkeri võimalusi ja eristub äärmiselt kõrge jõudlusega — linkimine toimub kiirusel, mis on vaid kaks korda aeglasem kui failide kopeerimine cp utiliidiga. Näiteks Chrome 96 (koodi suurus 1,89 GB) ehitamisel on 8- tuumalise arvuti puhul GNU gold kasutamisega täitmine 53 sekundit, LLVM lld — 11,7 sekundit, kuid Mold kulub vaid 2,2 sekundit (26 korda kiiremini kui GNU gold). Clang 13 (3,18 GB) linkimisel on GNU gold jaoks vajalik 64 sekundit, LLVM lld — 5,8 sekundit ja Mold — 2,9 sekundit. Firefox 89 (1,64 GB) linkimisel kulub GNU gold 32,9 sekundit, LLVM lld — 6,8 sekundit ja Mold — 1,4 sekundit.

Koodikomponeerimise aja lühendamine võimaldab oluliselt suurendada suuremate projektide arendamise mugavust, vähendades ootamist, mis tekib täitmisfailide koostamisel vigadeotsimise ja muudatuste testimise käigus. Moldi loomise põhjus oli ärritus, mis tulenes vajadusest oodata koostamise lõpetamist iga koodimuudatuse järel, sama kui ka olemasolevate koostajate madal efektiivsus mitme tuuma süsteemide peal ning soov katsetada täiesti erinevat koostamise arhitektuuri, vältides samas liiga keeruliste mudelite nagu inkrementaalne koostamine kasutamist.
Moldi kompileerimise kõrge tootlikkus saavutatakse suure arvu eelnevalt koostatud objektifailide abil, kasutades kiiremaid algoritme, CPU saadaval olevate tuumade vahel operatsioonide aktiivset paralleelset töötlemist ja tõhusamaid andmestruktuure. Näiteks on Moldis rakendatud intensiivsete arvutuste teostamise tehnika koos failide kopeerimisega, objektifailide ennetav laadimine mälu, kiirete rippmenüü plaanide kasutamine sümbolite lahendamisel, kohalike tabelite skaneerimine eraldi protsessis ja korduvate ühendavate sektsioonide deduplikatsioon erinevates failides.
Allikas: opennet.ru
