Mold 1.1 вече е пуснат, знайте новините за този модерен Linker, превъзхождащ GNU gold и LLVM

Преди няколко дни беше обявено пускането на новата версия на модерния Linker Mold 1.1, който може да се използва като по-бърз прозрачен заместител на GNU линкера в Linux системи.

В тази нова версия на мухъл 1.1 е версия, която съдържа нови функции, корекции на грешки и подобрения в производителността.

Относно Мухъл

Мухъл поддържа всички функции на GNU линкера и има много висока производителност, тъй като връзките, които прави, са само два пъти по-бързи от простото копиране на файлове с помощната програма cp.

По този начин намаляването на времето за компилация значително подобрява удобството при разработването на големи проекти чрез намаляване на времето за изчакване в процеса на генериране на изпълними файлове при отстраняване на грешки и промени в тестване.

Мотивацията за създаване на Mold беше досадата да се налага да чакате връзката да завърши след всяка промяна на кода, както и ниската ефективност на съществуващите линкери в многоядрени системи и желанието да се тества фундаментално различна архитектура на връзката, без да се прибягва до ненужно сложни модели като инкрементално свързване.

Високата производителност на свързване на изпълним файл от голям брой подготвени от компилатора обектни файлове в Mold се постига чрез използването на по-бързи алгоритми, активното паралелизиране на операциите между наличните ядра на процесора и по-ефективното използване на структури от данни.

Например Mould прилага техника за едновременно извършване на интензивни изчисления с копиране на файлове, проактивно зареждане на обектни файлове в паметта, използване на бързи хеш таблици при разрешаване на знаци, сканиране на таблици за преместване в отделен поток и дедуплициране на секции които се повтарят в различни файлове.

Основни новости на Mould 1.1

В тази нова версия на Mold 1.1, която е представена, се подчертава, че поддръжка за оптимизиране на етапа на връзката (LTO, оптимизация на времето на връзката).

Оптимизациите на LTO се различават по това, че отчитат състоянието на всички файлове, участващи в процеса на изграждане, докато традиционните режими на оптимизация оптимизират всеки файл поотделно и не отчитат условията за извикване на функции, дефинирани в други файлове.

По-рано, когато се срещаха файлове с междинен код (IR) на GCC или LLVM, се извикваха съответните ld.bfd или ld.lld линкери, но сега Mold обработва IR файлове самостоятелно и използва API на приставката на Linker, използван също в GNU ld и GNU златни линкери. Скоростта, когато е активиран LTO, е само малко по-бърза от другите линкери, тъй като по-голямата част от времето се прекарва в оптимизиране на кода, а не за свързване.

Също така се подчертава, че добавени опции „-print-dependencies“ и „–print-dependencies=full“ pЗа генериране на информация във формат CSV за зависимостите между входни файлове, които могат например да се използват за анализ на причините за свързване при свързване на определени обектни файлове или докато се работи за минимизиране на зависимостите между файловете.

Друга промяна, която се откроява от новата версия е, че поддръжка за RISC-V архитектура (RV64) на хост и целеви платформи.

В допълнение към това можем да намерим и това добавена опция „–emit-relocs“, за да активирате копиране на секции за преместване на адрес от входни файлове до крайни файлове за по-нататъшни оптимизации, които да се прилагат на етапа след свързване.

От останалите промени, които се открояват:

  • Добавена е опция „-shuffle-sections“ за произволно подреждане на секциите, преди да фиксирате техните адреси във виртуалното адресно пространство.
  • Добавени са опции „–warn-once“ и „–warn-textrel“.
  • Премахната зависимост от libxxhash.

Накрая ако се интересувате да научите повече за това, можете да проверите подробностите в следваща връзка.

Как да инсталирам Mould?

За тези, които се интересуват да могат да работят с Mold, те могат да получат помощната програма, като изтеглят и компилират изходния код. За да направите това, просто отворете терминал и въведете следното:

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

За да разберете използването на Mold, можете да се консултирате с документацията в тази връзка.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.