Mold 1.1 jau buvo išleistas, žinokite naujienas apie šį modernų Linker, pranašesnį už GNU gold ir LLVM

Prieš kelias dienas buvo paskelbta apie naujos šiuolaikinės Linker Mold 1.1 versijos išleidimą, kuris gali būti naudojamas kaip greitesnis skaidrus GNU linkerio pakaitalas Linux sistemose.

Šioje naujoje pelėsių 1.1 versijoje yra versija, kuri yra naujų funkcijų, klaidų pataisymų ir našumo patobulinimų.

Apie pelėsį

Pelėsiai palaiko visas GNU linkerio funkcijas ir jis turi labai didelį našumą, nes jo sukuriamos nuorodos yra tik dvigubai greitesnės nei tiesiog kopijuojant failus naudojant cp programą.

Tokiu būdu sutrumpėjus kompiliavimo laikui, žymiai pagerėja didelių projektų kūrimo patogumas sumažinant laukimo laiką vykdomojo failo generavimo procese derinant ir tikrinant pakeitimus.

Motyvacija sukurti Mold buvo susierzinimas, kai po kiekvieno kodo pakeitimo reikėjo laukti, kol nuoroda bus baigta, taip pat žemas esamų jungčių efektyvumas kelių branduolių sistemose ir noras išbandyti iš esmės skirtingą nuorodų architektūrą nesiimant bereikalingai sudėtingų modelių, tokių kaip laipsniškas susiejimas.

Didelis vykdomojo failo susiejimo su daugybe kompiliatorių paruoštų objektų failų Mold našumas pasiekiamas naudojant greitesnius algoritmus, aktyvų turimų procesoriaus branduolių operacijų lygiagretinimą ir efektyvesnį duomenų struktūrų naudojimą.

Pavyzdžiui, Mold įgyvendina techniką, leidžiančią vienu metu atlikti intensyvius skaičiavimus naudojant failų kopijavimą, aktyvų objektų failų įkėlimą į atmintį, greitųjų maišos lentelių naudojimą sprendžiant simbolius, perkėlimo lentelių nuskaitymas atskirame sraute ir sekcijų dubliavimo panaikinimas kurie kartojasi skirtinguose failuose.

Pagrindinės Mold naujovės 1.1

Šioje pristatomoje naujoje Mold 1.1 versijoje pabrėžiama, kad nuorodos etapo optimizavimo palaikymas (LTO, nuorodos laiko optimizavimas).

LTO optimizavimas skiriasi tuo, kad atsižvelgiama į visų kūrimo procese dalyvaujančių failų būseną, o tradiciniai optimizavimo režimai optimizuoja kiekvieną failą atskirai ir neatsižvelgia į kituose failuose apibrėžtų funkcijų iškvietimo sąlygas.

Anksčiau, kai buvo aptinkami GCC arba LLVM tarpinio kodo (IR) failai, buvo iškviečiami atitinkami ld.bfd arba ld.lld saitai, tačiau dabar „Mold“ pati tvarko IR failus ir naudoja „Linker“ papildinio API, taip pat naudojamą GNU ld ir GNU aukso jungikliai. Greitis, kai įjungtas LTO, yra tik šiek tiek greitesnis nei kitų linkerių, nes didžioji laiko dalis praleidžiama optimizuojant kodą, o ne susiejant.

Taip pat pabrėžiama pridėtos parinktys „–print-dependencies“ ir „–print-dependencies=full“ pSugeneruoti informaciją CSV formatu apie priklausomybes tarp įvesties failų, kurie, pavyzdžiui, gali būti naudojami ryšio priežastims analizuoti susiejant tam tikrus objektų failus arba dirbant siekiant sumažinti priklausomybes tarp failų.

Kitas pakeitimas, kuris išsiskiria iš naujosios versijos, yra tas, kad RISC-V architektūros (RV64) palaikymas prieglobos ir tikslinėse platformose.

Be to, mes taip pat galime tai rasti pridėta parinktis „–emit-relocs“, kad būtų galima kopijuoti adresų perkėlimo skyrius nuo įvesties failų iki galutinių failų tolesniam optimizavimui, kuris bus taikomas po nuorodos.

Iš kitų išsiskiriančių pakeitimų:

  • Pridėta parinktis „–shuffle-sections“, kad būtų galima atsitiktine tvarka nustatyti sekcijų tvarką prieš nustatant jų adresus virtualioje adresų erdvėje.
  • Pridėtos parinktys „–warn-one“ ir „–warn-textrel“.
  • Pašalinta priklausomybė nuo libxxhash.

Pagaliau jei norite sužinoti daugiau apie tai, išsamią informaciją galite patikrinti sekanti nuoroda.

Kaip įdiegti pelėsį?

Tiems, kurie domisi galimybe dirbti su Mold, jie gali gauti naudingumą atsisiųsdami ir sukompiliuodami šaltinio kodą. Norėdami tai padaryti, tiesiog atidarykite terminalą ir įveskite:

git clone https://github.com/rui314/mold.git
cd mold
git checkout v1.1.1
make -j$(nproc) CXX=clang++
sudo make install

Norėdami sužinoti, kaip naudoti pelėsį, galite peržiūrėti dokumentaciją šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.