Рюи Уеяма, создатель LLVM lld, развивает свой второй проект компоновщика. При этом автору удалось совершить почти невозможное — версия на Rust сохранила ту самую скорость, за которую любят Mold (компоновка бинарников тут происходит буквально вдвое медленнее обычного копирования файла через
cp), но обрела абсолютную память-безопасность при разборе битых объектных файлов.В C++ версии поврежденные объектные файлы иногда приводили к выходу за границы буфера и краху программы, а в Rust-варианте та же ситуация просто останавливается на этапе проверки границ. То есть вместо падения с сегфолтом — предсказуемая ошибка, что для инструмента, который гоняют сотни раз в день при каждой компиляции, довольно приятное улучшение.
разработчик утверждает, что скорость осталась на уровне C++ версии, а это не самая тривиальная задача, учитывая что весь смысл Mold строился именно на агрессивной многопоточности и ручной оптимизации под каждое ядро CPU.
Отдельная цель релиза — дотянуть совместимость с GNU ld до уровня, при котором Mold можно было бы безопасно ставить дефолтным линковщиком в дистрибутивах.
Linux / Линукс 🥸
