Išleistas Laukinis jungiklis 0.9.0 — naujas didelio našumo susiejimo įrankis, parašytas „Rust“ kalba. Išleidimas paskelbtas „GitHub“. 23 gegužės 2026 metųProjektas pozicionuojamas kaip susiejimo priemonė, skirta paspartinti iteracinį kūrimą: autoriai galiausiai nori pasiekti laipsnišką susiejimą, nors dabartinėje versijoje jis dar nėra įdiegtas. Kodas platinamas pagal dvigubą licenciją. Apache 2.0 / MIT.
Pagrindinis „Wild 0.9“ pakeitimas yra palaikymas. Susiejimo įskiepio API, sąsaja, pristatyta „Gold“ susiejiklyje ir taip pat palaikoma „GNU ld“ ir „Mold“. „Wild“ tai atveria kelią susiejimo įskiepio LTO — susiejimo laiko optimizavimas naudojant susiejimo įskiepį. Kūrėjai konkrečiai nurodo, kad tai pirmiausia naudinga C, C++ ir mišraus kodo projektams, o gryni „Rust“ projektai paprastai atlieka LTO viduje. Šios funkcijos palaikymas vis dar turi žinomų problemų, o susiejimas per įskiepį gali būti lėtas.
Reikšminga 0.9 versijos darbo dalis buvo susijusi su pasirengimu perkelti „Wild“ už jo ribų. Linux/ELF. ELF specifinė logika buvo perkelta už abstrakcijų ribų ir pradėtas darbas su jos palaikymu. Mach-O и WebAssemblyŠios galimybės dar nėra paruoštos praktiniam naudojimui, tačiau pirmieji elementai jau atsirado: Mach-O analizavimas, sekcijų ir segmentų apdorojimas, simbolių lentelė, kodo parašas, FAT dvejetainis kodas, taip pat pradinis WASM sekcijų, simbolių ir perkėlimų palaikymas.
Svarbiausi „Wild Linker 0.9“ pakeitimai:
Palaikymas susiejimo įskiepiams. Pridėtas susiejimo įskiepio API palaikymas, kuris yra būtinas susiejimo įskiepio LTO ir suderinamumui su kai kuriais GCC/GNU ld/Mold kūrimo scenarijais. Taip pat ištaisytos kai kurios problemos, susijusios su įskiepio atšaukimais, įskaitant viso archyvo, ThinLTO, atvirų failų limitą ir neveikiančio kodo šalinimą LTO metu.
Didelis susiejimo scenarijų palaikymo išplėtimas. Įdiegtos PROVIDE ir PROVIDE_HIDDEN direktyvos, ASSERT analizavimas ir vykdymas, MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K ir M priesagų palaikymas skaitmeniniuose literaluose, loginiai, bitiniai ir unariniai operatoriai bei atitikmenų paieška pagal įvesties failų pavadinimus. Tai priartina „Wild“ prie suderinamumo su sudėtingais nuorodų scenarijais, dažnai randamais sistemos programinėje įrangoje ir žemo lygio projektuose.
RISC-V, AArch64, x86-64 ir LoongArch64 patobulinimai. Pridėtas RISC-V iškvietimų atsipalaidavimas, HI20 atsipalaidavimas, R_RISCV_ALIGN, konfliktuojančių ISA plėtinių tikrinimas, papildomi AArch64 perkėlimai, diapazono išplėtimo trumpi pakeitimai AArch64, kelių x86-64 perkėlimų su atsipalaidavimais apdorojimas ir diapazono bei lygiavimo paaiškinimai LoongArch64.
Naujos suderinamumo parinktys. Pridėtas palaikymas šioms kintamosioms: --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags ir formai be tarpų -o/path.
Statiškai judančių objektų generavimas. Pridėta palaikymas statinių perkeliamų failų – tarpinių objektų failų, kurie vis dar gali dalyvauti tolesniame susiejime – kūrimui.
Našumo patobulinimai, nesusitelkiant į „greitą“ išleidimą. Autoriai aiškiai pažymi, kad 0.9 versijoje nebuvo jokių esminių našumo patobulinimų, tačiau nebuvo ir pablogėjimo. Vietiniai optimizavimai apima greitą kelią neglobaliems atitikmenims versijų scenarijuose, atominių operacijų skaičiaus sumažinimą, lygiagretų sekcijų ir simbolių adresų skaičiavimą relaksacijos nuskaitymų metu ir jau išspręstų sekcijų pakartotinio apdorojimo sumažinimą.
Daug suderinamumo pataisymų. Ištaisytas silpnų neapibrėžtų simbolių, .ctors/.dtors, RELRO, versijų scenarijų, SFrame, IFUNC, --version/-v, neapibrėžtų simbolių klaidų, įspėjimų, derinimo perkėlimų, .eh_frame, SHT_SYMTAB_SHNDX, dinaminio objekto statinio susiejimo ir daugybės scenarijų su susiejimo scenarijais apdorojimas.
Dokumentacija ir projektų valdymas. Pridėtas elgesio kodeksas, LLM naudojimo politika, valdymo dokumentacija, susiejimo skriptų palaikymo matrica, instrukcijos, kaip naudoti -fuse-ld=wild su GCC 16.1, ir diegimas per „Brew“. Saugykla taip pat perkelta į atskirą „GitHub“ organizaciją – „wild-linker“.
Šiuo metu, Laukinis oficialiai daugiausia dėmesio skiriama Linux ir ELF. Projekto README būsenos palaiko x86-64, ARM64, RISC-V riscv64gc ir pradinė parama LoongArch64 apie Linux; gali kurti statinius dvejetainius failus, statinį PIE, dinamiškai susietus vykdomuosius failus ir .so failus, veikia su derinimo informacija, GNU užduočių serveriu ir kai kuriais susiejimo scenarijais. Prieauginis susiejimas, sudėtingesni susiejimo scenarijai, Mach-O ir Windows šiuo metu klasifikuojamos kaip neįgyvendintos arba neužbaigtos galimybės.
Praktiškai „Wild 0.9“ išplečia suderinamumą su esama kūrimo ekosistema, pradeda plėstis už ELF ribų ir prideda palaikymą scenarijams, dėl kurių susiejimo įrankį sunku naudoti dideliuose C/C++ ir mišriuose projektuose. „Rust“ kūrėjams „Wild“ išlieka įdomi kaip potenciali bazė būsimam laipsniškam susiejimui, o sistemų kūrėjams – kaip dar vienas greitas „GNU ld“, „LLD“ ir „Mold“ konkurentas.
Šaltinis: linux.org.ru
