Uskutočnilo sa uvoľnenie Divoký linker 0.9.0 — nový vysokovýkonný linker napísaný v Ruste. Vydanie je uvedené na GitHube. 23 mája 2026 rokProjekt je umiestnený ako linker na urýchlenie iteratívneho vývoja: autori chcú v konečnom dôsledku dosiahnuť inkrementálne linkovanie, hoci to v aktuálnej verzii ešte nie je implementované. Kód je distribuovaný pod dvojitou licenciou. Apache 2.0 / MIT.
Hlavnou zmenou vo Wild 0.9 je podpora API doplnku Linker, rozhranie zavedené v linkeri Gold a podporované aj v GNU ld a Mold. Pre Wild to otvára cestu k linker-plugin LTO — optimalizácia času linkovania pomocou pluginu linkera. Vývojári výslovne uvádzajú, že je to primárne užitočné pre projekty v jazykoch C, C++ a zmiešanom kóde, zatiaľ čo projekty v jazyku Rust zvyčajne vykonávajú LTO interne. Podpora tejto funkcie má stále známe problémy a linkovanie prostredníctvom pluginu môže byť pomalé.
Významná časť práce vo verzii 0.9 sa týkala príprav na presun Wild za hranice... Linux/ELF. Logika špecifická pre ELF bola presunutá mimo abstrakcií a začala sa práca na podpore. Mach-O и WebAssemblyTieto funkcie ešte nie sú pripravené na praktické využitie, ale prvé prvky sa už objavili: parsovanie Mach-O, spracovanie sekcií a segmentov, tabuľka symbolov, podpis kódu, binárny súbor FAT, ako aj počiatočná podpora pre sekcie, symboly a premiestnenia wasm.
Kľúčové zmeny vo Wild Linkeri 0.9:
Podpora pre linker pluginy. Pridaná podpora pre API rozhraní linker-plugin, ktorá je nevyhnutná pre LTO linker-plugin a kompatibilitu s niektorými skriptami GCC/GNU ld/Mold. Opravené boli aj niektoré problémy súvisiace s volaniami pluginov, vrátane celého archívu, ThinLTO, limitu otvorených súborov a odstraňovania nefunkčného kódu počas LTO.
Výrazné rozšírenie podpory linkerových skriptov. Implementované sú direktívy PROVIDE a PROVIDE_HIDDEN, parsovanie a vykonávanie ASSERT, podpora pre prípony MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K a M v numerických literáloch, logické, bitové a unárne operátory a porovnávanie podľa názvov vstupných súborov. To približuje Wild ku kompatibilite s komplexnými linkovými skriptami, ktoré sa často nachádzajú v systémovom softvéri a nízkoúrovňových projektoch.
Vylepšenia pre RISC-V, AArch64, x86-64 a LoongArch64. Pridané uvoľnenie volaní RISC-V, uvoľnenie HI20, R_RISCV_ALIGN, kontrola konfliktných rozšírení ISA, ďalšie relokácie AArch64, thunky rozšírenia rozsahu pre AArch64, spracovanie viacerých relokácií x86-64 s uvoľneniami a objasnenia rozsahu a zarovnania pre LoongArch64.
Nové možnosti kompatibility. Pridaná podpora pre --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags a bezmedzovú formu -o/path.
Generovanie staticky sa pohybujúcich objektov. Pridaná podpora pre vytváranie statických premiestniteľných súborov – prechodných objektových súborov, ktoré sa stále môžu podieľať na ďalšom linkovaní.
Vylepšenia výkonu bez zamerania sa na „rýchle“ vydanie. Autori výslovne poznamenávajú, že verzia 0.9 nezahŕňala žiadne zásadné zlepšenia výkonu, ale nedošlo ani k žiadnemu zhoršeniu. Lokálne optimalizácie zahŕňajú rýchlu cestu pre neglobálne porovnávače vo verziách skriptov, zníženie počtu atomických operácií, paralelný výpočet adries sekcií a symbolov počas relaxačných skenovaní a zníženie opätovného spracovania už vyriešených sekcií.
Mnoho opráv kompatibility. Opravené spracovanie slabých nedefinovaných symbolov, .ctors/.dtors, RELRO, skriptov verzií, SFrame, IFUNC, --version/-v, chýb nedefinovaných symbolov, upozornení, premiestnení ladenia, .eh_frame, SHT_SYMTAB_SHNDX, statického linkovania dynamických objektov a viacerých scenárov so skriptami linkerov.
Dokumentácia a riadenie projektov. Bol pridaný kódex správania, zásady používania LLM, dokumentácia riadenia, matica podpory pre linkerové skripty, pokyny na používanie -fuse-ld=wild s GCC 16.1 a inštaláciu cez Brew. Repozitár bol tiež presunutý do samostatnej organizácie GitHub, wild-linker.
V súčasnej dobe, Divoký oficiálne zamerané predovšetkým na Linux a ELF. Súbor README projektu uvádza podporu x86-64, ARM64, RISC-V riscv64gc a počiatočnú podporu LoongArch64 na Linux; dokáže vytvárať statické binárne súbory, static-PIE, dynamicky linkované spustiteľné súbory a súbory .so, pracuje s ladiacimi informáciami, GNU jobserverom a niektorými linkerovými skriptami. Inkrementálne linkovanie, zložitejšie linkerové skripty, Mach-O a Windows sú v súčasnosti klasifikované ako nerealizované alebo nedokončené príležitosti.
V praxi Wild 0.9 rozširuje kompatibilitu s existujúcim ekosystémom zostavovania, začína sa rozširovať za hranice ELF a pridáva podporu pre scenáre, ktoré sťažujú použitie linkera vo veľkých C/C++ a zmiešaných projektoch. Pre vývojárov Rustu zostáva Wild zaujímavý ako potenciálny základ pre budúce inkrementálne linkovanie a pre vývojárov systémov ako ďalší rýchly konkurent pre GNU ld, LLD a Mold.
Zdroj: linux.org.ru
