Lëshimi i parë stabil i lidhësit Mold, i zhvilluar nga zhvilluesi i LLVM lld

Rui Ueyama, autor i linker-it LLVM lld dhe kompajlerit chibicc, prezantoi versionin e parë stabil të linker-it të ri me performancë të lartë Mold, i cili është dukshëm më i shpejtë se linker-at GNU gold dhe LLVM lld në lidhjen e skedarëve objekt. Projekti është njohur si i gatshëm për zbatime në punë dhe mund të përdoret si një zëvendësim më të shpejtë të lidhësit GNU në sistemet Linux. Ndër planet për versionin e ardhshëm të rëndësishëm është përgatitja për mbështetje të platformës macOS, pasi do të fillojë puna për përshtatjen e Mold për Windows.

Mold është shkruar në gjuhën C++ (C++20) dhe shpërndahet nën licencën AGPLv3, e cila është e përputhshme me GPLv3, por jo me GPLv2, pasi kërkon që ndryshimet të publikohen gjatë zhvillimit të shërbimeve në rrjet. Ky zgjedhje shpjegohet nga dëshira për të siguruar financim për zhvillimin - autori është i gatshëm të shesë të drejtat e kodit për ripërkufizim nën një licencë të lehtë, si MIT, ose të ofrojë një licencë komerciale të veçantë për ata që nuk janë të kënaqur me AGPL.

Mold mbështet të gjitha funksionalitetet e linker-it GNU dhe dallohet për performancën e tij të jashtëzakonshme - lidhja kryhet me shpejtësi, vetëm dy herë më ngadalë se kopjimi i thjeshtë i skedarëve me utilitarin cp. Për shembull, gjatë ndërtimit të Chrome 96 (me madhësinë e kodit 1.89 GB) për lidhjen e skedarëve ekzekutivë me debuginfo në një kompjuter me 8 bërthama duke përdorur GNU gold, kërkohen 53 sekonda, nga LLVM lld - 11.7 sekonda, dhe Mold - vetëm 2.2 sekonda (26 herë më shpejt se GNU gold). Gjatë lidhjes së Clang 13 (3.18 GB) në GNU gold kërkohen 64 sekonda, në LLVM lld - 5.8 sekonda, dhe në Mold - 2.9 sekonda. Gjatë lidhjes së Firefox 89 (1.64 GB) në GNU gold, nevojiten 32.9 sekonda, në LLVM lld - 6.8 sekonda, dhe në Mold - 1.4 sekonda.

Lëshimi i parë stabil i lidhësit Mold, i zhvilluar nga zhvilluesi i LLVM lld

Shkurtesa e kohës së lidhjes lejon një rritje të konsiderueshme të lehtësisë së zhvillimit të projekteve të mëdha duke reduktuar pritjen gjatë krijimit të skedarëve ekzekutivë gjatë debugimit dhe testimit të ndryshimeve. Motivi për krijimin e Mold ishte irritimi nga nevoja për të pritur përfundimin e lidhjes pas çdo ndryshimi në kod, si dhe efektiviteti i ulët i punës së linker-a ekzistues në sistemet me shumë bërthama dhe dëshira për të provuar një arkitekturë të re të lidhjes, pa u angazhuar me modelet tepër të komplikuara, si lidhja inkrementale.

Efiqentësia e lartë e përbërjes së skedave ekzekutivë nga një numër i madh i skedave objekt të përgatitur nga kompajleri në Mold arrin të realizohet falë përdorimit të algoritmeve më të shpejtë, ndarjes aktive të operacioneve midis bërthamave të disponueshme të CPU-së dhe aplikimit të strukturave më efikase të të dhënave. Për shembull, në Mold është realizuar teknika e ekzekutimit të llogaritjeve intensive në mënyrë paralele me kopjimin e skedave, ngarkimi i paraprogramuar i skedave objekt në memorje, përdorimi i tabelave të shpejta për heshimin gjatë zgjidhjes së simboleve, skanimi i tabelave të lëvizjeve në një rrjedhë të veçantë dhe deduplifikimi i seksioneve të përbashkëta që përsëriten në skeda të ndryshme.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster