Wild Linker 0.9 получил поддержку linker plugin API, расширил работу с linker scripts и сделал шаг к будущей поддержке Mach-O и WebAssembly. Для обычного читателя это новость из «невидимого» слоя разработки: такие инструменты не запускают приложения, но влияют на скорость сборки, удобство разработки и качество системного ПО.

Wild Linker укрепляет роль альтернативного линкера для Linux-разработки
Wild Linker — это линкер, написанный на Rust. Линкер нужен на финальном этапе сборки программы: он собирает скомпилированные части проекта, библиотеки и служебную информацию в итоговый исполняемый файл или библиотеку.
Если упростить, компилятор готовит детали, а линкер собирает из них готовый механизм. Поэтому скорость и корректность линкера особенно важны для больших проектов, где разработчик десятки раз в день запускает сборку, тесты и проверку изменений.
В версии 0.9 проект не заявляет о большом скачке производительности. Разработчики прямо отмечают, что существенной работы именно над скоростью в этом релизе не было, но важно другое: Wild становится совместимее с реальными сценариями сборки, где используются сложные настройки, разные архитектуры и не только Rust-код.
Linker plugin API открывает путь к LTO для смешанных проектов
Главное изменение Wild Linker 0.9 — поддержка linker plugin API. Это механизм, который изначально появился вокруг Gold linker и также поддерживается GNU ld и Mold.
На практике это важно для LTO — link-time optimization. Это оптимизация на этапе линковки, когда инструмент видит не отдельные файлы по одному, а более цельную картину программы. За счёт этого он может лучше убрать лишний код, эффективнее связать части приложения и иногда улучшить итоговую производительность.
Разработчики Wild отдельно подчёркивают важную деталь: чистые Rust-проекты обычно меньше зависят от linker plugins, потому что Rust умеет делать LTO внутри компилятора. Поэтому новая возможность особенно полезна для C, C++ и смешанных проектов, где Rust может быть только одной частью общей кодовой базы.
При этом использовать новую возможность бездумно не стоит. В релизных заметках указано, что при работе через linker plugin время линковки будет очень медленным, а у функции ещё есть известные проблемы. То есть это не кнопка «сделать всё быстрее», а шаг к совместимости с более сложными сборочными сценариями.
Поддержка linker scripts делает Wild полезнее для системного кода
В Wild Linker 0.9 заметно расширена поддержка linker scripts. Это специальные файлы, которые описывают, как именно должны быть разложены секции программы в памяти и итоговом бинарном файле.
Для обычных приложений разработчик часто вообще не видит linker script. Но в низкоуровневой разработке, системном программировании, embedded-сценариях, сборке рантаймов и некоторых Linux-компонентов такие настройки могут быть критически важны.
В список изменений вошли, например, поддержка PROVIDE и PROVIDE_HIDDEN, обработка ASSERT, LOADADDR, ALIGNOF, SEGMENT_START, выражений с битовыми и логическими операторами, а также MEMORY-блоков. Это звучит узко, но именно такие детали отделяют экспериментальный инструмент от линкера, который можно пробовать в более требовательных проектах.
RISC-V, AArch64 и LoongArch64 получили важные низкоуровневые улучшения
Релиз 0.9 затрагивает несколько архитектур. Для RISC-V добавлены улучшения вокруг relaxations — оптимизаций, которые позволяют заменить часть инструкций или обращений более короткими и эффективными вариантами, если итоговое расположение кода это позволяет.
Для AArch64 реализованы range-extension thunks. Это вспомогательные переходные конструкции, которые нужны, когда прямой переход в машинном коде не может достать до нужного адреса из-за ограничений расстояния.
Для LoongArch64 добавлены уточнения по допустимым диапазонам и выравниванию согласно спецификации. Всё это не выглядит как функция для конечного пользователя, но для компиляторов, сборочных систем и дистрибутивов такие изменения важны: они повышают шанс, что проект соберётся корректно на разных платформах.
Портирование на macOS и WebAssembly началось, но пока не готово к использованию
Команда Wild отдельно выделила работу по портированию. Внутренний код перерабатывали так, чтобы поведение, связанное с ELF, было отделено от более общих частей линкера.
ELF — это основной формат исполняемых файлов и библиотек в Linux. Но macOS использует Mach-O, а WebAssembly живёт в своей отдельной модели. Пока поддержка Mach-O и WebAssembly не готова для практического использования, но сам факт движения в эту сторону важен: Wild постепенно перестаёт быть инструментом, мыслящим только в рамках одного формата.
При этом Windows в списке неподдерживаемых крупных направлений всё ещё остаётся отдельной задачей. В README проекта среди рабочих платформ указаны Linux-сценарии для x86-64, ARM64, RISC-V и начальная поддержка LoongArch64, а среди ещё не завершённых направлений — incremental linking, более сложные linker scripts, Mach-O и Windows.
Разработчикам стоит воспринимать 0.9 как релиз совместимости, а не как массовую замену ld
Wild Linker 0.9 не нужно воспринимать как сигнал немедленно менять линкер во всех проектах. Это скорее важный промежуточный релиз: проект закрывает пробелы совместимости, расширяет поддержку сложных сценариев и готовит основу для будущих платформ.
Кому стоит присмотреться к Wild уже сейчас:
- разработчикам Rust-проектов на Linux, которые экспериментируют со скоростью сборки;
- авторам C/C++ и mixed-language проектов, которым интересна поддержка linker plugin LTO;
- разработчикам системного ПО, где важны linker scripts и нестандартная раскладка секций;
- энтузиастам RISC-V, AArch64 и альтернативных архитектур;
- мейнтейнерам, которым важно понимать, куда движутся современные инструменты сборки.
Для продакшена подход должен быть осторожным: сначала тестирование в CI, затем сравнение результата с привычными GNU ld, LLD или Mold, и только потом переход в рабочих сборках.
Итоговый смысл релиза — Wild становится взрослее как инфраструктурный инструмент
Wild Linker 0.9 — не релиз с одной яркой пользовательской кнопкой. Его значение в другом: проект постепенно закрывает сложные технические пробелы, без которых линкер трудно использовать за пределами простых сценариев.
Поддержка linker plugin API, расширение linker scripts, улучшения для RISC-V и AArch64, а также ранняя работа над Mach-O и WebAssembly показывают направление развития. Wild пока не заменяет все зрелые линкеры, но становится всё более серьёзным кандидатом для разработчиков, которым важны скорость сборки, Rust-реализация и долгосрочная идея incremental linking.