Ослободување на поврзувачот Mold 1.1, развиен од LLVM lld

Објавено е издание на Mold линкерот, кое може да се користи како побрза и транспарентна замена за GNU линкерот. Linux-системи. Проектот го развива авторот на LLVM lld линкерот. Клучната карактеристика на Mold е неговата екстремно висока брзина на поврзување на датотеки со објекти, што значително ги надминува линкерите GNU gold и LLVM lld (поврзувањето во Mold е само половина побрзо од едноставното копирање датотеки со алатката cp). Кодот е напишан во C++ (C++20) и се дистрибуира под лиценцата AGPLv3.

Во новата верзија:

  • Додадена е поддршка за оптимизација во фазата на поврзување (LTO, Link Time Optimization). LTO оптимизациите се разликуваат со тоа што ја земаат предвид состојбата на сите датотеки вклучени во процесот на градење, додека традиционалните режими на оптимизација ја оптимизираат секоја датотека посебно и не ги земаат предвид условите за повикување функции дефинирани во другите датотеки. Додека претходно, кога беа пронајдени датотеките со среден код (IR) на GCC или LLVM, се повикуваа соодветните поврзувачи ld.bfd или ld.lld, сега Mold ги обработува IR датотеките независно и го користи Linker Plugin API, исто така користен во GNU ld и GNU златни поврзувачи. Кога е овозможено, LTO е само маргинално побрз од другите поврзувачи бидејќи поголемиот дел од времето се троши на оптимизација на кодот наместо поврзување.
  • Додадена е поддршка за архитектурата RISC-V (RV64) на хостот и целните платформи.
  • Додадена е опцијата „--emit-relocs“ за да се овозможи копирање на делови за преместување од влезни датотеки во излезни датотеки за последователна примена на оптимизации во фазата на пост-поврзување.
  • Додадена е опцијата „--shuffle-sections“ за рандомизирање на редоследот на секциите пред да се поправат нивните адреси во виртуелниот адресен простор.
  • Додадени се опциите „--print-dependencies“ и „--print-dependencies=full“ за излез во формат CSV информации за зависностите помеѓу влезните датотеки, кои, на пример, може да се користат за анализа на причините за поврзување при поврзување одредени датотеки со објекти или при извршување на работните зависности за минификација помеѓу датотеките.
  • Додадени се опциите „--warn-once“ и „--warn-textrel“.
  • Отстранета зависност од libxxhash.

Извор: opennet.ru

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster