Prvo stabilno izdanje alata za izgradnju kalupa koje je razvio LLVM lld

Rui Ueyama, autor LLVM lld linkera i chibicc kompajlera, predstavio je prvo stabilno izdanje novog Mold linkera visokih performansi, koji je u brzini povezivanja objektnih datoteka primjetno brži od GNU gold i LLVM lld linkera. Smatra se da je projekat spreman za produkciju i može se koristiti kao brža, transparentna zamjena za GNU linker na Linux sistemima. Planovi za sljedeće veliko izdanje uključuju kompletiranje podrške za macOS platformu, nakon čega će početi rad na prilagođavanju Mold-a za Windows.

Mold je napisan u C++ (C++20) i licenciran je pod AGPLv3, koji je kompatibilan sa GPLv3, ali nije kompatibilan sa GPLv2, jer zahtijeva otvorene promjene prilikom razvoja mrežnih usluga. Ovaj izbor objašnjava se željom za dobijanjem sredstava za razvoj - autor je spreman da proda prava na kod za ponovno licenciranje pod dozvoljenom licencom, kao što je MIT, ili da obezbedi posebnu komercijalnu licencu za one koji nisu zadovoljni AGPL-om.

Mold podržava sve karakteristike GNU linkera i ima vrlo visoke performanse - povezivanje se izvodi brzinom koja je samo upola manja od jednostavnog kopiranja datoteka pomoću cp uslužnog programa. Na primjer, kada se pravi Chrome 96 (veličina koda 1.89 GB), potrebno je 8 sekunde da se izvršne datoteke povežu sa informacijama za otklanjanje grešaka na 53-jezgrenom računaru koristeći GNU gold, LLVM lld - 11.7 sekundi i Mold samo 2.2 sekunde (26 puta brže od GNU zlato) . Kada se poveže Clang 13 (3.18 GB), potrebno je 64 sekunde u GNU zlatu, 5.8 sekundi u LLVM lld i 2.9 sekundi u Moldu. Kada se pravi Firefox 89 (1.64 GB), potrebno je 32.9 sekundi u GNU goldu, 6.8 sekundi u LLVM lld i 1.4 sekunde u Moldu.

Prvo stabilno izdanje alata za izgradnju kalupa koje 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 otklanjanja grešaka i testiranja promjena. Motivacija za kreiranje Mold-a bila je frustracija zbog čekanja da se povezivanje završi nakon svake promjene koda, loše performanse postojećih povezivača na višejezgrenim sistemima i želja da se isproba fundamentalno drugačija arhitektura povezivanja bez pribjegavanja pretjerano komplikovanim modelima kao što su kao inkrementalno povezivanje.

Visoke performanse povezivanja izvršne datoteke sa velikim brojem objekata pripremljenih kompajlerom u Mold-u postižu se upotrebom bržih algoritama, aktivnom paralelizacijom operacija između dostupnih CPU jezgara i upotrebom efikasnijih struktura podataka. Na primjer, Mold implementira tehnike za izvođenje intenzivnih proračuna prilikom kopiranja datoteka, prethodno učitavanje objektnih datoteka u memoriju, korištenje brzih hash tablica za razlučivanje znakova, skeniranje tablica premještanja u zasebnoj niti i uklanjanje duplikata spojenih dijelova koji se ponavljaju u različitim datotekama.

izvor: opennet.ru

Dodajte komentar