Den första stabila utgåvan av länkaren Mold, som utvecklas av LLVM lld-utvecklaren

Rui Ueyama, skaparen av LLVM lld-länkaren och chibicc-kompilatorn, har presenterat den första stabila versionen av den nya högpresterande länkaren Mold, som märkbart överträffar hastigheten hos GNU-gold och LLVM lld. Projektet har bedömts vara redo för produktionsanvändning och kan användas som en snabbare och transparent ersättning för GNU-länkar på Linux-system. Bland planer för den nästa betydande utgåvan nämns att stöd för macOS ska vara klart, varefter arbetet med att anpassa Mold för Windows påbörjas.

Mold är skriven i C++ (C++20) och distribueras under AGPLv3-licensen, som är kompatibel med GPLv3 men inte med GPLv2, eftersom den kräver att förändringar görs offentliga vid utveckling av nätverkslösningar. Detta val förklaras av önskan att få finansiering för utvecklingen — skaparen är villig att sälja rättigheterna till koden för att omlicensiera den under en mer permissiv licens, såsom MIT, eller att erbjuda en separat kommersiell licens för dem som inte är nöjda med AGPL.

Mold stöder alla funktioner i GNU-länkaren och kännetecknas av extremt hög prestanda — länkningen utförs med en hastighet som endast är dubbelt så långsam som enkel kopiering av filer med kommandot cp. Till exempel, vid kompilering av Chrome 96 (med en kodstorlek på 1,89 GB) tar länkning av körbara filer med debuginfo på en 8-kärnig dator 53 sekunder med GNU-gold, 11,7 sekunder med LLVM lld, och endast 2,2 sekunder med Mold (26 gånger snabbare än GNU-gold). Vid länkning av Clang 13 (3,18 GB) tar GNU-gold 64 sekunder, LLVM lld 5,8 sekunder, och Mold 2,9 sekunder. Förr länkning av Firefox 89 (1,64 GB) krävs 32,9 sekunder med GNU-gold, 6,8 sekunder med LLVM lld, och 1,4 sekunder med Mold.

Den första stabila utgåvan av länkaren Mold, som utvecklas av LLVM lld-utvecklaren

Minskningen av länkningstiden möjliggör en avsevärd ökning av bekvämligheten vid utveckling av stora projekt genom att förkorta väntan i processen för skapande av körbara filer vid felsökning och testning av förändringar. Motivationen bakom skapandet av Mold var irritation över att behöva vänta på att länkningen skulle bli klar efter varje ändring i koden, samt den låga effektiviteten hos befintliga länkar på flerkärniga system och en vilja att pröva en helt annan länkarkitektur utan att förlita sig på överdrivet komplicerade modeller, såsom inkrementell länkning.

Högpresterande länkning av körbara filer från ett stort antal objektfiler som förberetts av kompilatorn i Mold uppnås genom användning av snabbare algoritmer, aktiv parallellisering av operationer mellan tillgängliga CPU-kärnor och tillämpning av mer effektiva datatyper. Till exempel har Mold implementerat tekniker för att utföra beräkningsintensiva uppgifter samtidigt som filer kopieras, förladdning av objektfiler i minnet, användning av snabba hash-tabeller för symbolupplösning, skanning av flyttabeller i en separat tråd och deduplicering av upprepade sektioner i olika filer.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster