Release of Mold 1.1 linker, vyvinutý LLVM lld

Bolo zverejnené vydanie linkera Mold, ktoré možno použiť ako rýchlejšiu a transparentnú náhradu za linker GNU na systémoch Linux. Projekt je vyvinutý autorom linkera LLVM lld. Kľúčovou vlastnosťou Mold je veľmi vysoká rýchlosť spájania objektových súborov, výrazne pred GNU gold a LLVM lld linkermi (linkovanie v Molde sa vykonáva len polovičnou rýchlosťou ako jednoduché kopírovanie súborov pomocou nástroja cp). Kód je napísaný v C++ (C++20) a distribuovaný pod licenciou AGPLv3.

V novej verzii:

  • Pridaná podpora optimalizácie vo fáze prepojenia (LTO, Link Time Optimization). Optimalizácie LTO sa líšia tým, že zohľadňujú stav všetkých súborov zapojených do procesu zostavovania, zatiaľ čo tradičné režimy optimalizácie optimalizujú každý súbor samostatne a nezohľadňujú podmienky pre volanie funkcií definovaných v iných súboroch. Zatiaľ čo predtým, keď boli nájdené súbory s prechodným kódom (IR) GCC alebo LLVM, boli volané zodpovedajúce linkery ld.bfd alebo ld.lld, teraz Mold spracováva IR súbory nezávisle a používa Linker Plugin API, ktoré sa tiež používa v GNU ld a GNU. zlaté linkery. Keď je povolený, LTO je len o niečo rýchlejší ako iné linkery, pretože väčšinu času strávi optimalizáciou kódu namiesto prepájania.
  • Pridaná podpora pre architektúru RISC-V (RV64) na hostiteľskej a cieľovej platforme.
  • Pridaná možnosť „--emit-relocs“ na umožnenie kopírovania sekcií premiestnenia zo vstupných súborov do výstupných súborov na následnú aplikáciu optimalizácií vo fáze po prepojení.
  • Pridaná možnosť „--shuffle-sections“ na náhodné poradie sekcií pred fixáciou ich adries vo virtuálnom adresnom priestore.
  • Pridané možnosti „--print-dependencies“ a „--print-dependencies=full“ na výstup informácií vo formáte CSV o závislostiach medzi vstupnými súbormi, ktoré možno napríklad použiť na analýzu dôvodov spojenia pri prepájaní určitých objektových súborov alebo pri vykonávaní závislostí práce minifikácie medzi súbormi.
  • Pridané možnosti „--warn-once“ a „--warn-textrel“.
  • Odstránená závislosť na libxxhash.

Zdroj: opennet.ru

Pridať komentár