Udgivet Vild Linker 0.9.0 — en ny højtydende linker skrevet i Rust. Udgivelsen er listet på GitHub. 23 May 2026 årProjektet er positioneret som en linker til at accelerere iterativ udvikling: forfatterne ønsker i sidste ende at opnå trinvis linkning, selvom det endnu ikke er implementeret i den nuværende version. Koden distribueres under en dobbeltlicens. Apache 2.0 / MIT.
Den primære ændring i Wild 0.9 er understøttelse Linker Plugin API, en grænseflade introduceret i Gold-linkeren og også understøttet af GNU ld og Mold. For Wild åbner dette vejen for linker-plugin LTO — linktidsoptimeringer via et linker-plugin. Udviklerne angiver specifikt, at dette primært er nyttigt til C-, C++- og mixed-code-projekter, mens rene Rust-projekter typisk udfører LTO internt. Understøttelse af denne funktion har stadig kendte problemer, og linkning via plugin kan være langsom.
En betydelig del af arbejdet i 0.9 var relateret til forberedelserne til overførslen af Wild videre Linux/ELF. ELF-specifik logik er blevet flyttet uden for abstraktionerne, og arbejdet med understøttelse er begyndt. Mach-O и WebAssemblyDisse funktioner er endnu ikke klar til praktisk brug, men de første elementer er allerede dukket op: Mach-O-parsing, sektions- og segmentbehandling, symboltabel, kodesignatur, fat binær, samt indledende understøttelse af wasm-sektioner, symboler og relokationer.
Vigtige ændringer i Wild Linker 0.9:
Understøttelse af linker-plugins. Tilføjet understøttelse af linker-plugin API'er, hvilket er nødvendigt for linker-plugin LTO og kompatibilitet med nogle GCC/GNU ld/Mold byggescripts. Der blev også rettet nogle problemer relateret til plugin-tilbagekald, herunder whole-archive, ThinLTO, grænsen for åbne filer og fjernelse af død kode under LTO.
Stor udvidelse af understøttelse af linker-scripts. PROVIDE- og PROVIDE_HIDDEN-direktiverne, ASSERT-parsing og -udførelse, understøttelse af MEMORY-, ORIGIN-, LENGTH-, LOADADDR-, ALIGNOF-, SEGMENT_START-, K- og M-suffikser i numeriske literaler, logiske, bitvise og unære operatorer samt matchning via inputfilnavne er implementeret. Dette bringer Wild tættere på kompatibilitet med komplekse linkscripts, der ofte findes i systemsoftware og lavniveauprojekter.
Forbedringer til RISC-V, AArch64, x86-64 og LoongArch64. Tilføjet RISC-V kaldsrelaksation, HI20-relaksation, R_RISCV_ALIGN, kontrol for modstridende ISA-udvidelser, yderligere AArch64-flytninger, range-extension thunks til AArch64, håndtering af et antal x86-64-flytninger med relaksationer og præciseringer af rækkevidde og justering for LoongArch64.
Nye kompatibilitetsmuligheder. Tilføjet understøttelse af --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 mellemrumsløse form -o/path.
Generering af statisk bevægelige objekter. Tilføjet understøttelse af oprettelse af statiske flytbare filer – mellemliggende objektfiler, der stadig kan deltage i yderligere sammenkædning.
Forbedringer af ydeevne uden fokus på en "hurtig" udgivelse. Forfatterne bemærker eksplicit, at 0.9 ikke indeholdt nogen større forbedringer af ydeevnen, men der var heller ingen forringelse. Lokale optimeringer inkluderer en hurtigere proces til ikke-globale matchere i versionsskripter, en reduktion i antallet af atomare operationer, parallel beregning af sektions- og symboladresser under relaksationsscanninger og reduceret genbehandling af allerede løste sektioner.
Mange kompatibilitetsrettelser. Rettelse af håndtering af svage udefinerede symboler, .ctors/.dtors, RELRO, versionsscripts, SFrame, IFUNC, --version/-v, udefinerede symbolfejl, advarsler, debug-flytninger, .eh_frame, SHT_SYMTAB_SHNDX, statisk linkning af dynamisk objekt og en række scenarier med linkerscripts.
Dokumentation og projektledelse. En adfærdskodeks, en brugspolitik for LLM, dokumentation for styring, en supportmatrix for linker-scripts, instruktioner til brug af -fuse-ld=wild med GCC 16.1 og installation via Brew er blevet tilføjet. Arkivet er også blevet flyttet til en separat GitHub-organisation, wild-linker.
I øjeblikket Wild officielt primært fokuseret på Linux og ELF. Projektets README-fil understøtter x86-64, ARM64, RISC-V riscv64gc og indledende støtte LoongArch64 på Linux; kan bygge statiske binære filer, statisk-PIE, dynamisk linkede eksekverbare filer og .so-filer, arbejder med debug-information, GNU jobserver og nogle linker-scripts. Trinvis linkning, mere komplekse linker-scripts, Mach-O og Windows er i øjeblikket klassificeret som urealiserede eller uafsluttede muligheder.
I praksis udvider Wild 0.9 kompatibiliteten med det eksisterende byggeøkosystem, begynder at udvide sig ud over ELF og tilføjer understøttelse af scenarier, der gør linkeren vanskelig at bruge i store C/C++ og blandede projekter. For Rust-udviklere forbliver Wild interessant som en potentiel base for fremtidig inkrementel linkning, og for systemudviklere som en anden hurtig konkurrent til GNU ld, LLD og Mold.
Kilde: linux.org.ru
