Mold 1.1 вже випущено, знайте новини про цей сучасний компонувальник, який перевершує GNU gold і LLVM

Кілька днів тому було оголошено про вихід нової версії сучасного Linker Mold 1.1, який можна використовувати як швидшу прозору заміну компоновщику GNU в системах Linux.

У цій новій версії Mold 1.1 є версія, що містить нові функції, виправлення помилок та покращення продуктивності.

Про цвіль

Цвіль підтримує всі функції компоновщика GNU і він має дуже високу продуктивність, оскільки посилання, які він створює, лише вдвічі швидше, ніж просто копіювання файлів за допомогою утиліти cp.

Таким чином скорочення часу компіляції значно покращує зручність розробки великих проектів за рахунок скорочення часу очікування в процесі генерації виконуваного файлу під час налагодження та тестування змін.

Мотивацією створення Mold було роздратування від необхідності чекати завершення посилання після кожної зміни коду, а також низька ефективність існуючих компонувальників у багатоядерних системах і бажання протестувати принципово іншу архітектуру зв’язку, не вдаючись до непотрібно складних моделей, таких як інкрементальне зв’язування.

Висока продуктивність зв’язування виконуваного файлу з великою кількістю підготовлених компілятором об’єктних файлів у Mold досягається за рахунок використання більш швидкісних алгоритмів, активного розпаралелювання операцій між доступними ядрами ЦП та ефективнішого використання структур даних.

Наприклад, Mold реалізує техніку для одночасного виконання інтенсивних обчислень з копіюванням файлів, активним завантаженням об'єктних файлів у пам'ять, використанням швидких хеш-таблиць під час розпізнавання символів, сканування таблиць переміщення в окремий потік і дедуплікація розділів які повторюються в різних файлах.

Основні новинки Mold 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.