Megjelent Vad Linker 0.9.0 — egy új, nagy teljesítményű linker, Rust nyelven írva. A kiadás megtalálható a GitHubon. 23 May 2026 évA projektet az iteratív fejlesztés felgyorsítását szolgáló linkerként pozicionálták: a szerzők végső soron inkrementális linkelést szeretnének elérni, bár ez a jelenlegi verzióban még nincs megvalósítva. A kód kettős licenc alatt kerül terjesztésre. Apache 2.0 / MIT.
A Wild 0.9 fő változása a támogatás. Linker bővítmény API, egy a Gold linkerben bevezetett, a GNU ld és a Mold által is támogatott felület. A Wild számára ez megnyitja az utat a következőhöz: linker-plugin LTO — linkelési idő optimalizálás egy linker pluginon keresztül. A fejlesztők kifejezetten kijelentik, hogy ez elsősorban C, C++ és vegyes kódú projektekhez hasznos, míg a tiszta Rust projektek jellemzően belsőleg hajtanak végre LTO-t. Ennek a funkciónak a támogatása továbbra is ismert problémákat okoz, és a pluginon keresztüli linkelés lassú lehet.
A 0.9-es verzióban végzett munka jelentős része a Wild átruházásának előkészületeihez kapcsolódott. Linux/ELF. Az ELF-specifikus logikát kihelyezték az absztrakciók keretein kívülre, és megkezdődött a támogatásának kidolgozása. Macsó и WebAssembleEzek a képességek még nem állnak készen a gyakorlati használatra, de az első elemek már megjelentek: Mach-O elemzés, szakasz- és szegmensfeldolgozás, szimbólumtábla, kódaláírás, fat bináris, valamint a wasm szakaszok, szimbólumok és áthelyezések kezdeti támogatása.
Főbb változások a Wild Linker 0.9-ben:
Linker bővítmények támogatása. Hozzáadva a linker plugin API-k támogatása, ami szükséges a linker-plugin LTO-jához és a kompatibilitáshoz néhány GCC/GNU ld/Mold build szkripttel. Kijavítottunk néhány, a plugin visszahívásaival kapcsolatos problémát is, beleértve a teljes archívumot, a ThinLTO-t, a nyitott fájlok korlátját és a halott kód eltávolítását LTO közben.
A linker szkriptek támogatásának jelentős bővítése. Megvalósították a PROVIDE és PROVIDE_HIDDEN direktívákat, az ASSERT elemzését és végrehajtását, a MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K és M utótagok támogatását a numerikus literálokban, a logikai, bitenkénti és unáris operátorokat, valamint a bemeneti fájlnevek szerinti egyeztetést. Ezáltal a Wild még jobban kompatibilis a rendszerszoftverekben és az alacsony szintű projektekben gyakran előforduló összetett linkszkriptekkel.
Fejlesztések RISC-V, AArch64, x86-64 és LoongArch64 szabványokhoz. Hozzáadva RISC-V hívás relaxáció, HI20 relaxáció, R_RISCV_ALIGN, ütköző ISA kiterjesztések ellenőrzése, további AArch64 áthelyezések, tartománykiterjesztési thunkok az AArch64-hez, számos x86-64 áthelyezés kezelése relaxációkkal, valamint tartomány- és igazítási pontosítások a LoongArch64-hez.
Új kompatibilitási lehetőségek. Hozzáadott támogatás a következő paraméterekhez: --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags, és a szóköz nélküli -o/path forma.
Statikusan mozgó objektumok generálása. Hozzáadott támogatás statikus áthelyezhető objektumok létrehozásához – ezek olyan köztes objektumfájlok, amelyek továbbra is részt vehetnek a további csatolásokban.
Teljesítményjavítások a „gyors” kiadásra való összpontosítás nélkül. A szerzők kifejezetten megjegyzik, hogy a 0.9-es verzió nem tartalmazott jelentős teljesítményjavulást, de romlás sem történt. A lokális optimalizációk magukban foglalják a nem globális illesztések gyors elérési útját a verziószkriptekben, az atomi műveletek számának csökkentését, a szakasz- és szimbólumcímek párhuzamos kiszámítását a relaxációs vizsgálatok során, valamint a már feloldott szakaszok újrafeldolgozásának csökkentését.
Számos kompatibilitási javítás. Kijavítottuk a gyenge, nem definiált szimbólumok, .ctors/.dtors fájlok, RELRO, verziószkriptek, SFrame, IFUNC, --version/-v, nem definiált szimbólumhibák, figyelmeztetések, hibakeresési áthelyezések, .eh_frame, SHT_SYMTAB_SHNDX fájlok, dinamikus objektumok statikus linkelése és számos, linkelő szkripteket tartalmazó forgatókönyv kezelését.
Dokumentáció és projektmenedzsment. Hozzáadtunk egy magatartási kódexet, LLM használati szabályzatot, irányítási dokumentációt, egy linker szkriptek támogatási mátrixát, utasításokat a -fuse-ld=wild kapcsoló GCC 16.1-gyel történő használatára, valamint a Brew-n keresztüli telepítést. A repository-t egy különálló GitHub szervezetbe, a wild-linkerbe is áthelyeztük.
Abban a pillanatban, Vadon hivatalosan elsősorban arra összpontosít Linux és az ELF. A projekt README fájlja támogatja a következőket: x86-64, ARM64, RISC-V riscv64gc és a kezdeti támogatás LoongArch64 on Linux; képes statikus bináris fájlok, statikus PIE, dinamikusan linkelt futtatható fájlok és .so fájlok létrehozására, hibakeresési információkkal, GNU jobserverrel és néhány linker szkripttel működik. Növekményes linkelés, összetettebb linker szkriptek, Mach-O és Windows jelenleg nem megvalósított vagy befejezetlen lehetőségekként vannak besorolva.
Gyakorlati szempontból a Wild 0.9 kibővíti a kompatibilitást a meglévő build ökoszisztémával, elkezd túllépni az ELF-en, és támogatást nyújt olyan forgatókönyvekhez, amelyek megnehezítik a linker használatát nagy C/C++ és vegyes projektekben. A Rust fejlesztők számára a Wild továbbra is érdekes, mint potenciális alap a jövőbeli inkrementális linkeléshez, a rendszerfejlesztők számára pedig mint a GNU ld, LLD és Mold egy másik gyors versenytársa.
Forrás: linux.org.ru
