Prvo stabilno izdanje Mold buildera koji je razvio LLVM lld

Rui Ueyama, autor LLVM lld povezivača i chibicc prevoditelja, predstavio je prvo stabilno izdanje novog Mold povezivača visokih performansi, koji je osjetno brži od GNU gold i LLVM lld povezivača u brzini povezivanja objektnih datoteka. Projekt se smatra spremnim za proizvodnu implementaciju i može se koristiti kao brža, transparentna zamjena za GNU povezivač na Linux sustavima. Planovi za sljedeće veliko izdanje uključuju kompletiranje podrške za macOS platformu, nakon čega će započeti rad na prilagodbi Molda za Windows.

Mold je napisan u C++ (C++20) i licenciran je pod AGPLv3, koji je kompatibilan s GPLv3, ali nije kompatibilan s GPLv2, budući da zahtijeva otvorene promjene pri razvoju mrežnih usluga. Ovaj izbor objašnjava se željom za dobivanjem sredstava za razvoj - autor je spreman prodati prava na kod za ponovno licenciranje pod dopuštenom licencom, kao što je MIT, ili pružiti zasebnu komercijalnu licencu za one koji nisu zadovoljni AGPL-om.

Mold podržava sve značajke GNU povezivača i ima vrlo visoke performanse - povezivanje se izvodi brzinom koja je samo upola manja od jednostavnog kopiranja datoteka pomoću uslužnog programa cp. Na primjer, kada se gradi Chrome 96 (veličina koda 1.89 GB), potrebno je 8 sekunde za povezivanje izvršnih datoteka s debuginfo na računalu s 53 jezgri koristeći GNU gold, LLVM lld - 11.7 sekundi, a Mold samo 2.2 sekunde (26 puta brže od GNU zlato). Za povezivanje Clang 13 (3.18 GB) potrebno je 64 sekunde u GNU goldu, 5.8 sekundi u LLVM lld-u i 2.9 sekundi u Moldu. Za izradu Firefoxa 89 (1.64 GB) potrebno je 32.9 sekundi u GNU goldu, 6.8 sekundi u LLVM lld-u i 1.4 sekunde u Moldu.

Prvo stabilno izdanje Mold buildera koji je razvio LLVM lld

Smanjenje vremena izgradnje može značajno poboljšati pogodnost razvoja velikih projekata smanjenjem čekanja u procesu generiranja izvršnih datoteka prilikom uklanjanja pogrešaka i testiranja promjena. Motivacija za stvaranje Molda bila je frustracija čekanja da se povezivanje završi nakon svake promjene koda, loša izvedba postojećih povezivača na višejezgrenim sustavima i želja da se isproba fundamentalno drugačija arhitektura povezivanja bez pribjegavanja prekompliciranim modelima kao što su kao inkrementalno povezivanje.

Visoke performanse povezivanja izvršne datoteke iz velikog broja objektnih datoteka koje je pripremio kompilator u Moldu postižu se korištenjem bržih algoritama, aktivnom paralelizacijom operacija između dostupnih CPU jezgri i korištenjem učinkovitijih struktura podataka. Na primjer, Mold implementira tehnike za izvođenje intenzivnih izračuna tijekom kopiranja datoteka, prethodno učitavanje objektnih datoteka u memoriju, korištenje brzih hash tablica za razlučivost znakova, skeniranje tablica premještanja u zasebnoj niti i dedupliciranje spojenih odjeljaka koji se ponavljaju u različitim datotekama.

Izvor: opennet.ru

Dodajte komentar