Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Выпуск компоновщика Mold 3.0, развиваемого разработчиком LLVM lld

05.10.2026 22:16 (MSK)

Опубликован выпуск компоновщика Mold 3.0, который может применяться в качестве более быстрой прозрачной замены GNU linker на Linux-системах. Проект развивает Rui Ueyama, автор компоновщика LLVM lld. Ключевой особенностью Mold является очень высокая скорость связывания объектных файлов, заметно опережающая компоновщики GNU gold и LLVM lld (компоновка в Mold выполняется со скоростью, всего в два раза медленнее простого копирования файлов утилитой cp). Код написан на языке Rust и распространяется под лицензией MIT.

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

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

Ветка Mold 3.0 примечательна переписыванием кодовой базы с C++ (C++20) на язык Rust. Mold 3.0 может использоваться в качестве прозрачной замены Mold 2.42.1, последнего выпуска на языке C++, и поддерживает все ранее доступные опции и целевые архитектуры. Переход на Rust позволил обезопасить проект от потенциальных проблем при обработке повреждённых объектных файлов - в ситуациях, когда версия на С++ аварийно завершалась из-за обращения к областям памяти за пределами буфера, вариант на Rust останавливает работу на этапе проверки границ. Производительность реализации на Rust находится на одном уровне с версией на C++.

Помимо миграции на Rust ключевой целью при разработке ветки 3.0 было повышение совместимости с GNU ld и подготовка проекта к возможности использования в качестве компоновщика по умолчанию в дистрибутивах Linux. Сборочная система заменена с CMake на Cargo, а система тестов с ctest на cargo test. Из зависимостей исключена библиотека oneTBB.

  1. Главная ссылка к новости (https://github.com/rui314/mold...)
  2. OpenNews: Выпуск компоновщика Mold 2.0, развиваемого разработчиком LLVM lld
  3. OpenNews: В OpenBSD для sshd применена перекомпоновка во время загрузки
  4. OpenNews: Компания Qualcomm открыла компоновщик ELD, пригодный для замены GNU Linker
  5. OpenNews: Разработчики из Google предложили разработать свою libc для LLVM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66406-mold
Ключевые слова: mold, linker
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (25) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:25, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/–
    lto проблемный процесс, сабж позволяет его ускорить?
     
     
  • 2.2, Аноним (1), 22:26, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    и что там с потреблением памяти, обычный лто уже привычно 10 гб на 1 процесс
     
  • 2.14, Аноним (14), 23:44, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    растовики только переписывают, как показала тенденция не без помощи ЫЫ, так, что вы там говорили про LTO? Видать там ускорение получено за счет выпиливания того самого LTO :)))
     
  • 2.19, Ivan_83 (ok), 00:22, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Нет, там ни слова нет про LTO.
     

  • 1.3, Аноним (3), 22:49, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/–
    Это очень хорошая новость!
     

  • 1.4, Аноним (5), 22:54, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/–
    Однажды на опеннете написали новость не про Раст и у админа отвалился член.
     

  • 1.6, Аноним (6), 23:03, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    >>вариант на Rust останавливает работу на этапе проверки границ

    Что мешало сделать проверки на C++ ?

     
     
  • 2.15, GNU Overlord (ok), 23:52, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    "сделать"

    Собстенно, это и мешало - их делать нужно, а не просто на комплиятор повесить. Причем делать нормально, а не так, чтобы потом сегфолты летели.

     
  • 2.16, morphe (?), 00:04, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Потому что при разборе объектных файлов концепция parse, don't validate в случае плюсов невероятно сложная, поскольку zero-copy это надо следить за временем жизни кучи span/string_view, в то время как в Rust за временем жизни следит компилятор
     
  • 2.17, Васян Айтишник (?), 00:18, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Так-то наверное можно и на Бейсике писать и проверки сделать :)
     

  • 1.7, Аноним (6), 23:05, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/–
    >>Мотивом к созданию Mold стало раздражение от необходимости ждать завершения компоновки после каждого внесения изменения в код

    Надуманная проблема

     
     
  • 2.20, Ivan_83 (ok), 00:24, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ну автор холерик, не мог ждать ещё дополнительно 16 секунд после 4 часов компеляции хрома пока тот слинкуется :)
     
     
  • 3.23, An2 (?), 01:13, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Точно секунд, а не минут?
     

  • 1.8, Bottle (?), 23:16, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Ирония проекта в том, что он сам компилироваться будет ещё медленнее.
    Но, с другой стороны, лучше так, чем никак.
     
     
  • 2.9, жявамэн (ok), 23:22, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ты из тех кто пересобирает файрфокс перед каждым заходом на опеннет?
     
  • 2.21, Ivan_83 (ok), 00:28, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ирония в том, что этот проект вообще существует и каждый раз его здесь продают с такой помпой, как будто это чудо какое то и мастхэв.
    И никто тут не читает даже readmi.md проекта и не осознаёт его полную бесмысленность.

    И я не прочитал и полез эту фигню пробовать.
    А потом узнал что LTO там только через плагин = подключается llvm и разницы в скорости 0.
    А для случаев когда LTO не нужно - разницы особой нет, ну типа мне что 5 что 15 секунд линковки для проекта который собирался пол часа - как то пофик.

     
     
  • 3.24, An2 (?), 01:14, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > что 5 что 15 секунд линковки для проекта который собирался пол часа

    А если туда нужно вносить изменения, одно за другим. Компиляция - 2 секунды, а линковка на порядок дольше?

     

  • 1.11, Аноним9000 (?), 23:29, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    Да что же такое, снова несуществующий реальный продукт на раст!
     
     
  • 2.13, Аноним (10), 23:35, 05/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ты посмотри в список контрибьютеров, это нейрослоп (почти)
     

  • 1.12, Инопланетянин (?), 23:30, 05/10/2026 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/–
     

  • 1.18, Ivan_83 (ok), 00:20, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    > Ветка Mold 3.0 примечательна переписыванием кодовой базы с C++ (C++20) на язык Rust.

    Бесполезный компоновщик стал х10 бесполезнее.

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

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

     
     
  • 2.25, An2 (?), 01:17, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > типа хрома

    Да, без mold поиграться с каким-то изменениями в Firefox или Chromium не реально.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: