Release van de linker Mold 3.0, ontwikkeld door de LLVM lld ontwikkelaar.

De release van de Mold-linker 3.0 is uitgebracht, die kan fungeren als een snellere transparante vervanging voor de GNU-linker op Linux-systemen. Het project wordt ontwikkeld door Rui Ueyama, de auteur van de LLVM lld-linker. De belangrijkste eigenschap van Mold is de zeer hoge snelheid bij het linken van objectbestanden, die duidelijk sneller is dan de GNU gold en LLVM lld-linkers (de linking in Mold gebeurt met een snelheid die slechts twee keer langzamer is dan een simpele bestandskopie met de cp-tool). De code is geschreven in Rust en is beschikbaar onder de MIT-licentie.

De verkorte linking-tijd verhoogt aanzienlijk het gebruiksgemak voor de ontwikkeling van grote projecten door de wachttijd bij het maken van uitvoerbare bestanden tijdens het debuggen en testen van wijzigingen te verkorten. De motivatie om Mold te creƫren was de frustratie over het moeten wachten op de voltooiing van de linking na elke wijziging in de code, evenals de lage efficiƫntie van de bestaande linkers op multicore systemen en de wens om een fundamenteel andere linker-architectuur uit te proberen zonder gebruik te maken van overmatig gecompliceerde modellen, zoals incrementele linking.

De hoge prestaties van de linker voor uitvoerbare bestanden die uit een groot aantal door de compiler voorbereide objectbestanden in Mold worden gegenereerd, worden bereikt door gebruik te maken van snellere algoritmen, actieve parallelisatie van bewerkingen tussen beschikbare CPU-kernen en het toepassen van efficiëntere datastructuren. Bijvoorbeeld, in Mold is een techniek geïmplementeerd die intensieve berekeningen gelijktijdig uitvoert met het kopiëren van bestanden, anticiperende laadtijd van objectbestanden in het geheugen, het gebruik van snelle hashtabellen bij het oplossen van symbolen, het scannen van relocatietabellen in een aparte thread en deduplicatie van herhaalde secties in verschillende bestanden.

De Mold 3.0 tak is opmerkelijk vanwege de herschrijving van de codebasis van C++ (C++20) naar de programmeertaal Rust. Mold 3.0 kan worden gebruikt als een transparante vervanger voor Mold 2.42.1, de laatste release in C++, en ondersteunt alle eerder beschikbare opties en doelarchitecturen. De overstap naar Rust heeft het project beveiligd tegen potentiƫle problemen bij het verwerken van beschadigde objectbestanden - in situaties waar de C++-versie abrupt eindigde door toegang tot geheugengebieden buiten de buffer, stopt de Rust-variant de werking tijdens de grenscontrole. De prestaties van de implementatie in Rust zijn gelijk aan die van de C++-versie.

Naast de migratie naar Rust was een belangrijk doel bij de ontwikkeling van tak 3.0 het verhogen van de compatibiliteit met GNU ld en de voorbereiding van het project voor mogelijk gebruik als standaard linkprogramma in Linux-distributies. Het bouwsysteem is vervangen van CMake naar Cargo, en het testsysteem van ctest naar cargo test. De afhankelijkheid van de oneTBB-bibliotheek is verwijderd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster