Домой Софт и приложения Linux Релиз Mold 3.0: высокоскоростной линковщик переписан на Rust

Релиз Mold 3.0: высокоскоростной линковщик переписан на Rust

Вышла версия Mold 3.0, которая стала первым релизом проекта, полностью переписанным на языке программирования Rust. Разработчики стремятся сделать его стандартом для Linux.

1
0

5 октября 2026 года состоялся официальный релиз Mold 3.0. Это знаковое обновление для высокоскоростного линковщика, так как весь проект был переписан с C++ на язык Rust. Предыдущая версия 2.42.1 стала финальной точкой в развитии кодовой базы на C++, и теперь новая версия позиционируется разработчиками как полноценная и прямая замена предшественнику.

Логотип проекта Mold
Mold 3.0 стал первым релизом, полностью написанным на Rust, сохранив при этом высокую производительность

Особенности перехода на Rust и новые возможности

Пользователям, которые планируют собирать Mold из исходного кода, теперь потребуется наличие Rust версии 1.95 или более новой, а также стандартный C-компилятор. Важным изменением стало использование системы сборки Cargo, которая заменила CMake. Соответственно, все старые опции CMake были удалены из проекта, а внешняя зависимость от библиотеки oneTBB больше не требуется.

Разработчики отмечают, что производительность линковки в версии 3.0 осталась на прежнем высоком уровне. Функциональность командной строки и поддерживаемые архитектуры полностью соответствуют версии 2.42.1, что обеспечивает преемственность для текущих пользователей. В ходе подготовки релиза проводилось масштабное тестирование: проект прогнали через все поддерживаемые целевые платформы с использованием различных комбинаций опций, а также успешно выполнили сборку всех пакетов Gentoo, не выявив при этом никаких регрессий.

Цели разработчиков и планы по интеграции в Linux

Основная стратегическая задача команды Mold заключается в том, чтобы сделать этот инструмент линковщиком по умолчанию в различных дистрибутивах Linux. На текущий момент большинство системных сборок все еще используют GNU ld в качестве стандартного компонента /usr/bin/ld. Как пояснил инициатор проекта Руи Уэяма, переход на Rust и расширение функциональности преследуют цель обеспечить способность Mold собирать практически любые проекты, включая ядра операционных систем и встраиваемые программы.

В ближайших планах для серии 3.x стоит задача закрыть существующие пробелы в совместимости с GNU ld, в частности, усилить поддержку скриптов линковщика (linker scripts). Эти файлы необходимы для точного описания того, как входные секции отображаются в выходной файл, и для управления макетом памяти. Именно это направление работы является ключевым этапом на пути к полноценной поддержке линковки ядер и прошивок.

Повышение стабильности и безопасности

Переписывание кода на Rust позволило устранить критические уязвимости, характерные для версии на C++. В частности, старая версия могла считывать память за пределами выделенного буфера при обработке поврежденных входных файлов, что приводило к аварийному завершению программы с ошибкой сегментации (segmentation fault). В Mold 3.0 операции чтения проходят проверку границ, и в случае попытки некорректного доступа программа завершается с паникой, что значительно повышает общую безопасность инструмента. Полный список исправленных ошибок и актуальный исходный код доступны на странице проекта на GitHub.

Дополнительные технические детали и контекст разработки

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

Проект Mold позиционируется как высокоскоростная open-source альтернатива таким инструментам, как GNU gold, GNU ld и LLVM lld. Напомним, что линковщик выполняет финальный этап сборки программного обеспечения, объединяя скомпилированные объектные файлы в единый исполняемый файл или динамическую библиотеку. Для крупных проектов этот процесс может занимать значительное время, поэтому акцент на производительности является фундаментальным для всей идеологии Mold.

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

Тестирование перед релизом 3.0 носило всеобъемлющий характер: команда проверила работу линковщика на всех поддерживаемых архитектурах, используя широкий спектр реальных рабочих нагрузок и разнообразные комбинации ключей командной строки. Успешная сборка всего дерева пакетов Gentoo без обнаружения регрессий служит важным подтверждением стабильности Rust-версии перед широким внедрением в дистрибутивы Linux.

Источник: https://betanews.com