Divoký linker 0.9

Uvolnění proběhlo Divoký linker 0.9.0 — nový vysoce výkonný linker napsaný v Rustu. Verze je uvedena na GitHubu. 23 května 2026 rokProjekt je prezentován jako linker pro urychlení iterativního vývoje: autoři chtějí v konečném důsledku dosáhnout inkrementálního linkování, ačkoli to v aktuální verzi ještě není implementováno. Kód je distribuován pod duální licencí. Apache 2.0 / MIT.

Hlavní změnou ve Wild 0.9 je podpora API pluginu linkeru, rozhraní zavedené v linkeru Gold a podporované také GNU ld a Mold. Pro Wild to otevírá cestu k linker-plugin LTO — optimalizace doby linkování pomocí pluginu linkeru. Vývojáři konkrétně uvádějí, že je to primárně užitečné pro projekty v jazyce C, C++ a smíšeném kódu, zatímco čisté projekty v Rustu obvykle provádějí LTO interně. Podpora této funkce má stále známé problémy a linkování pomocí pluginu může být pomalé.

Významná část práce ve verzi 0.9 se týkala příprav na převod Wild za hranice... Linux/ELF. Logika specifická pro ELF byla přesunuta mimo abstrakce a začala práce na její podpoře. Mach-O и WebAssemblyTyto funkce ještě nejsou připraveny k praktickému využití, ale první prvky se již objevily: parsování Mach-O, zpracování sekcí a segmentů, tabulka symbolů, podpis kódu, binární soubor FAT a také počáteční podpora pro sekce, symboly a relokace wasm.

Klíčové změny ve Wild Linkeru 0.9:

  • Podpora pluginů linkerů. Přidána podpora API pluginů linkerů, která je nezbytná pro LTO linker-pluginů a kompatibilitu s některými skripty pro sestavení GCC/GNU ld/Mold. Opraveny byly také některé problémy související s zpětnými voláními pluginů, včetně celého archivu, ThinLTO, limitu otevřených souborů a odstraňování nefunkčního kódu během LTO.

  • Významné rozšíření podpory linkerových skriptů. Jsou implementovány direktivy PROVIDE a PROVIDE_HIDDEN, parsování a provádění ASSERT, podpora pro přípony MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K a M v numerických literálech, logické, bitové a unární operátory a porovnávání podle názvů vstupních souborů. To přibližuje Wild kompatibilitě se složitými linkovými skripty, které se často nacházejí v systémovém softwaru a nízkoúrovňových projektech.

  • Vylepšení pro RISC-V, AArch64, x86-64 a LoongArch64. Přidána relaxace volání RISC-V, relaxace HI20, R_RISCV_ALIGN, kontrola konfliktních rozšíření ISA, další relokace AArch64, thunky rozšíření rozsahu pro AArch64, zpracování řady relokací x86-64 s relaxacemi a vyjasnění rozsahu a zarovnání pro LoongArch64.

  • Nové možnosti kompatibility. Přidána podpora pro --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 tvar -o/path bez mezer.

  • Generování staticky se pohybujících objektů. Přidána podpora pro vytváření statických přemístitelných objektů – mezilehlých objektových souborů, které se stále mohou podílet na dalším linkování.

  • Vylepšení výkonu bez zaměření na „rychlé“ vydání. Autoři výslovně poznamenávají, že verze 0.9 nezahrnovala žádná zásadní vylepšení výkonu, ale nedošlo ani k žádnému zhoršení. Lokální optimalizace zahrnují rychlou cestu pro neglobální porovnávače ve verzových skriptech, snížení počtu atomických operací, paralelní výpočet adres sekcí a symbolů během relaxačních skenů a snížené opětovné zpracování již vyřešených sekcí.

  • Mnoho oprav kompatibility. Opraveno zpracování slabých nedefinovaných symbolů, .ctors/.dtors, RELRO, skriptů verzí, SFrame, IFUNC, --version/-v, chyb nedefinovaných symbolů, varování, ladicích relokací, .eh_frame, SHT_SYMTAB_SHNDX, statického linkování dynamických objektů a řady scénářů s linkerovými skripty.

  • Dokumentace a projektový management. Byl přidán kodex chování, zásady používání LLM, dokumentace governance, matice podpory linkerových skriptů, pokyny pro použití -fuse-ld=wild s GCC 16.1 a instalaci přes Brew. Repozitář byl také přesunut do samostatné organizace GitHub, wild-linker.

v současné době Wild oficiálně zaměřený především na Linux a ELF. Soubor README projektu uvádí podporu x86-64, ARM64, RISC-V riscv64gc a počáteční podporu LoongArch64 na Linux; umí vytvářet statické binární soubory, static-PIE, dynamicky linkované spustitelné soubory a soubory .so, pracuje s ladicími informacemi, GNU jobserverem a některými linkerovými skripty. Inkrementální linkování, složitější linkerové skripty, Mach-O a Windows jsou v současné době klasifikovány jako nerealizované nebo nedokončené příležitosti.

V praxi Wild 0.9 rozšiřuje kompatibilitu se stávajícím ekosystémem sestavení, začíná se rozšiřovat za hranice ELF a přidává podporu pro scénáře, které ztěžují použití linkeru ve velkých C/C++ a smíšených projektech. Pro vývojáře v Rustu zůstává Wild zajímavý jako potenciální základna pro budoucí inkrementální linkování a pro vývojáře systémů jako další rychlý konkurent GNU ld, LLD a Mold.

Zdroj: linux.org.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster