Die erste stabile Version des Linkers Mold, entwickelt von LLVM lld.

Rui Ueyama, forfatteren af LLVM lld linker og chibicc compileren, har præsenteret den første stabile version af den nye højtydende linker Mold, som er bemærkelsesværdigt hurtigere end GNU gold og LLVM lld, når det kommer til binding af objektfiler. Projektet er anerkendt som klar til produktionsimplementering og kan anvendes som et hurtigere gennemsigtigt alternativ til GNU linker på Linux-systemer. Blandt de kommende betydelige opdateringer er støtte til macOS, hvorefter arbejdet med at tilpasse Mold til Windows vil begynde.

Mold er skrevet i C++ (C++20) og distribueres under AGPLv3 licensen, som er kompatibel med GPLv3, men ikke med GPLv2, da den kræver offentliggørelse af ændringer ved udvikling af netværkstjenester. Denne beslutning forklares med ønsket om at få finansiering til udviklingen — forfatteren er villig til at sælge rettighederne til koden for at få licensen omregistreret til en mere tilladende licens, såsom MIT, eller tilbyde en separat kommerciel licens til dem, der ikke ønsker at arbejde under AGPL.

Mold understøtter alle funktioner fra GNU linker og udmærker sig ved meget høj ydeevne — bindingen udføres med en hastighed, der kun er to gange langsommere end simpel filkopiering med cp værktøjet. For eksempel, ved bygning af Chrome 96 (kildestørrelse 1,89 GB), tager det 53 sekunder at binde de eksekverbare filer med debuginfo på en 8-kerne computer ved brug af GNU gold, 11,7 sekunder med LLVM lld, og kun 2,2 sekunder med Mold (26 gange hurtigere end GNU gold). Ved binding af Clang 13 (3,18 GB) kræves 64 sekunder med GNU gold, 5,8 sekunder med LLVM lld, mens Mold kun tager 2,9 sekunder. Ved binding af Firefox 89 (1,64 GB) behøves 32,9 sekunder med GNU gold, 6,8 sekunder med LLVM lld, og 1,4 sekunder med Mold.

Die erste stabile Version des Linkers Mold, entwickelt von LLVM lld.

Reduceret tid til binding muliggør en betydelig forbedring af udviklingskomforten for store projekter ved at forkorte ventetiden under oprettelsen af eksekverbare filer under debugging og test af ændringer. Motivationen bag oprettelsen af Mold var frustration over at skulle vente på, at bindingen blev færdig efter hver ændring af koden, samt den lave effektivitet af eksisterende linkere på multikernede systemer, og ønsket om at afprøve en grundlæggende anderledes arkitektur for binding, uden at ty til unødigt komplicerede modeller som inkrementel binding.

Den høje ydeevne ved at sammensætte eksekverbare filer fra et stort antal forberedte objekter genereret af compileren i Mold opnås ved at bruge hurtigere algoritmer, aktivt parallelisere operationer mellem de tilgængelige CPU-kerner og anvende mere effektive datastrukturer. For eksempel implementerer Mold en teknik til at udføre beregningstunge operationer samtidigt med filkopiering, præload af objekter i hukommelsen, brug af hurtige hashtabeller til symbolopløsning, scanning af reloceringstabeller i en separat tråd, og deduplikation af gentagne sektioner fra forskellige filer.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster