Divoký linker 0.9

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

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster