Første stabile udgivelse af Mold Builder udviklet af LLVM lld

Rui Ueyama, forfatter til LLVM lld-linkeren og chibicc-kompileren, præsenterede den første stabile udgivelse af den nye højtydende Mold-linker, som er mærkbart foran GNU gold- og LLVM lld-linkerne med hensyn til objektfilforbindelseshastighed. Projektet anses for klar til produktionsinstallationer og kan bruges som en hurtigere gennemsigtig erstatning for GNU-linkeren på Linux-systemer. Planerne for den næste store udgivelse inkluderer at bringe understøttelse af macOS-platformen klar, hvorefter arbejdet påbegyndes med at tilpasse Mold til Windows.

Mold er skrevet i C++ (C++20) og distribueret under AGPLv3-licensen, som er GPLv3-kompatibel, men ikke GPLv2-kompatibel, da den kræver, at ændringer åbnes, når der udvikles netværkstjenester. Dette valg skyldes ønsket om at opnå udviklingsfinansiering - forfatteren er villig til at sælge rettighederne til koden til genlicensering under en tilladelig licens, såsom MIT, eller give en separat kommerciel licens til dem, der ikke er tilfredse med AGPL.

Mold understøtter alle funktionerne i GNU-linkeren og er meget hurtig, idet den kun linker med halvdelen af ​​hastigheden af ​​blot at kopiere filer med cp. For eksempel, når man bygger Chrome 96 (kodestørrelse 1.89 GB), tager det 8 sekunder at bygge c debuginfo eksekverbare filer på en 53-core computer ved hjælp af GNU gold, 11.7 sekunder for LLVM lld og kun 2.2 sekunder for Mold (26 gange hurtigere end GNU guld). Når du forbinder Clang 13 (3.18 GB), tager GNU gold 64 sekunder, LLVM lld tager 5.8 sekunder, og Mold tager 2.9 sekunder. Når du forbinder Firefox 89 (1.64 GB), tager GNU gold 32.9 sekunder, LLVM lld tager 6.8 sekunder, og Mold tager 1.4 sekunder.

Første stabile udgivelse af Mold Builder udviklet af LLVM lld

Reduktion af linktiden kan i høj grad forbedre anvendeligheden af ​​at udvikle store projekter ved at reducere ventetiden i processen med at generere eksekverbare filer under fejlfinding og test af ændringer. Skimmelsvamp var motiveret af irritationen over at skulle vente på, at linket blev fuldført efter hver ændring af koden, såvel som den dårlige ydeevne af eksisterende linkere på multi-core-systemer og ønsket om at prøve en fundamentalt anderledes linking-arkitektur uden at ty til unødigt komplicerede modeller, såsom inkrementel linking.

Den høje ydeevne ved at linke en eksekverbar fil fra et stort antal objektfiler udarbejdet af compileren i Mold opnås ved at bruge hurtigere algoritmer, aktivt parallelisere operationer mellem tilgængelige CPU-kerner og bruge mere effektive datastrukturer. For eksempel implementerer Mold teknikken til at udføre intensive beregninger samtidigt med kopiering af filer, forhåndshentning af objektfiler i hukommelsen, brug af hurtige hashtabeller ved tegnopløsning, scanning af flytningstabeller i en separat tråd og deduplikering af flettede sektioner, der gentages i forskellige filer.

Kilde: opennet.ru

Tilføj en kommentar