Mold 1.1 уже выпущен, знайте новости об этом современном компоновщике, превосходящем золото GNU и LLVM.

Несколько дней назад анонсирован выход новой версии современного Linker Mold 1.1, который можно использовать в качестве более быстрой и прозрачной замены компоновщика GNU в системах Linux.

В этой новой версии пресс-формы 1.1 есть версия, содержит новые функции, исправления ошибок и улучшения производительности.

О плесени

Плесень поддерживает все функции компоновщика GNU и он имеет очень высокую производительность, поскольку ссылки, которые он создает, всего в два раза быстрее, чем простое копирование файлов с помощью утилиты cp.

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

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

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

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

Основные новинки Mold 1.1

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

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

Раньше, когда встречались файлы промежуточного кода (IR) GCC или LLVM, вызывались соответствующие компоновщики ld.bfd или ld.lld, но теперь Mold обрабатывает файлы IR самостоятельно и использует API подключаемого модуля компоновщика, который также используется в GNU ld и Линкеры золота GNU. Скорость при включенном LTO лишь незначительно выше, чем у других компоновщиков, так как большая часть времени тратится на оптимизацию кода, а не на компоновку.

Также подчеркивается, что добавлены опции «—print-dependencies» и «—print-dependencies=full» pСгенерировать информацию в формате CSV о зависимостях между входными файлами, что, например, может быть использовано для анализа причин соединения при связывании определенных объектных файлов или при работе над минимизацией зависимостей между файлами.

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

В дополнение к этому мы также можем обнаружить, что добавлена ​​опция «–emit-relocs», чтобы включить копирование разделов перемещения адресов от входных файлов до окончательных файлов для дальнейшей оптимизации на этапе пост-ссылки.

Из других изменений, которые выделяются:

  • Добавлена ​​опция «-shuffle-sections» для рандомизации порядка разделов перед исправлением их адресов в виртуальном адресном пространстве.
  • Добавлены опции «-warn-once» и «-warn-textrel».
  • Удалена зависимость от libxxhash.

В конце концов если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.

Как установить форму?

Для тех, кто заинтересован в возможности работы с 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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.