Выпуск кампаноўніка Mold 1.1, які развіваецца распрацоўшчыкам LLVM lld

Апублікаваны выпуск кампаноўніка Mold, які можа ўжывацца ў якасці хутчэйшай празрыстай замены GNU linker на Linux-сістэмах. Праект развівае аўтар кампаноўніка LLVM lld. Ключавой асаблівасцю Mold з'яўляецца вельмі высокая хуткасць злучэння аб'ектных файлаў, прыкметна апераджальная кампаноўнікі GNU gold і LLVM lld (кампаноўка ў Mold выконваецца са хуткасцю, усяго ў два разу павольней простага капіявання файлаў утылітай cp). Код напісаны на мове З++ (C++20) і распаўсюджваецца пад ліцэнзіяй AGPLv3.

У новай версіі:

  • Дададзена падтрымка аптымізацыі на этапе звязвання (LTO, Link Time Optimization). LTO-аптымізацыі адрозніваюцца ўлікам стану ўсіх файлаў, якія ўдзельнічаюць у працэсе зборкі ў той час, як традыцыйныя рэжымы аптымізацыі аптымізуюць кожны файл паасобку і не ўлічваюць умовы выкліку функцый, вызначаных у іншых файлах. Калі раней пры выяўленні файлаў з прамежкавым кодам (IR) GCC або LLVM выклікаліся адпаведныя кампаноўнікі ld.bfd ці ld.lld, то зараз Mold апрацоўвае IR-файлы самастойна і выкарыстоўвае Linker Plugin API, таксама які ўжываецца ў кампаноўшчыках GNU ld і GNU gold. Хуткасць пры ўключэнні LTO толькі малаважна апярэджвае іншыя кампаноўнікі, бо асноўны час марнуецца на выкананне аптымізацыі кода, а не кампаноўку.
  • Дададзена падтрымка архітэктуры RISC-V (RV64) на баку хаста і мэтавых платформаў.
  • Дададзена опцыя "-emit-relocs" для ўключэння рэжыму капіявання секцый перасоўванняў адрасоў (relocation) з уваходных файлаў у выніковыя для наступнага ўжывання аптымізацый на этапе пасля звязвання.
  • Дададзена опцыя «-shuffle-sections» для рандамізацыі парадку прытрымлівання секцый да фіксацыі іх адрасоў у віртуальнай адраснай прасторы.
  • Дададзеныя опцыі «—print-dependencies» і «—print-dependencies=full» для вываду ў фармаце CSV інфармацыі аб залежнасцях паміж уваходнымі файламі, што, напрыклад, можна выкарыстоўваць для аналізу прычын падключэння пры кампаноўцы пэўных аб'ектных файлаў або пры правядзенні працы па мінімізацыі залежнасцяў паміж файламі.
  • Дададзеныя опцыі "-warn-once" і "-warn-textrel".
  • Выключана залежнасць ад libxxhash.

Крыніца: opennet.ru

Дадаць каментар