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