Løslatt Vill lenker 0.9.0 — en ny høytytende linker skrevet i Rust. Utgivelsen er listet på GitHub. 23 May 2026 årProsjektet er posisjonert som en lenker for å akselerere iterativ utvikling: forfatterne ønsker til syvende og sist å oppnå trinnvis lenking, selv om det ennå ikke er implementert i den nåværende versjonen. Koden distribueres under en dobbel lisens. Apache 2.0 / MIT.
Hovedendringen i Wild 0.9 er støtte Linker-plugin-API, et grensesnitt introdusert i Gold-lenkeren og også støttet av GNU ld og Mold. For Wild åpner dette veien til linker-plugin LTO — optimalisering av koblingstid via en koblingsplugin. Utviklerne oppgir spesifikt at dette primært er nyttig for C-, C++- og blandet kode-prosjekter, mens rene Rust-prosjekter vanligvis utfører LTO internt. Støtte for denne funksjonen har fortsatt kjente problemer, og kobling via plugin-modulen kan være treg.
En betydelig del av arbeidet i 0.9 var relatert til forberedelser til overføringen av Wild utover Linux/ELF. ELF-spesifikk logikk er flyttet utenfor abstraksjonene, og arbeidet med støtte har startet. Mach-O и WebAssemblyDisse funksjonene er ennå ikke klare for praktisk bruk, men de første elementene har allerede dukket opp: Mach-O-parsing, seksjons- og segmentbehandling, symboltabell, kodesignatur, fat binær, samt innledende støtte for wasm-seksjoner, symboler og relokaliseringer.
Viktige endringer i Wild Linker 0.9:
Støtte for linker-plugins. La til støtte for API-er for linker-plugin, som er nødvendig for linker-plugin LTO, og kompatibilitet med noen GCC/GNU ld/Mold-byggeskript. Noen problemer knyttet til tilbakekallinger av plugin-moduler ble også rettet, inkludert hele arkivet, ThinLTO, grensen for åpne filer og fjerning av død kode under LTO.
Stor utvidelse av støtte for linkerskript. Direktivene PROVIDE og PROVIDE_HIDDEN, ASSERT-parsing og -utførelse, støtte for suffikser for MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K og M i numeriske literaler, logiske, bitvise og unære operatorer, og matching etter input-filnavn er implementert. Dette bringer Wild nærmere kompatibilitet med komplekse lenkeskript som ofte finnes i systemprogramvare og lavnivåprosjekter.
Forbedringer for RISC-V, AArch64, x86-64 og LoongArch64. La til RISC-V-kallrelaksasjon, HI20-relaksasjon, R_RISCV_ALIGN, kontroll av motstridende ISA-utvidelser, ytterligere AArch64-flyttinger, rekkeviddeutvidelsesthunks for AArch64, håndtering av en rekke x86-64-flyttinger med relaksasjoner, og avklaringer av rekkevidde og justering for LoongArch64.
Nye kompatibilitetsalternativer. La til støtte 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 og den mellomromsløse formen -o/path.
Generering av statisk bevegelige objekter. La til støtte for å opprette statiske flyttbare filer – mellomliggende objektfiler som fortsatt kan delta i videre kobling.
Ytelsesforbedringer uten å fokusere på en "rask" utgivelse. Forfatterne bemerker eksplisitt at 0.9 ikke inkluderte noen større ytelsesforbedringer, men det var heller ingen forringelse. Lokale optimaliseringer inkluderer en raskere prosess for ikke-globale samsvarere i versjonsskript, en reduksjon i antall atomoperasjoner, parallell beregning av seksjons- og symboladresser under relaksasjonsskanninger og redusert reprosessering av allerede løste seksjoner.
Mange kompatibilitetsrettelser. Fikset håndtering av svake udefinerte symboler, .ctors/.dtors, RELRO, versjonsskript, SFrame, IFUNC, --version/-v, udefinerte symbolfeil, advarsler, feilsøkingsflyttinger, .eh_frame, SHT_SYMTAB_SHNDX, statisk kobling av dynamisk objekt og en rekke scenarier med lenkerskript.
Dokumentasjon og prosjektledelse. En etisk kodeks, brukspolicy for LLM, styringsdokumentasjon, en støttematrise for linkerskript, instruksjoner for bruk av -fuse-ld=wild med GCC 16.1 og installasjon via Brew er lagt til. Repositoriet er også flyttet til en egen GitHub-organisasjon, wild-linker.
foreløpig Wild offisielt fokusert primært på Linux og ELF. Prosjektets README-fil støtter x86-64, ARM64, RISC-V riscv64gc og innledende støtte LoongArch64 på Linux; kan bygge statiske binærfiler, statisk-PIE, dynamisk lenkede kjørbare filer og .so-filer, fungerer med feilsøkingsinformasjon, GNU-jobbserver og noen lenkeskript. Trinnvis lenking, mer komplekse lenkeskript, Mach-O og Windows er for tiden klassifisert som urealiserte eller uferdige muligheter.
I praksis utvider Wild 0.9 kompatibiliteten med det eksisterende byggeøkosystemet, begynner å ekspandere utover ELF, og legger til støtte for scenarier som gjør lenkeren vanskelig å bruke i store C/C++ og blandede prosjekter. For Rust-utviklere er Wild fortsatt interessant som en potensiell base for fremtidig inkrementell lenking, og for systemutviklere, som en annen rask konkurrent til GNU ld, LLD og Mold.
Kilde: linux.org.ru
