Vad Linker 0.9

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

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster