Rui Ueyama, LLVM lld ja chibicc kompilaatori autor, tutvustas uue kĂ”rge jĂ”udlusega linker'i Mold esimest stabiilset vĂ€ljaannet, mis ĂŒletab GNU gold ja LLVM lld objektifailide sidumise kiiruselt. Projekti peetakse tööks valmis ja seda saab kasutada kiiremana, et asendada GNU linkeri Linuxi sĂŒsteemides. JĂ€rgmise suure vĂ€ljaande plaanidesse kuulub macOS toe valmimine, pĂ€rast mida hakatakse Moldi kohandama Windowsile.
Mold on kirjutatud C++ (C++20) keeles ja levitatakse AGPLv3 litsentsi alusel, mis on ĂŒhilduv GPLv3-ga, kuid mitte GPLv2-ga, kuna see nĂ”uab muutuste avalikustamist vĂ”rguteenuste arendamisel. Selline valik selgitab arenduse rahastamise soovi â autor on valmis mĂŒĂŒma koodi Ă”igusi teise litsentsi juurdeviimiseks, nĂ€iteks MIT litsentsi alla, vĂ”i pakkuma eraldi kommertslitsentsi neile, keda AGPL ei rahulda.
Mold toetab kĂ”iki GNU linkeri funktsioone ja eristub vĂ€ga kĂ”rge jĂ”udlusega â sidumine toimub kiirusel, mis on vaid kaks korda aeglasem kui failide kopeerimine utiliidiga cp. NĂ€iteks Chrome 96 (koodimaht 1.89 GB) koostamise korral, kui kasutada GNU gold, kulub tĂ€itmiseks 53 sekundit, LLVM lld puhul 11.7 sekundit ja Moldi puhul vaid 2.2 sekundit (26 korda kiiremini kui GNU gold). Clang 13 (3.18 GB) sidumise ajal nĂ”uab GNU gold 64 sekundi jagu, LLVM lld 5.8 sekundi jagu, Mold aga 2.9 sekundit. Firefox 89 (1.64 GB) sidumine GNU goldiga vĂ”tab 32.9 sekundit, LLVM lld-ga 6.8 sekundit ja Moldiga 1.4 sekundit.

Sidumise aja lĂŒhenemine vĂ”imaldab oluliselt parandada suurte projektide arendamise mugavust, vĂ€hendades ooteaega tĂ€itmise protsessis, kui debugeerimiseks ja muudatuste testimiseks valmistatakse ette kĂ€ivitatavaid faile. Moldi loomise tĂ”ukeks oli frustratsioon vajadusest oodata sidumise lĂ”petamist pĂ€rast iga koodimuudatust, samuti olemasolevate sidurite madal efektiivsus mitme tuuma sĂŒsteemides ning soov proovida tĂ€iesti erinevat sidumisarhitektuuri, ilma et oleks vaja tugineda liigsetele mudelitele, nagu inkrementaalne sidumine.
Moldi tĂ€idetud faili kĂ”rge jĂ”udlus saavutatakse kasutades kiiremaid algoritme, aktiivset operatsioonide paralleelset töötlemist saadaval CPU tuumade vahel ning tĂ”husamate andmestruktuuride rakendamisega. NĂ€iteks on Moldis rakendatud tehnika intensiivsete arvutuste samaaegseks tĂ€itmiseks failide kopeerimisega, objektifailide proaktiivne laadimine mĂ€llu, kiirete rippmehanismide kasutamine sĂŒmbolite lahendamisel, liikumistabelite skaneerimine eraldi lĂ”imes ning kordsete osade dedupikatsioon erinevates failides.
Allikas: opennet.ru
