The release took place Wild Linker 0.9.0 — a new high-performance linker written in Rust. The release is listed on GitHub. May 23, 2026The project is positioned as a linker for accelerating iterative development: the authors ultimately want to achieve incremental linking, although it is not yet implemented in the current version. The code is distributed under a dual license. Apache 2.0 / MIT.
The main change in Wild 0.9 is support Linker Plugin API, an interface introduced in the Gold linker and also supported by GNU ld and Mold. For Wild, this opens the way to linker-plugin LTO — link time optimizations via a linker plugin. The developers specifically state that this is primarily useful for C, C++, and mixed-code projects, while pure Rust projects typically perform LTO internally. Support for this feature still has known issues, and linking via the plugin can be slow.
A significant portion of the work in 0.9 was related to preparations for the transfer of Wild beyond Linux/ELF. ELF-specific logic has been moved outside of abstractions, and work on support has begun. Male и WebAssemblyThese capabilities are not yet ready for practical use, but the first elements have already appeared: Mach-O parsing, section and segment processing, symbol table, code signature, fat binary, as well as initial support for wasm sections, symbols, and relocations.
Key changes in Wild Linker 0.9:
Support for linker plugins. Added support for linker plugin APIs, which is necessary for the linker-plugin LTO and compatibility with some GCC/GNU ld/Mold build scripts. Also fixed were some issues related to plugin callbacks, including whole-archive, ThinLTO, the open file limit, and dead code removal during LTO.
Major expansion of linker scripts support. The PROVIDE and PROVIDE_HIDDEN directives, ASSERT parsing and execution, support for MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K and M suffixes in numeric literals, logical, bitwise, and unary operators, and matching by input file names are implemented. This brings Wild closer to compatibility with complex link scripts often found in system software and low-level projects.
Improvements for RISC-V, AArch64, x86-64 and LoongArch64. Added RISC-V call relaxation, HI20 relaxation, R_RISCV_ALIGN, checking for conflicting ISA extensions, additional AArch64 relocations, range-extension thunks for AArch64, handling of a number of x86-64 relocations with relaxations, and range and alignment clarifications for LoongArch64.
New compatibility options. Added support for --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags, and the space-less form -o/path.
Generation of statically moving objects. Added support for creating static relocatables—intermediate object files that can still participate in further linking.
Performance improvements without focusing on a "fast" release. The authors explicitly note that 0.9 didn't include any major performance improvements, but there was no degradation either. Local optimizations include a fast path for non-global matchers in version scripts, a reduction in the number of atomic operations, parallel calculation of section and symbol addresses during relaxation scans, and reduced reprocessing of already resolved sections.
Many compatibility fixes. Fixed handling of weak undefined symbols, .ctors/.dtors, RELRO, version scripts, SFrame, IFUNC, --version/-v, undefined symbol errors, warnings, debug relocations, .eh_frame, SHT_SYMTAB_SHNDX, static linking of dynamic object, and a number of scenarios with linker scripts.
Documentation and project management. A code of conduct, LLM usage policy, governance documentation, a linker scripts support matrix, instructions for using -fuse-ld=wild with GCC 16.1, and installation via Brew have been added. The repository has also been moved to a separate GitHub organization, wild-linker.
At the moment Wild officially focused primarily on Linux and ELF. The project's README states support x86-64, ARM64, RISC-V riscv64gc and initial support LoongArch64 + Linux; can build static binaries, static-PIE, dynamically linked executables, and .so files, works with debug information, GNU jobserver, and some linker scripts. Incremental linking, more complex linker scripts, Mach-O, and Windows are currently classified as unrealized or unfinished opportunities.
In practical terms, Wild 0.9 expands compatibility with the existing build ecosystem, begins to expand beyond ELF, and adds support for scenarios that make the linker difficult to use in large C/C++ and mixed projects. For Rust developers, Wild remains interesting as a potential base for future incremental linking, and for system developers, as another fast competitor to GNU ld, LLD, and Mold.
Source: linux.org.ru
