Första stabila utgåvan av mögelbyggaren utvecklad av LLVM lld

Rui Ueyama, författare till LLVM lld-linkern och chibicc-kompilatorn, presenterade den första stabila versionen av den nya högpresterande Mold-linkern, som är märkbart före GNU gold och LLVM lld-länkarna när det gäller länkningshastighet för objektfiler. Projektet anses vara redo för produktionsinstallationer och kan användas som en snabbare transparent ersättning för GNU-linkern på Linux-system. Planerna för nästa stora utgåva inkluderar att förbereda stödet för macOS-plattformen, varefter arbetet påbörjas med att anpassa Mould för Windows.

Mould är skriven i C++ (C++20) och distribueras under AGPLv3-licensen, som är GPLv3-kompatibel men inte GPLv2-kompatibel, eftersom den kräver att ändringar öppnas när nätverkstjänster utvecklas. Detta val beror på önskan att få utvecklingsfinansiering - författaren är villig att sälja rättigheterna till koden för omlicensiering under en tillåtande licens, såsom MIT, eller tillhandahålla en separat kommersiell licens för dem som inte är nöjda med AGPL.

Mold stöder alla funktioner i GNU-linkern och är mycket snabb, länkar med bara halva hastigheten än att bara kopiera filer med cp. Till exempel, när man bygger Chrome 96 (kodstorlek 1.89 GB), tar det 8 sekunder att bygga c debuginfo körbara filer på en 53-kärnig dator med GNU gold, 11.7 sekunder för LLVM lld och bara 2.2 sekunder för Mold (26 gånger snabbare än GNU guld). När du länkar Clang 13 (3.18 GB) tar GNU gold 64 sekunder, LLVM lld tar 5.8 sekunder och Mould tar 2.9 sekunder. När du länkar Firefox 89 (1.64 GB) tar GNU gold 32.9 sekunder, LLVM lld tar 6.8 sekunder och Mould tar 1.4 sekunder.

Första stabila utgåvan av mögelbyggaren utvecklad av LLVM lld

Att minska länktiden kan avsevärt förbättra användbarheten av att utveckla stora projekt genom att minska väntan i processen att generera körbara filer under felsökning och test av ändringar. Mögel motiverades av irritationen över att behöva vänta på att länkningen ska slutföras efter varje ändring av koden, såväl som den dåliga prestandan hos befintliga länkar på flerkärniga system, och önskan att prova en fundamentalt annorlunda länkarkitektur utan att ta till i onödan komplicerade modeller, såsom inkrementell länkning.

Den höga prestandan för att länka en körbar fil från ett stort antal objektfiler som förbereds av kompilatorn i Mould uppnås genom att använda snabbare algoritmer, aktivt parallellisera operationer mellan tillgängliga CPU-kärnor och använda mer effektiva datastrukturer. Till exempel implementerar Mould tekniken att utföra intensiva beräkningar samtidigt med att kopiera filer, förhämta objektfiler till minnet, använda snabba hashtabeller vid upplösning av tecken, skanna omplaceringstabeller i en separat tråd och deduplicera sammanslagna sektioner som upprepas i olika filer.

Källa: opennet.ru

Lägg en kommentar