От C++ к Rust: почему это важно
Высокопроизводительный линкер Mold, известный своей скоростью, начинает процесс полного переписывания с C++ на Rust. Выход патч-версии Mold 2.42.1 стал последним релизом текущей ветки. Следующая крупная версия — Mold 3.0 — будет построена на новой архитектуре. Выбор Rust обусловлен необходимостью обеспечения строгих гарантий безопасности памяти и использованием современных возможностей языка, которые стали зрелыми за последние годы.
Главная цель: стать /usr/bin/ld по умолчанию
Руи Уэяма, создатель как Mold, так и LLVM lld, признает, что несмотря на 20-летние усилия по ускорению линкования, большинство дистрибутивов Linux все еще используют GNU ld. Это создает разрыв в производительности: то, что Mold делает за миллисекунды, GNU ld может делать за секунды или даже минуты. Новая версия Mold 3.x нацелена на устранение этого разрыва путем полной совместимости со скриптами линковщика, что позволит линкеру обрабатывать не только пользовательские приложения, но и ядро Linux и прошивки.
Сравнение производительности и статус проектов
Mold исторически демонстрирует выдающиеся результаты по сравнению с другими инструментами. Ниже приведена контекстная сводка по ключевым линкерам в экосистеме Linux:
| Линкер | Язык реализации | Статус в дистрибутивах | Ключевая особенность |
|---|---|---|---|
| GNU ld | C | Стандарт (по умолчанию) | Максимальная совместимость, но низкая скорость |
| LLVM lld | C++ | Альтернатива | Создан тем же автором, хорошая скорость |
| Wild | Rust | Экспериментальный | Высокая производительность, написан на Rust |
| Mold 2.x | C++ | d>Сторонний пакетРекордная скорость, но проблемы с совместимостью | |
| Mold 3.0 | Rust | Цель: стандарт | Скорость + полная совместимость скриптов |
Новые функции: инкрементальное линкование
Помимо смены языка и цели внедрения в ядро системы, разработчики рассматривают добавление поддержки инкрементального линкования (incremental linking). Эта функция, отсутствующая в текущих версиях, может значительно ускорить итерации разработки для определенных рабочих нагрузок. Команда изучает дизайны, которые добавят эту возможность, не нарушая простоту и надежность Mold.
Планы на будущее
Разработка Mold 3.0 требует тесного сотрудничества с разработчиками дистрибутивов Linux. Приоритетом является реализация недостающих функций скриптов линковщика и проведение обширного тестирования совместимости. Если план Уэямы сработает, мы увидим сдвиг парадигмы: от использования быстрых линкеров энтузиастами к их повсеместному внедрению в базовые системы Linux.
Источник: Phoronix ↗
