Izdanje povezivača Mold 1.1, koji je razvio LLVM lld

Objavljeno je izdanje povezivača Mold koji se može koristiti kao brža, transparentna zamjena za GNU povezivač na Linux sustavima. Projekt je razvio autor povezivača LLVM lld. Ključna značajka Molda je vrlo velika brzina povezivanja objektnih datoteka, primjetno ispred povezivača GNU gold i LLVM lld (povezivanje u Moldu izvodi se brzinom koja je samo upola manja od jednostavnog kopiranja datoteka pomoću uslužnog programa cp). Kod je napisan u C++ (C++20) i distribuira se pod AGPLv3 licencom.

U novoj verziji:

  • Dodana podrška za optimizaciju u fazi povezivanja (LTO, Optimizacija vremena povezivanja). LTO optimizacije razlikuju se uzimajući u obzir stanje svih datoteka uključenih u proces izgradnje, dok tradicionalni načini optimizacije optimiziraju svaku datoteku zasebno i ne uzimaju u obzir uvjete za pozivanje funkcija definiranih u drugim datotekama. Dok su ranije, kada su pronađene datoteke međukoda (IR) GCC ili LLVM, pozivani odgovarajući povezivači ld.bfd ili ld.lld, sada Mold neovisno obrađuje IR datoteke i koristi Linker Plugin API, koji se također koristi u GNU ld i GNU zlatni poveznici. Kada je omogućen, LTO je samo neznatno brži od drugih povezivača jer se većina vremena troši na optimizaciju koda, a ne na povezivanje.
  • Dodana podrška za RISC-V (RV64) arhitekturu na glavnoj i ciljnoj platformi.
  • Dodana je opcija “--emit-relocs” kako bi se omogućilo kopiranje odjeljaka premještanja iz ulaznih datoteka u izlazne datoteke za naknadnu primjenu optimizacija u fazi postpovezivanje.
  • Dodana je opcija “--shuffle-sections” za nasumični redoslijed odjeljaka prije popravljanja njihovih adresa u virtualnom adresnom prostoru.
  • Dodane su opcije “--print-dependencies” i “--print-dependencies=full” za izlaz u CSV formatu informacija o ovisnostima između ulaznih datoteka, koje se, primjerice, mogu koristiti za analizu razloga povezivanja prilikom povezivanja određenih objektnih datoteka ili prilikom obavljanja posla smanjivanja ovisnosti između datoteka.
  • Dodane opcije "--warn-once" i "--warn-textrel".
  • Uklonjena ovisnost o libxxhash.

Izvor: opennet.ru

Dodajte komentar