قبل عدة أيام تم الإعلان عن إصدار الإصدار الجديد من Linker Mould 1.1 الحديث ، والذي يمكن استخدامه كبديل أسرع وشفاف لرابط جنو على أنظمة لينوكس.
في هذا الإصدار الجديد من القالب 1.1 هو الإصدار الذي يحتوي على ميزات جديدة وإصلاحات للأخطاء وتحسينات في الأداء.
حول العفن
قالب يدعم جميع ميزات رابط جنو وله أداء عالٍ جدًا ، نظرًا لأن الروابط التي ينشئها تكون أسرع مرتين فقط من نسخ الملفات باستخدام الأداة المساعدة cp.
بهذه الطريقة يؤدي تقليل وقت التجميع إلى تحسين راحة تطوير المشاريع الكبيرة بشكل كبير عن طريق تقليل وقت الانتظار في عملية التوليد القابل للتنفيذ عند تصحيح الأخطاء واختبار التغييرات.
كان الدافع وراء إنشاء Mould هو الانزعاج من الاضطرار إلى الانتظار حتى يكتمل الرابط بعد كل تغيير في الكود ، بالإضافة إلى الكفاءة المنخفضة للروابط الموجودة في الأنظمة متعددة النواة والرغبة في اختبار بنية ارتباط مختلفة جوهريًا دون اللجوء إلى نماذج معقدة غير ضرورية مثل الارتباط الإضافي.
يتم تحقيق الأداء العالي لربط ملف قابل للتنفيذ من عدد كبير من ملفات الكائنات المعدة بواسطة المترجم في Mould من خلال استخدام خوارزميات أسرع ، والتوازي النشط للعمليات بين مراكز وحدة المعالجة المركزية المتاحة ، واستخدام هياكل البيانات بشكل أكثر كفاءة.
على سبيل المثال يطبق العفن تقنية لإجراء عمليات حسابية مكثفة في وقت واحد مع نسخ الملفات ، وتحميل ملفات الكائنات بشكل استباقي في الذاكرة ، واستخدام جداول التجزئة السريعة عند حل الأحرف ، مسح جداول النقل في دفق منفصل وأقسام إزالة المضاعفات التي تتكرر في ملفات مختلفة.
المستجدات الرئيسية للقالب 1.1
في هذا الإصدار الجديد من القالب 1.1 الذي تم تقديمه ، تم إبراز أن ملف دعم تحسين ارتباط المرحلة (LTO ، تحسين وقت الارتباط).
تختلف تحسينات LTO من خلال مراعاة حالة جميع الملفات المتضمنة في عملية الإنشاء ، بينما تعمل أوضاع التحسين التقليدية على تحسين كل ملف على حدة ولا تأخذ في الاعتبار شروط استدعاء الوظائف المحددة في الملفات الأخرى.
في السابق ، عندما تم العثور على ملفات الكود الوسيط GCC أو LLVM (IR) ، تم استدعاء الروابط المناسبة ld.bfd أو ld.lld ، ولكن الآن يتعامل القالب مع ملفات IR من تلقاء نفسه ويستخدم واجهة برمجة التطبيقات الإضافية Linker ، المستخدمة أيضًا في GNU ld و روابط غنو الذهبية. تكون السرعة عند تمكين LTO أسرع بشكل هامشي فقط من الروابط الأخرى ، حيث يتم قضاء معظم الوقت في تحسين الشفرة ، وليس الارتباط.
كما تم تسليط الضوء على ذلك الخيارات المضافة "- تبعيات الطباعة" و "- تبعيات الطباعة = ممتلئ" pلإنشاء معلومات بتنسيق CSV حول التبعيات بين ملفات الإدخال ، والتي يمكن ، على سبيل المثال ، استخدامها لتحليل أسباب الاتصال عند ربط ملفات كائن معينة أو أثناء العمل لتقليل التبعيات بين الملفات.
التغيير الآخر الذي يبرز من الانقلاب الجديد هو أن دعم معمارية RISC-V (RV64) على الأنظمة الأساسية المضيفة والمستهدفة.
بالإضافة إلى ذلك ، يمكننا أيضًا إيجاد ذلك تمت إضافة خيار "–emit-relocs" لتمكين نسخ أقسام نقل العنوان من ملفات الإدخال إلى الملفات النهائية لمزيد من التحسينات ليتم تطبيقها في مرحلة ما بعد الارتباط.
من التغييرات الأخرى التي تبرز:
- تمت إضافة خيار "–shuffle -ections" لإجراء ترتيب عشوائي للأقسام قبل تحديد عناوينها في مساحة العنوان الظاهرية.
- تمت إضافة خيارات "-Warn-مرة" و "-warn-textrel".
- تمت إزالة الاعتماد على libxxhash.
أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها، يمكنك التحقق من التفاصيل في الرابط التالي.
كيفية تركيب القالب؟
بالنسبة لأولئك المهتمين بالقدرة على العمل مع Mould ، يمكنهم الحصول على الأداة المساعدة عن طريق تنزيل وتجميع الكود المصدري. للقيام بذلك ، ما عليك سوى فتح Terminal واكتب ما يلي:
git clone https://github.com/rui314/mold.git
cd mold
git checkout v1.1.1
make -j$(nproc) CXX=clang++
sudo make install
لمعرفة استخدام القالب ، يمكنك الرجوع إلى الوثائق على هذا الرابط.