Wild Linker 0.9

Er vond vrijlating plaats Wild Linker 0.9.0 — een nieuwe, krachtige linker geschreven in Rust. De release is te vinden op GitHub. 23 mei 2026 jaarHet project is opgezet als een koppelingstool om iteratieve ontwikkeling te versnellen: de auteurs willen uiteindelijk incrementele koppeling realiseren, hoewel dit nog niet is geïmplementeerd in de huidige versie. De code wordt gedistribueerd onder een dubbele licentie. Apache 2.0 / MIT.

De belangrijkste verandering in Wild 0.9 is de ondersteuning. Linker Plugin API, een interface die is geïntroduceerd in de Gold-linker en ook wordt ondersteund door GNU ld en Mold. Voor Wild opent dit de weg naar linker-plugin LTO — Linktijdoptimalisaties via een linker-plugin. De ontwikkelaars geven specifiek aan dat dit vooral nuttig is voor C-, C++- en gemengde code-projecten, terwijl pure Rust-projecten doorgaans LTO intern uitvoeren. De ondersteuning voor deze functie kent nog steeds bekende problemen en linken via de plugin kan traag zijn.

Een aanzienlijk deel van het werk in 0.9 had betrekking op de voorbereidingen voor de overdracht van Wild naar elders. Linux/ELF. ELF-specifieke logica is buiten de abstracties geplaatst en er is begonnen met de ondersteuning ervan. Macho и WebAssemblyDeze mogelijkheden zijn nog niet klaar voor praktisch gebruik, maar de eerste elementen zijn al verschenen: Mach-O-parsing, sectie- en segmentverwerking, symbolentabel, codesignatuur, fat binary, evenals initiële ondersteuning voor wasm-secties, symbolen en relocaties.

Belangrijkste wijzigingen in Wild Linker 0.9:

  • Ondersteuning voor linker-plugins. Er is ondersteuning toegevoegd voor API's van linkerplugins, wat nodig is voor de LTO van linkerplugins en compatibiliteit met sommige GCC/GNU ld/Mold-buildscripts. Ook zijn er enkele problemen opgelost met betrekking tot callbacks van plugins, waaronder die voor volledige archieven, ThinLTO, de limiet voor geopende bestanden en het verwijderen van dode code tijdens LTO.

  • Aanzienlijke uitbreiding van de ondersteuning voor linker-scripts. De PROVIDE- en PROVIDE_HIDDEN-richtlijnen, het parsen en uitvoeren van ASSERT-instructies, ondersteuning voor MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, de achtervoegsels K en M in numerieke literals, logische, bitwise en unaire operatoren, en het matchen op basis van bestandsnamen zijn geïmplementeerd. Dit brengt Wild dichter bij compatibiliteit met complexe linkscripts die vaak voorkomen in systeemsoftware en low-level projecten.

  • Verbeteringen voor RISC-V, AArch64, x86-64 en LoongArch64. Er zijn versoepelingen toegevoegd voor RISC-V-aanroepen, HI20-versoepeling, R_RISCV_ALIGN, controle op conflicterende ISA-extensies, extra AArch64-relocaties, thunks voor bereikuitbreiding voor AArch64, afhandeling van een aantal x86-64-relocaties met versoepelingen, en verduidelijkingen van bereik en uitlijning voor LoongArch64.

  • Nieuwe compatibiliteitsopties. Ondersteuning toegevoegd voor --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags en de vorm -o/path zonder spaties.

  • Genereren van statisch bewegende objecten. Er is ondersteuning toegevoegd voor het maken van statische, verplaatsbare objecten: tussenliggende objectbestanden die nog steeds kunnen deelnemen aan verdere koppelingen.

  • Prestatieverbeteringen zonder te focussen op een "snelle" release. De auteurs merken expliciet op dat versie 0.9 geen grote prestatieverbeteringen bevatte, maar er was ook geen sprake van verslechtering. Lokale optimalisaties omvatten een snelle route voor niet-globale matchers in versiescripts, een vermindering van het aantal atomaire bewerkingen, parallelle berekening van sectie- en symbooladressen tijdens relaxatiescans en minder herverwerking van reeds opgeloste secties.

  • Tal van compatibiliteitsverbeteringen. De afhandeling van zwakke ongedefinieerde symbolen, .ctors/.dtors, RELRO, versiescripts, SFrame, IFUNC, --version/-v, fouten met ongedefinieerde symbolen, waarschuwingen, debug-relocaties, .eh_frame, SHT_SYMTAB_SHNDX, statische koppeling van dynamische objecten en een aantal scenario's met linkerscripts is verbeterd.

  • Documentatie en projectmanagement. Een gedragscode, een gebruiksbeleid voor LLM, governance-documentatie, een ondersteuningsmatrix voor linker-scripts, instructies voor het gebruik van -fuse-ld=wild met GCC 16.1 en installatie via Brew zijn toegevoegd. De repository is tevens verplaatst naar een aparte GitHub-organisatie, wild-linker.

momenteel Wild officieel primair gericht op Linux en ELF. In de README van het project staat dat het ondersteuning biedt. x86-64, ARM64, RISC-V riscv64gc en initiële ondersteuning LoongArch64 op LinuxKan statische binaire bestanden, statische PIE, dynamisch gekoppelde uitvoerbare bestanden en .so-bestanden bouwen, werkt met debug-informatie, GNU JobServer en enkele linker-scripts. Incrementeel linken, complexere linker-scripts, Mach-O en Windows worden momenteel geclassificeerd als niet-gerealiseerde of onafgemaakte kansen.

In de praktijk breidt Wild 0.9 de compatibiliteit met het bestaande build-ecosysteem uit, begint het verder te gaan dan ELF en voegt het ondersteuning toe voor scenario's die het gebruik van de linker lastig maken in grote C/C++- en gemengde projecten. Voor Rust-ontwikkelaars blijft Wild interessant als een potentiële basis voor toekomstige incrementele linking, en voor systeemontwikkelaars als een snelle concurrent voor GNU ld, LLD en Mold.

Bron: linux.org.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster