Släppte Vild länkare 0.9.0 — en ny högpresterande länkare skriven i Rust. Utgåvan finns listad på GitHub. 23 maj 2026 årProjektet positioneras som en länkare för att accelerera iterativ utveckling: författarna vill i slutändan uppnå stegvis länkning, även om det ännu inte är implementerat i den nuvarande versionen. Koden distribueras under en dubbel licens. Apache 2.0 / MIT.
Den största förändringen i Wild 0.9 är stödet Länkarinsticksprogram API, ett gränssnitt som introducerades i Gold-länkaren och som även stöds av GNU ld och Mold. För Wild öppnar detta vägen för länkar-plugin LTO — länktidsoptimeringar via ett länkartillägg. Utvecklarna anger specifikt att detta främst är användbart för C-, C++- och blandkodsprojekt, medan rena Rust-projekt vanligtvis utför LTO internt. Stöd för den här funktionen har fortfarande kända problem, och länkning via tillägget kan vara långsam.
En betydande del av arbetet i 0.9 var relaterat till förberedelser för överföringen av Wild bortom Linux/ELF. ELF-specifik logik har flyttats utanför abstraktionerna, och arbetet med stöd har påbörjats. Mach-O и WebAssemblyDessa funktioner är ännu inte redo för praktisk användning, men de första elementen har redan dykt upp: Mach-O-parsning, sektions- och segmentbearbetning, symboltabell, kodsignatur, fat binär, samt initialt stöd för wasm-sektioner, symboler och omlokaliseringar.
Viktiga förändringar i Wild Linker 0.9:
Stöd för länkar-plugins. Lade till stöd för länkarplugin-API:er, vilket är nödvändigt för länkarplugin-LTO och kompatibilitet med vissa GCC/GNU ld/Mold-byggskript. Åtgärdade även vissa problem relaterade till plugin-återanrop, inklusive hela arkivet, ThinLTO, gränsen för öppna filer och borttagning av död kod under LTO.
Stor utökning av stöd för länkskript. Direktiven PROVIDE och PROVIDE_HIDDEN, ASSERT-parsning och exekvering, stöd för suffixen MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K och M i numeriska literaler, logiska, bitvisa och unära operatorer, samt matchning med inmatade filnamn implementeras. Detta gör Wild mer kompatibel med komplexa länkskript som ofta finns i systemprogramvara och lågnivåprojekt.
Förbättringar för RISC-V, AArch64, x86-64 och LoongArch64. Lade till RISC-V-anropsrelaxation, HI20-relaxation, R_RISCV_ALIGN, kontroll av konflikterande ISA-tillägg, ytterligare AArch64-omlokaliseringar, range-extension-thunks för AArch64, hantering av ett antal x86-64-omlokaliseringar med relaxationer, och förtydliganden av intervall och justering för LoongArch64.
Nya kompatibilitetsalternativ. Lade till stöd för --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags och den mellanslagsfria formen -o/path.
Generering av statiskt rörliga objekt. Lade till stöd för att skapa statiska flyttbara filer – mellanliggande objektfiler som fortfarande kan delta i vidare länkning.
Prestandaförbättringar utan fokus på en "snabb" utgåva. Författarna noterar uttryckligen att 0.9 inte innehöll några större prestandaförbättringar, men det skedde inte heller någon försämring. Lokala optimeringar inkluderar en snabbare väg för icke-globala matchare i versionsskript, en minskning av antalet atomära operationer, parallell beräkning av sektions- och symboladresser under relaxationsskanningar och minskad ombearbetning av redan upplösta sektioner.
Många kompatibilitetsfixar. Åtgärdade hantering av svaga odefinierade symboler, .ctors/.dtors, RELRO, versionsskript, SFrame, IFUNC, --version/-v, odefinierade symbolfel, varningar, felsökningsflyttningar, .eh_frame, SHT_SYMTAB_SHNDX, statisk länkning av dynamiska objekt och ett antal scenarier med länkarskript.
Dokumentation och projektledning. En uppförandekod, användningspolicy för LLM, styrningsdokumentation, en supportmatris för länkskript, instruktioner för att använda -fuse-ld=wild med GCC 16.1 och installation via Brew har lagts till. Arkivet har också flyttats till en separat GitHub-organisation, wild-linker.
För tillfället Vild officiellt främst inriktad på Linux och ELF. Projektets README-fil anger stöd x86-64, ARM64, RISC-V riscv64gc och initialt stöd LoongArch64 på Linux; kan bygga statiska binärfiler, statisk-PIE, dynamiskt länkade körbara filer och .so-filer, arbetar med felsökningsinformation, GNU-jobbserver och vissa länkskript. Stegvis länkning, mer komplexa länkskript, Mach-O och Windows klassificeras för närvarande som orealiserade eller oavslutade möjligheter.
I praktiken utökar Wild 0.9 kompatibiliteten med det befintliga byggekosystemet, börjar expandera bortom ELF och lägger till stöd för scenarier som gör länkaren svår att använda i stora C/C++ och blandade projekt. För Rust-utvecklare är Wild fortfarande intressant som en potentiell bas för framtida inkrementell länkning, och för systemutvecklare, som ytterligare en snabb konkurrent till GNU ld, LLD och Mold.
Källa: linux.org.ru
