Mold, сучасний компонувальник, що перевершує GNU gold і LLVM lld

Руй Уеяма, автор LLVM lld композитор і компілятор chibicc, представлений тому мало плодів своєї нової роботи і представив перша стабільна версія нового «high-linker the Mold», який виділяється тим, що він значно випереджає швидкість посилань у компонувальників об’єктних файлів GNU gold та LLVM lld.

Наразі проект вважається готовим до впровадження у виробництво і його можна використовувати як швидшу прозору заміну компоновщику GNU в системах Linux.

Про цвіль

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

Наприклад, під час компіляції Chrome 96 (розмір коду 1,89 ГБ) зв’язування виконуваних файлів з інформацією про налагодження на 8-ядерному комп’ютері займає 53 секунди з GNU Gold, LLVM lld займає 11,7 секунди, а Mold лише 2,2 секунди (у 26 разів швидше, ніж GNU gold) .

Крім того, при підключенні Clang 13 (3,18 ГБ), GNU gold займає 64 секунди, LLVM lld займає 5,8 секунди і Mold займає 2,9 секунди, а при підключенні Firefox 89 (1,64 ГБ), GNU gold займає 32,9, 6,8 секунди, LLVM lld займає 1,4 секунди. і Mold займає XNUMX секунди.

mold 1.0 є першою стабільною і готовою до виробництва версією високошвидкісного компонувальника. У системах на базі Linux він повинен «просто працювати» як швидша пряма заміна компонувальника GNU за замовчуванням для більшості програм користувача. Якщо ви створюєте великий виконуваний файл, зв’язування якого займає багато часу, варто перевірити шаблон, щоб побачити, чи може він скоротити час компіляції. Форма проста у виготовленні та використанні.

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

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

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

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

Наостанок слід зазначити, що Mold написана на C++ 20 і поширюється під ліцензією AGPLv3, який сумісний із GPLv3, але не сумісний із GPLv2, оскільки вимагає змін відкритості під час розробки мережевих послуг. Такий вибір пояснюється бажанням отримати кошти на розробку: автор готовий продати права на код, щоб переліцензувати за дозвільною ліцензією типу MIT, або надати окрему комерційну ліцензію для тих, кого не влаштовує. AGPL.

Що стосується майбутні плани що вони мають, згадується, що в даний час працюємо над Mold для macOS  (хоча ця підтримка версії 1.0 вже додано, але все ще вважається альфа-версією), і після її завершення підтримка буде випущена у версії 2.0 Mold і після цього згадується, що він працюватиме в Mold for Windows і буде реалізовано у версії 3.0.

Si ви хочете дізнатися більше про цей проект або ви хочете зібрати його, щоб мати можливість використовувати його у своїй системі, ви можете перевірити деталі та / або інструкції зі компіляції У наступному посиланні.


Зміст статті відповідає нашим принципам редакційна етика. Щоб повідомити про помилку, натисніть тут.

Будьте першим, щоб коментувати

Залиште свій коментар

Ваша електронна адреса не буде опублікований.

*

*

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

bool(true)