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

Mold 3.0 -linkitin on julkaistu, ja sitä voidaan käyttää nopeampana ja läpinäkyvänä korvikkeena GNU-linkerille. Linux-järjestelmät. Projektia kehittää Rui Ueyama, LLVM lld -linkittimen kehittäjä. Moldin tärkein ominaisuus on sen erittäin nopea linkitysnopeus, joka on merkittävästi GNU gold- ja LLVM lld -linkittimiä nopeampi (linkitys Moldissa on vain puolet nopeampi kuin tiedostojen kopioiminen cp-apuohjelmalla). Koodi on kirjoitettu Rust-kielellä ja jaettu MIT-lisenssillä.

Linkitysajan lyhentäminen parantaa merkittävästi suurten projektien käytettävyyttä lyhentämällä odotusaikaa suoritettavan tiedoston luomisen aikana virheenkorjauksen ja muutosten testauksen aikana. Moldin luomisen motivaatio kumpusi turhautumisesta linkityksen valmistumisen odottamiseen jokaisen koodimuutoksen jälkeen, olemassa olevien linkityslaitteiden heikosta suorituskyvystä moniydinjärjestelmissä ja halusta kokeilla perustavanlaatuisesti erilaista linkitysarkkitehtuuria turvautumatta liian monimutkaisiin malleihin, kuten inkrementaaliseen linkitykseen.

Mold saavuttaa korkean suorituskyvyn kääntäessään suoritettavia tiedostoja suuresta määrästä kääntäjän valmistelemia objektitiedostoja käyttämällä nopeampia algoritmeja, rinnakkaistamalla aktiivisesti toimintoja käytettävissä olevien suorittimen ytimien välillä ja hyödyntämällä tehokkaampia tietorakenteita. Esimerkiksi Mold toteuttaa tekniikan, jolla voidaan suorittaa intensiivisiä laskelmia samanaikaisesti tiedostojen kopioinnin kanssa, ladata objektitiedostoja ennaltaehkäisevästi muistiin, käyttää nopeita hajautustaulukoita symbolien erotteluun, skannata siirtotaulukoita erillisessä säikeessä ja poistaa yhdistettyjen osien kaksoiskappaleita eri tiedostoista.

Mold 3.0 -haara on merkittävä koodikannan uudelleenkirjoittamisesta C++:sta (C++20) Rustiin. Mold 3.0:aa voidaan käyttää läpinäkyvänä korvikkeena viimeisimmälle C++-julkaisulle Mold 2.42.1:lle, ja se tukee kaikkia aiemmin saatavilla olevia vaihtoehtoja ja kohdearkkitehtuureja. Siirtyminen Rustiin on mahdollistanut projektin suojaamisen mahdollisilta ongelmilta käsiteltäessä vioittuneita objektitiedostoja – tilanteissa, joissa C++-versio kaatui rajojen ulkopuolisen käytön vuoksi, Rust-toteutus pysähtyy rajojen tarkistusvaiheeseen. Rust-toteutuksen suorituskyky on samalla tasolla kuin C++-version.

Rustiin siirtymisen lisäksi 3.0-haaran kehityksen keskeisenä tavoitteena oli parantaa yhteensopivuutta GNU ld:n kanssa ja valmistella projekti käytettäväksi oletuslinkittimenä jakeluissa. LinuxKäännösjärjestelmä on korvattu Cargolla ja testausjärjestelmä on korvattu cargo testillä, joka korvaa ctestin. oneTBB-kirjasto on poistettu riippuvuuksista.

Lähde: opennet.ru

Osta luotettava isännöinti sivustoille, joissa on DDoS-suojaus, VPS VDS -palvelimet 🔥 Osta luotettavaa verkkosivustojen hostingia DDoS-suojauksella, VPS VDS -palvelimilla | ProHoster