Mold, moderns Linker, kas ir pārāks par GNU zeltu un LLVM lld

Rui Ueyama, LLVM lld komponista un Chibicc kompilatora autors, tika atklāts pirms viņa jaunā darba mazos augļus un prezentēja pirmā stabilā jaunā "high-linker the Mold" versija, kas izceļas ar to, ka ir tālu priekšā GNU zelta un LLVM lld objektu failu saišu saistīšanas ātrumam.

Šobrīd projekts uzskatīts par gatavu ražošanas izvietošanai un to var izmantot kā ātrāku caurspīdīgu GNU linkera aizstājēju Linux sistēmās.

Par pelējumu

Pelējums atbalsta visas GNU linkera funkcijas un tam ir ļoti augsta veiktspēja, jo tajā izveidotās saites ir tikai divas reizes ātrākas nekā failu kopēšana ar cp utilītu.

Piemēram, kompilējot Chrome 96 (koda lielums 1,89 GB), izpildāmo failu saistīšana ar atkļūdošanas info 8 kodolu datorā aizņem 53 sekundes ar GNU Gold, LLVM lld aizņem 11,7 sekundes un Mold tikai 2,2 sekundes (26 reizes ātrāk nekā GNU gold) .

Turklāt, saistot Clang 13 (3,18 GB), GNU gold aizņem 64 sekundes, LLVM lld aizņem 5,8 sekundes un Mould 2,9 sekundes un, saistot Firefox 89 (1,64 GB), GNU gold aizņem 32,9, 6,8 sekundes, LLVM lld aizņem 1,4 sekundes. un pelējums aizņem XNUMX sekundes.

mold 1.0 ir pirmā stabilā un ražošanai gatava ātrgaitas savienotāja versija. Sistēmās, kuru pamatā ir Linux, tai vajadzētu "tikai darboties" kā ātrākam tiešam noklusējuma GNU saistītāja aizstājējam lielākajai daļai lietotāju programmu. Ja veidojat lielu izpildāmo failu, kura saistīšana prasa ilgu laiku, ir vērts pārbaudīt veidni, lai noskaidrotu, vai tā var saīsināt kompilēšanas laiku. Veidni ir viegli uzbūvēt un lietot.

Tādā veidā kompilācijas laika samazināšana būtiski uzlabo lielu projektu izstrādes ērtības samazinot gaidīšanas laiku izpildāmā ģenerēšanas procesā, veicot atkļūdošanas un testēšanas izmaiņas.

Motivācija Mold izveidei bija apgrūtinājums, ka pēc katras koda maiņas bija jāgaida, līdz tiks pabeigta saite, kā arī esošo linkeru zemā efektivitāte daudzkodolu sistēmās un vēlme pārbaudīt principiāli atšķirīgu saišu arhitektūru, neizmantojot nevajadzīgi sarežģītus modeļus, piemēram, inkrementālo saistīšanu.

Augsta veiktspēja, saistot izpildāmo failu no liela skaita kompilatora sagatavotu objektu failu Mold, tiek panākta, izmantojot ātrākus algoritmus, aktīvu darbību paralēlizēšanu starp pieejamajiem CPU kodoliem un efektīvāku datu struktūru izmantošanu.

Piemēram, Mold ievieš paņēmienu, lai vienlaikus ar failu kopēšanu veiktu intensīvu skaitļošanas darbu, proaktīvi ielādētu objektu failus atmiņā, izmantojot ātrās jaukšanas tabulas, lai atrisinātu rakstzīmes, skenētu pārvietošanas tabulas atsevišķā secībā un atdalītu sadaļu dublēšanu, kas atkārtojas dažādos failos.

Visbeidzot, jāatzīmē, ka Pelējums ir rakstīts C ++ 20 un tiek izplatīts saskaņā ar AGPLv3 licenci, kas ir saderīgs ar GPLv3, bet nav saderīgs ar GPLv2, jo tas prasa atvērtības izmaiņas, izstrādājot tīkla pakalpojumus. Šāda izvēle tiek skaidrota ar vēlmi saņemt līdzekļus attīstībai: autors ir gatavs pārdot tiesības uz kodu, lai atkārtoti licencētu saskaņā ar atļauju licenci, piemēram, MIT, vai arī nodrošināt atsevišķu komerclicenci tiem, kuri nav apmierināti ar AGPL.

Attiecībā nākotnes plāni kas viņiem ir, tiek minēts, ka šobrīd strādā pie Mold for MacOS  (lai gan šis versijas 1.0 atbalsts jau ir pievienots, bet joprojām tiek uzskatīts par alfa), un, kad tas būs pabeigts, atbalsts tiks izlaists Mold versijā 2.0 un pēc tam tiek minēts, ka tas darbosies Mold for Windows un tiks ieviests versijā 3.0.

Si vēlaties uzzināt vairāk par šo projektu vai ja vēlaties to kompilēt, lai varētu to izmantot savā sistēmā, varat pārbaudīt informāciju un/vai kompilācijas instrukcijas Šajā saitē.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.