Mold 1.1 linkerio išleidimas, kurį sukūrė LLVM lld

Paskelbtas Mold linkerio leidimas, kuris gali būti naudojamas kaip greitesnis, skaidresnis GNU linkerio pakaitalas Linux sistemose. Projektą kuria LLVM lld linkerio autorius. Pagrindinė Mold savybė yra labai didelis objektų failų susiejimo greitis, pastebimai lenkiantis GNU gold ir LLVM lld linkerius (susiejimas naudojant Mold atliekamas tik perpus greičiau nei tiesiog kopijuojant failus naudojant cp įrankį). Kodas parašytas C++ (C++20) ir platinamas pagal AGPLv3 licenciją.

Naujoje versijoje:

  • Pridėtas optimizavimo palaikymas susiejimo etape (LTO, Link Time Optimization). LTO optimizavimas skiriasi tuo, kad atsižvelgiama į visų kūrimo procese dalyvaujančių failų būseną, o tradiciniai optimizavimo režimai kiekvieną failą optimizuoja atskirai ir neatsižvelgia į kituose failuose apibrėžtų funkcijų iškvietimo sąlygas. Jei anksčiau, kai buvo rasti GCC arba LLVM tarpinio kodo (IR) failai, buvo iškviečiami atitinkami ld.bfd arba ld.lld saitai, dabar Mold savarankiškai apdoroja IR failus ir naudoja Linker Plugin API, taip pat naudojamą GNU ld ir GNU. auksiniai jungikliai. Kai įjungta, LTO yra tik šiek tiek greitesnis nei kiti susiejimo įrenginiai, nes didžioji laiko dalis praleidžiama kodo optimizavimui, o ne susiejimui.
  • Pridėtas RISC-V (RV64) architektūros palaikymas pagrindinio ir tikslinėse platformose.
  • Pridėta parinktis „--emit-relocs“, kad būtų galima kopijuoti perkėlimo dalis iš įvesties failų į išvesties failus, kad būtų galima vėliau pritaikyti optimizavimą po susiejimo.
  • 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 „--print-dependencies“ ir „--print-dependencies=full“, kad CSV formatu būtų išvesta informacija apie priklausomybes tarp įvesties failų, kurias, pavyzdžiui, galima naudoti analizuojant prisijungimo priežastis susiejant tam tikrus objektų failus. arba atliekant mažinimo darbus, priklausomybes tarp failų.
  • Pridėtos parinktys „--warn-once“ ir „--warn-textrel“.
  • Pašalinta priklausomybė nuo libxxhash.

Šaltinis: opennet.ru

Добавить комментарий