Chiqarilgan Yovvoyi bog'lovchi 0.9.0 — Rust tilida yozilgan yangi yuqori samarali bogʻlovchi. Nashr GitHub’da keltirilgan. 23 May 2026 yilLoyiha iterativ rivojlanishni tezlashtirish uchun bog'lovchi sifatida joylashtirilgan: mualliflar oxir-oqibat bosqichma-bosqich bog'lanishga erishishni xohlashadi, garchi u hozirgi versiyada hali amalga oshirilmagan bo'lsa ham. Kod ikki tomonlama litsenziya asosida tarqatiladi. Apache 2.0 / MIT.
Wild 0.9 dagi asosiy o'zgarish qo'llab-quvvatlashdir Linker plagini API'si, Gold linkerda taqdim etilgan va GNU ld va Mold tomonidan qo'llab-quvvatlanadigan interfeys. Wild uchun bu yo'l ochadi havola-plagin LTO — havola plagini orqali havola vaqtini optimallashtirish. Ishlab chiquvchilar bu asosan C, C++ va aralash kodli loyihalar uchun foydali ekanligini, sof Rust loyihalari esa odatda ichki LTO ni bajarayotganini ta'kidlaydilar. Ushbu funksiyani qo'llab-quvvatlash hali ham ma'lum muammolarga ega va plagin orqali havola qilish sekin bo'lishi mumkin.
0.9-bo'limdagi ishning katta qismi Wildni boshqa hududga ko'chirishga tayyorgarlik bilan bog'liq edi Linux/ELF. ELFga xos mantiq abstraksiyalardan tashqariga ko'chirildi va qo'llab-quvvatlash ustida ish boshlandi. Mach-O и WebAssemblyBu imkoniyatlar hali amaliy foydalanishga tayyor emas, ammo birinchi elementlar allaqachon paydo bo'lgan: Mach-O tahlili, bo'lim va segmentni qayta ishlash, belgilar jadvali, kod imzosi, yog'li ikkilik, shuningdek, wasm bo'limlari, belgilari va ko'chirishlar uchun dastlabki qo'llab-quvvatlash.
Wild Linker 0.9 dagi asosiy o'zgarishlar:
Bog'lovchi plaginlarini qo'llab-quvvatlash. Linker-plagin LTO va ba'zi GCC/GNU ld/Mold yaratish skriptlari bilan moslik uchun zarur bo'lgan linker plagin API'larini qo'llab-quvvatlash qo'shildi. Shuningdek, plaginlarni qayta chaqirish bilan bog'liq ba'zi muammolar, jumladan, butun arxiv, ThinLTO, ochiq fayl chegarasi va LTO paytida o'lik kodni olib tashlash bilan bog'liq muammolar ham hal qilindi.
Bog'lovchi skriptlarni qo'llab-quvvatlashning katta kengayishi. PROVIDE va PROVIDE_HIDDEN direktivalari, ASSERT tahlili va bajarilishi, MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, raqamli harflardagi K va M qo'shimchalarini qo'llab-quvvatlash, mantiqiy, bit va birlik operatorlari hamda kirish fayl nomlari bo'yicha moslashtirish amalga oshirildi. Bu Wildni tizim dasturlari va past darajadagi loyihalarda ko'pincha uchraydigan murakkab havola skriptlari bilan moslikka yaqinlashtiradi.
RISC-V, AArch64, x86-64 va LoongArch64 uchun yaxshilanishlar. RISC-V chaqiruvlarini yengillashtirish, HI20 yengillashtirish, R_RISCV_ALIGN, qarama-qarshi ISA kengaytmalarini tekshirish, qo'shimcha AArch64 ko'chirishlari, AArch64 uchun diapazonni kengaytirish sozlamalari, yengillashtirishlar bilan bir qator x86-64 ko'chirishlarini qayta ishlash va LoongArch64 uchun diapazon va hizalanishni aniqlashtirish qo'shildi.
Yangi moslik imkoniyatlari. --dependency-file, --usuliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags va bo'sh joysiz -o/path shakli uchun qo'llab-quvvatlash qo'shildi.
Statik harakatlanuvchi obyektlarni yaratish. Statik ko'chiriladigan fayllarni yaratish uchun qo'llab-quvvatlash qo'shildi - bu hali ham keyingi bog'lanishlarda ishtirok eta oladigan oraliq obyekt fayllari.
"Tez" chiqarilishga e'tibor qaratmasdan ishlashni yaxshilash. Mualliflar 0.9 versiyasida hech qanday katta ishlash yaxshilanishlari yo'qligini aniq ta'kidlaydilar, ammo bunda ham hech qanday pasayish kuzatilmadi. Mahalliy optimallashtirishlarga versiya skriptlarida global bo'lmagan moslashtiruvchilar uchun tezkor yo'l, atom operatsiyalari sonining kamayishi, relaksatsiya skanerlash paytida bo'lim va belgi manzillarini parallel hisoblash va allaqachon hal qilingan bo'limlarni qayta ishlashning kamayishi kiradi.
Ko'p moslik tuzatishlari. Zaif aniqlanmagan belgilar, .ctors/.dtors, RELRO, versiya skriptlari, SFrame, IFUNC, --version/-v, aniqlanmagan belgi xatolari, ogohlantirishlar, disk raskadrovka ko'chirmalari, .eh_frame, SHT_SYMTAB_SHNDX, dinamik obyektning statik bog'lanishi va bog'lovchi skriptlar bilan bir qator stsenariylarni qayta ishlashdagi xatolar tuzatildi.
Hujjatlar va loyiha boshqaruvi. Xulq-atvor kodeksi, LLM foydalanish siyosati, boshqaruv hujjatlari, bog'lovchi skriptlarni qo'llab-quvvatlash matritsasi, GCC 16.1 bilan -fuse-ld=wild dan foydalanish bo'yicha ko'rsatmalar va Brew orqali o'rnatish qo'shildi. Repozitoriya shuningdek, alohida GitHub tashkiloti, wild-linker ga ko'chirildi.
Ayni shu paytda yovvoyi rasman asosan e'tibor qaratgan Linux va ELF. Loyihaning README qo'llab-quvvatlashini bildiradi x86-64, ARM64, RISC-V riscv64gc va dastlabki yordam LoongArch64 haqida Linux; statik ikkilik fayllar, statik-PIE, dinamik ravishda bog'langan bajariladigan fayllar va .so fayllarini yaratishi mumkin, disk raskadrovka ma'lumotlari, GNU ish serveri va ba'zi bog'lovchi skriptlar bilan ishlaydi. Qo'shimcha bog'lanish, murakkabroq bog'lovchi skriptlar, Mach-O va Windows hozirda amalga oshirilmagan yoki tugallanmagan imkoniyatlar sifatida tasniflanadi.
Amaliy jihatdan, Wild 0.9 mavjud qurilish ekotizimi bilan moslikni kengaytiradi, ELFdan tashqariga kengayishni boshlaydi va katta C/C++ va aralash loyihalarda bog'lovchidan foydalanishni qiyinlashtiradigan stsenariylarni qo'llab-quvvatlaydi. Rust dasturchilari uchun Wild kelajakdagi incremental bog'lanish uchun potentsial asos sifatida va tizim dasturchilari uchun GNU ld, LLD va Moldga yana bir tezkor raqobatchi sifatida qiziqarli bo'lib qolmoqda.
Manba: linux.org.ru
