Lëshimi i parë i qëndrueshëm i lidhësit Mold, i zhvilluar nga LLVM lld

Rui Ueyama, autor i lidhësit LLVM lld dhe përpiluesit chibicc, prezantoi lëshimin e parë të qëndrueshëm të lidhësit të ri Mold me performancë të lartë, i cili është dukshëm më i shpejtë se lidhësit GNU gold dhe LLVM lld në shpejtësinë e lidhjes së skedarëve të objekteve. Projekti konsiderohet i gatshëm për zbatimin e prodhimit dhe mund të përdoret si një zëvendësim më i shpejtë dhe transparent për lidhësin GNU në sistemet Linux. Planet për lëshimin e ardhshëm madhor përfshijnë plotësimin e mbështetjes për platformën macOS, pas së cilës do të fillojë puna për përshtatjen e Mold për Windows.

Mould është i shkruar në C++ (C++20) dhe është i licencuar sipas AGPLv3, i cili është i pajtueshëm me GPLv3, por jo i pajtueshëm me GPLv2, pasi kërkon ndryshime të hapura gjatë zhvillimit të shërbimeve të rrjetit. Kjo zgjedhje shpjegohet me dëshirën për të marrë fonde zhvillimi - autori është i gatshëm të shesë të drejtat e kodit për rilicencim sipas një licence lejuese, siç është MIT, ose të sigurojë një licencë të veçantë tregtare për ata që nuk janë të kënaqur me AGPL.

Mold mbështet të gjitha tiparet e lidhësit GNU dhe ka performancë shumë të lartë - lidhja kryhet me një shpejtësi vetëm sa gjysma e kopjimit të skedarëve me mjetin cp. Për shembull, kur ndërtohet Chrome 96 (madhësia e kodit 1.89 GB), duhen 8 sekonda për të lidhur skedarët e ekzekutueshëm me informacionin e korrigjimit në një kompjuter me 53 bërthama duke përdorur GNU gold, LLVM lld - 11.7 sekonda dhe Mold vetëm 2.2 sekonda (26 herë më shpejt se ari GNU). Kur lidh Clang 13 (3.18 GB), duhen 64 sekonda në GNU gold, 5.8 sekonda në LLVM lld dhe 2.9 sekonda në Mold. Kur ndërtoni Firefox 89 (1.64 GB), nevojiten 32.9 sekonda në GNU gold, 6.8 sekonda në LLVM lld dhe 1.4 sekonda në Mold.

Lëshimi i parë i qëndrueshëm i lidhësit Mold, i zhvilluar nga LLVM lld

Reduktimi i kohës së ndërtimit mund të përmirësojë ndjeshëm lehtësinë e zhvillimit të projekteve të mëdha duke reduktuar pritjen në procesin e gjenerimit të skedarëve të ekzekutueshëm gjatë korrigjimit dhe testimit të ndryshimeve. Motivimi për krijimin e Mold ishte zhgënjimi për të pritur që lidhja të përfundojë pas çdo ndryshimi të kodit, performanca e dobët e lidhësve ekzistues në sistemet me shumë bërthama dhe dëshira për të provuar një arkitekturë lidhjeje thelbësisht të ndryshme pa përdorur modele tepër të komplikuara si p.sh. si lidhje në rritje.

Performanca e lartë e lidhjes së një skedari të ekzekutueshëm nga një numër i madh skedarësh objektesh të përgatitur nga përpiluesi në Mold arrihet duke përdorur algoritme më të shpejta, paralelizimin aktiv të operacioneve midis bërthamave të disponueshme të CPU dhe përdorimin e strukturave më efikase të të dhënave. Për shembull, Mold zbaton teknika për kryerjen e llogaritjeve intensive gjatë kopjimit të skedarëve, ngarkimin paraprak të skedarëve të objekteve në memorie, përdorimin e tabelave të shpejta të hash-it për zgjidhjen e karaktereve, skanimin e tabelave të zhvendosjes në një thread të veçantë dhe heqjen e dyfishimit të seksioneve të bashkuara që përsëriten nëpër skedarë të ndryshëm.

Burimi: opennet.ru

Shto një koment