LLVM lld:n kehittämä Mold 1.1 -linkkerin julkaisu

Mold-linkeristä on julkaistu julkaisu, jota voidaan käyttää nopeampana, läpinäkyvänä GNU-linkkerin korvaajana Linux-järjestelmissä. Projektin on kehittänyt LLVM lld -linkkerin kirjoittaja. Moldin keskeinen ominaisuus on erittäin nopea objektitiedostojen linkittämisnopeus, joka on huomattavasti edellä GNU gold- ja LLVM lld -linkkereitä (linkittäminen Moldissa tapahtuu vain puolet nopeammin kuin pelkkä tiedostojen kopioiminen cp-apuohjelmalla). Koodi on kirjoitettu kielellä C++ (C++20) ja jaettu AGPLv3-lisenssillä.

Uudessa versiossa:

  • Lisätty tuki optimointiin linkitysvaiheessa (LTO, Link Time Optimization). LTO-optimoinnit eroavat ottamalla huomioon kaikkien rakennusprosessiin osallistuvien tiedostojen tilan, kun taas perinteiset optimointitilat optimoivat jokaisen tiedoston erikseen eivätkä ota huomioon muissa tiedostoissa määritettyjä funktioiden kutsumisen ehtoja. Kun aiemmin, kun GCC- tai LLVM-välikooditiedostoja (IR) löydettiin, kutsuttiin vastaavia ld.bfd- tai ld.lld-linkkejä, nyt Mold käsittelee IR-tiedostoja itsenäisesti ja käyttää Linker Plugin API:ta, jota käytetään myös GNU ld:ssä ja GNU:ssa. kultaiset linkittimet. Kun LTO on käytössä, se on vain hieman nopeampi kuin muut linkittäjät, koska suurin osa ajasta kuluu koodin optimointiin linkittämisen sijaan.
  • Lisätty tuki RISC-V (RV64) -arkkitehtuurille isäntä- ja kohdealustoilla.
  • Lisätty "--emit-relocs" -vaihtoehto mahdollistaaksesi siirtoosien kopioimisen syöttötiedostoista tulostiedostoihin myöhempää optimointia varten linkityksen jälkeisessä vaiheessa.
  • Lisätty "--shuffle-sections" -vaihtoehto satunnaistaaksesi osien järjestyksen ennen niiden osoitteiden kiinnittämistä virtuaaliseen osoiteavaruuteen.
  • Lisätty valinnat "--print-dependencies" ja "--print-dependencies=full", jotka tulostavat CSV-muodossa tietoja syöttötiedostojen välisistä riippuvuuksista, joita voidaan käyttää esimerkiksi analysoimaan yhteyden syitä linkitettäessä tiettyjä objektitiedostoja tai kun suoritat tiedostojen välisten riippuvuuksien minimointityötä.
  • Lisätty "--warn-once" ja "--warn-textrel" vaihtoehdot.
  • Riippuvuus libxxhashista poistettu.

Lähde: opennet.ru

Lisää kommentti