Випуск компонувальника Mold 1.1, який розвивається розробником LLVM lld

Опубліковано випуск компонувальника Mold, який може застосовуватися як швидша прозора заміна GNU linker на 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 gold. Швидкість при включенні LTO лише трохи випереджає інші компонувальники, оскільки основний час витрачається виконання оптимізації коду, а чи не компоновку.
  • Додано підтримку архітектури RISC-V (RV64) на стороні хоста та цільових платформ.
  • Додано опцію «—emit-relocs» для включення режиму копіювання секцій переміщень адрес (relocation) із вхідних файлів у підсумкові для подальшого застосування оптимізації на етапі після зв'язування.
  • Додано опцію «-shuffle-sections» для рандомізації порядку проходження секцій до фіксації їх адрес у віртуальному адресному просторі.
  • Додано опції «—print-dependencies» та «—print-dependencies=full» для виведення у форматі CSV інформації про залежність між вхідними файлами, що, наприклад, можна використовувати для аналізу причин підключення при компонуванні певних об'єктних файлів або під час роботи з мінімізації залежностей між файлами.
  • Додані опції "warn-once" і "warn-textrel".
  • Виключено залежність від libxxhash.

Джерело: opennet.ru

Додати коментар або відгук