Линкер Mold переписывают на Rust и метят в стандартный линкер Linux
Высокопроизводительный компоновщик Mold, который обычно опережает LLVM lld, GNU LD, Wild и других соперников, переписывают на языке Rust. Одновременно проект ставит перед собой амбициозную цель — стать линкером по умолчанию в системах Linux.
В день выхода патча Mold 2.42.1 разработчики раскрыли планы на следующий крупный релиз. Mold 3.0 будет полностью реализован на Rust: язык, по словам ведущего разработчика Руи Уэямы, достаточно созрел, а его строгие гарантии безопасности делают переход привлекательным. Mold следует по пути линкера Wild, также написанного на Rust. Уэяма рассчитывает, что версия на Rust будет справляться с быстрой компоновкой не хуже ветки 2.xx.
Двадцать лет с GNU ld
Особенно любопытна вторая цель. Уэяма отмечает, что за последние двадцать лет появилось несколько быстрых линкеров — gold, lld, сам mold, — однако системным линкером /usr/bin/ld в большинстве дистрибутивов до сих пор остаётся GNU ld. В результате задачи компоновки, которые mold выполняет за сотни миллисекунд, со стандартным линкером могут растягиваться на секунды, десятки секунд и даже минуты. Такую ситуацию разработчик называет досадной для всего сообщества Linux.
Будучи автором и lld, и mold, Уэяма признаёт часть ответственности на себе: он много сил вложил в скорость линкеров, но недостаточно — в работу над совместимостью, без которой быстрый компоновщик не может стать полноценной заменой системному. С выходом Mold 3.0 это намерены исправить: одна из главных задач ветки 3.x — сделать mold пригодным для принятия дистрибутивами в роли /usr/bin/ld.
Для этого предстоит реализовать недостающие возможности линкер-скриптов, чтобы mold мог компоновать не только пользовательские программы, но также ядра и прошивки. Затем разработчики планируют провести масштабное тестирование совместимости и работать в тесном контакте с сопровождающими дистрибутивов.
Инкрементальная компоновка
Отдельно проект рассматривает поддержку инкрементального линкования — функции, которой у mold до сих пор не было. Уэяма пишет, что если удастся добавить её простым способом, разработчики будут этому рады: на ряде сценариев она способна заметно ускорить сборку. Сейчас исследуются варианты реализации, которые дали бы такой выигрыш, сохранив при этом свойственную mold простоту и надёжность.
Источник: Phoronix
Комментарии
Войдите, чтобы комментировать.