Frigjøring av Mold 3.0-linker, utviklet av LLVM lld

Mold 3.0-lenkeren er utgitt og kan brukes som en raskere og mer transparent erstatning for GNU-lenkeren. Linux-systemer. Prosjektet utvikles av Rui Ueyama, forfatteren av LLVM lld-lenkeren. Molds viktigste funksjon er den ekstremt høye koblingshastigheten, som overgår GNU Gold- og LLVM lld-lenkerne betydelig (kobling i Mold er bare halvparten så rask som å bare kopiere filer med cp-verktøyet). Koden er skrevet i Rust og distribuert under MIT-lisensen.

Å redusere koblingstiden forbedrer brukervennligheten til store prosjekter betydelig ved å redusere ventetiden under generering av kjørbare filer under feilsøking og testing av endringer. Motivasjonen for å lage Mold stammet fra frustrasjonen over å måtte vente på at koblingen skulle fullføres etter hver kodeendring, den dårlige ytelsen til eksisterende linkere på flerkjernesystemer og ønsket om å prøve en fundamentalt annerledes koblingsarkitektur uten å ty til altfor komplekse modeller som inkrementell kobling.

Mold oppnår høy ytelse i kompilering av kjørbare filer fra et stort antall kompilatorforberedte objektfiler ved å bruke raskere algoritmer, aktivt parallellisere operasjoner på tvers av tilgjengelige CPU-kjerner og benytte mer effektive datastrukturer. For eksempel implementerer Mold en teknikk for å utføre intensive beregninger samtidig med filkopiering, forhåndsinnlasting av objektfiler i minnet, bruk av raske hash-tabeller for symboloppløsning, skanning av relokaliseringstabeller i en separat tråd og deduplisering av dupliserte sammenslåtte seksjoner på tvers av forskjellige filer.

Mold 3.0-grenen er kjent for å ha omskrevet kodebasen fra C++ (C++20) til Rust. Mold 3.0 kan brukes som en transparent erstatning for Mold 2.42.1, den siste C++-utgivelsen, og støtter alle tidligere tilgjengelige alternativer og målarkitekturer. Overgangen til Rust har gjort det mulig å beskytte prosjektet mot potensielle problemer ved håndtering av ødelagte objektfiler – i situasjoner der C++-versjonen krasjet på grunn av tilgang utenfor grensene, stopper Rust-implementeringen ved grensesjekkfasen. Ytelsen til Rust-implementeringen er på nivå med C++-versjonen.

I tillegg til å migrere til Rust, var et sentralt mål i utviklingen av 3.0-grenen å forbedre kompatibiliteten med GNU ld og forberede prosjektet for bruk som standardlenker i distribusjoner. LinuxByggesystemet er erstattet med Cargo, og testsystemet er erstattet med Cargo Test, som erstatter ctest. oneTBB-biblioteket er fjernet fra avhengigheter.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster