Mold 3.0 bog'lovchisi chiqarildi va GNU bog'lovchisi uchun tezroq va shaffof o'rinbosar sifatida ishlatilishi mumkin. Linux-tizimlar. Loyiha LLVM lld bog'lovchisi muallifi Rui Ueyama tomonidan ishlab chiqilmoqda. Moldning asosiy xususiyati uning juda yuqori bog'lanish tezligi bo'lib, GNU gold va LLVM lld bog'lovchilaridan sezilarli darajada ustun turadi (Moldda bog'lanish cp yordamchi dasturi yordamida fayllarni nusxalashning yarmiga teng). Kod Rust tilida yozilgan va MIT litsenziyasi ostida tarqatilgan.
Bog'lanish vaqtini qisqartirish, nosozliklarni tuzatish va o'zgarishlarni sinab ko'rish paytida bajariladigan fayllarni yaratish paytida kutish vaqtini qisqartirish orqali yirik loyihalarning foydalanish qulayligini sezilarli darajada yaxshilaydi. Qolib yaratishga turtki har bir kod o'zgargandan so'ng bog'lanish tugashini kutishga majbur bo'lishdan kelib chiqqan umidsizlik, ko'p yadroli tizimlarda mavjud bog'lovchilarning yomon ishlashi va incremental bog'lanish kabi juda murakkab modellarga murojaat qilmasdan tubdan boshqacha bog'lanish arxitekturasini sinab ko'rish istagidan kelib chiqqan.
Mold tezroq algoritmlardan foydalanish, mavjud protsessor yadrolari bo'ylab operatsiyalarni faol ravishda parallellashtirish va samaraliroq ma'lumotlar tuzilmalaridan foydalanish orqali ko'p sonli kompilyator tomonidan tayyorlangan obyekt fayllaridan bajariladigan fayllarni kompilyatsiya qilishda yuqori samaradorlikka erishadi. Masalan, Mold fayllarni nusxalash bilan bir vaqtda intensiv hisob-kitoblarni bajarish, obyekt fayllarini xotiraga oldindan yuklash, belgilarni aniqlash uchun tez xesh jadvallaridan foydalanish, alohida oqimdagi ko'chirish jadvallarini skanerlash va turli fayllardagi takroriy birlashtirilgan bo'limlarni olib tashlash texnikasini qo'llaydi.
Mold 3.0 filiali kod bazasini C++ (C++20) dan Rust ga qayta yozishi bilan ajralib turadi. Mold 3.0 oxirgi C++ versiyasi bo'lgan Mold 2.42.1 ning shaffof o'rnini bosuvchi sifatida ishlatilishi mumkin va ilgari mavjud bo'lgan barcha variantlar va maqsadli arxitekturalarni qo'llab-quvvatlaydi. Rust ga o'tish loyihani buzilgan obyekt fayllarini qayta ishlashda yuzaga kelishi mumkin bo'lgan muammolardan himoya qilish imkonini berdi - C++ versiyasi chegaradan tashqari kirish tufayli ishdan chiqqan holatlarda, Rust implementatsiyasi chegaralarni tekshirish bosqichida to'xtaydi. Rust implementatsiyasining ishlashi C++ versiyasi bilan bir xil.
Rustga ko'chib o'tishdan tashqari, 3.0 filialini ishlab chiqishda asosiy maqsad GNU ld bilan moslikni yaxshilash va loyihani distributivlarda standart bog'lovchi sifatida foydalanishga tayyorlash edi. LinuxBuild tizimi Cargo bilan, sinov tizimi esa ctest o'rniga cargo test bilan almashtirildi. oneTBB kutubxonasi qaramliklardan olib tashlandi.
Manba: opennet.ru
