Выпуск компоновщика Mold 1.1, развиваемого разработчиком LLVM lld
Опубликован выпуск компоновщика Mold, который может применяться в качестве более быстрой прозрачной замены GNU linker на Linux-системах. Проект развивает автор компоновщика LLVM lld. Ключевой особенностью Mold является очень высокая скорость связывания объектных файлов, заметно опережающая компоновщики GNU gold и LLVM lld (компоновка в Mold выполняется со скоростью, всего в два раза медленнее простого копирования файлов утилитой cp). Код написан на языке С++ (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.
Источник: http://www.opennet.ru/opennews/art.shtml? num=56766
© OpenNet