منتشر شد لینکر وحشی ۰.۹ — یک لینکر جدید با عملکرد بالا که با زبان Rust نوشته شده است. این نسخه در GitHub فهرست شده است. 23 می 2026 سالاین پروژه به عنوان یک رابط برای تسریع توسعه تکراری قرار گرفته است: نویسندگان در نهایت میخواهند به پیوند تدریجی دست یابند، اگرچه هنوز در نسخه فعلی پیادهسازی نشده است. کد تحت مجوز دوگانه توزیع شده است. آپاچی ۲.۰ / MIT.
تغییر اصلی در Wild 0.9 پشتیبانی است رابط برنامهنویسی افزونه لینکر، رابطی که در Gold linker معرفی شد و توسط GNU ld و Mold نیز پشتیبانی میشود. برای Wild، این راه را برای افزونه لینکر LTO — بهینهسازی زمان پیوند از طریق یک افزونه پیونددهنده. توسعهدهندگان بهطور خاص اظهار میکنند که این امر در درجه اول برای پروژههای C، C++ و پروژههای کد ترکیبی مفید است، در حالی که پروژههای خالص Rust معمولاً LTO را بهصورت داخلی انجام میدهند. پشتیبانی از این ویژگی هنوز مشکلات شناختهشدهای دارد و پیوند از طریق افزونه میتواند کند باشد.
بخش قابل توجهی از کار در 0.9 مربوط به آماده سازی برای انتقال Wild فراتر از ... بود. Linuxمنطق مختص ELF/ به خارج از انتزاعات منتقل شده و کار روی پشتیبانی از آن آغاز شده است. مرد برتر پندار и WebAssemblyاین قابلیتها هنوز برای استفاده عملی آماده نیستند، اما اولین عناصر آن ظاهر شدهاند: تجزیه Mach-O، پردازش بخش و قطعه، جدول نمادها، امضای کد، فایلهای باینری حجیم، و همچنین پشتیبانی اولیه از بخشهای wasm، نمادها و جابجاییها.
تغییرات کلیدی در Wild Linker 0.9:
پشتیبانی از افزونههای لینکر پشتیبانی از APIهای افزونهی لینکر، که برای LTO افزونهی لینکر ضروری است، و سازگاری با برخی از اسکریپتهای ساخت GCC/GNU ld/Mold اضافه شد. همچنین برخی از مشکلات مربوط به فراخوانیهای افزونه، از جمله کل بایگانی، ThinLTO، محدودیت فایل باز و حذف کدهای مرده در طول LTO برطرف شد.
گسترش عمده پشتیبانی از اسکریپتهای لینکر. دستورالعملهای PROVIDE و PROVIDE_HIDDEN، تجزیه و اجرای ASSERT، پشتیبانی از MEMORY، ORIGIN، LENGTH، LOADADDR، ALIGNOF، SEGMENT_START، پسوندهای K و M در لیترالهای عددی، عملگرهای منطقی، بیتی و یگانی و تطبیق بر اساس نام فایلهای ورودی پیادهسازی شدهاند. این امر Wild را به سازگاری با اسکریپتهای پیوند پیچیده که اغلب در نرمافزارهای سیستمی و پروژههای سطح پایین یافت میشوند، نزدیکتر میکند.
بهبودهایی برای RISC-V، AArch64، x86-64 و LoongArch64. اضافه شدن آزادسازی فراخوانی RISC-V، آزادسازی HI20، R_RISCV_ALIGN، بررسی تداخل افزونههای ISA، جابجاییهای اضافی AArch64، بخشهای توسعه دامنه برای AArch64، مدیریت تعدادی از جابجاییهای x86-64 با آزادسازیها، و شفافسازی دامنه و ترازبندی برای LoongArch64.
گزینههای سازگاری جدید. پشتیبانی از --dependency-file، --auxiliary، --exclude-libs، --enable-new-dtags، --disable-new-dtags، --trace، --nmagic، --compress-debug-sections، --pack-dynamic-relocs=relr، --use-android-relr-tags و فرم بدون فاصله -o/path اضافه شد.
تولید اشیاء متحرک ایستا. پشتیبانی از ایجاد فایلهای قابل جابجایی استاتیک - فایلهای شیء واسطهای که همچنان میتوانند در پیوند بیشتر شرکت کنند - اضافه شد.
بهبود عملکرد بدون تمرکز بر انتشار «سریع». نویسندگان صریحاً خاطرنشان میکنند که نسخه ۰.۹ هیچ بهبود عملکردی عمدهای را شامل نمیشود، اما هیچ افت کیفیتی نیز مشاهده نمیشود. بهینهسازیهای محلی شامل مسیری سریع برای تطبیقدهندههای غیر سراسری در اسکریپتهای نسخه، کاهش تعداد عملیات اتمی، محاسبه موازی آدرسهای بخش و نماد در طول اسکنهای آزادسازی و کاهش پردازش مجدد بخشهای از پیش حلشده است.
بسیاری از اصلاحات سازگاری. رفع مشکل مدیریت نمادهای تعریف نشده ضعیف، .ctors/.dtors، RELRO، اسکریپتهای نسخه، SFrame، IFUNC، --version/-v، خطاهای نماد تعریف نشده، هشدارها، جابجاییهای اشکالزدایی، .eh_frame، SHT_SYMTAB_SHNDX، پیوند استاتیک شیء پویا، و تعدادی از سناریوها با اسکریپتهای پیونددهنده.
مستندسازی و مدیریت پروژه. یک آییننامه رفتاری، سیاست استفاده از LLM، مستندات مدیریتی، ماتریس پشتیبانی از اسکریپتهای لینکر، دستورالعملهای استفاده از -fuse-ld=wild با GCC 16.1 و نصب از طریق Brew اضافه شده است. مخزن نیز به یک سازمان جداگانه در گیتهاب، wild-linker، منتقل شده است.
در حال حاضر، وحشی رسماً در درجه اول متمرکز بر Linux و ELF. فایل README پروژه پشتیبانی از x86-64, ARM64, RISC-V riscv64gc و پشتیبانی اولیه لونگآرچ۳۲ بر Linuxمیتواند فایلهای باینری استاتیک، فایلهای اجرایی static-PIE، فایلهای اجرایی با لینک پویا و فایلهای .so بسازد، با اطلاعات اشکالزدایی، سرور کار GNU و برخی اسکریپتهای لینکدهنده کار میکند. لینکدهی افزایشی، اسکریپتهای لینکدهنده پیچیدهتر، Mach-O و Windows در حال حاضر به عنوان فرصتهای تحقق نیافته یا ناتمام طبقهبندی میشوند.
از نظر عملی، Wild 0.9 سازگاری با اکوسیستم ساخت موجود را گسترش میدهد، فراتر از ELF میرود و پشتیبانی از سناریوهایی را اضافه میکند که استفاده از لینکر را در پروژههای بزرگ C/C++ و ترکیبی دشوار میکند. برای توسعهدهندگان Rust، Wild به عنوان یک پایگاه بالقوه برای لینکسازی افزایشی آینده و برای توسعهدهندگان سیستم، به عنوان رقیب سریع دیگری برای GNU ld، LLD و Mold، جالب توجه باقی میماند.
منبع: linux.org.ru
