أول إصدار مستقر لمنشئ القوالب تم تطويره بواسطة LLVM lld

قدم روي وياما ، مؤلف رابط LLVM lld ومجمع chibicc ، أول إصدار ثابت من رابط القالب الجديد عالي الأداء ، والذي يتقدم بشكل ملحوظ على روابط GNU gold و LLVM lld من حيث سرعة ربط ملف الكائن. يعتبر المشروع جاهزًا لنشر الإنتاج ويمكن استخدامه كبديل شفاف أسرع لرابط GNU على أنظمة Linux. تتضمن خطط الإصدار الرئيسي التالي تقديم الدعم لمنصة macOS للاستعداد ، وبعد ذلك سيبدأ العمل على تكييف القالب لنظام التشغيل Windows.

تمت كتابة القالب في C ++ (C ++ 20) وتوزيعه بموجب ترخيص AGPLv3 ، وهو متوافق مع GPLv3 ولكنه غير متوافق مع GPLv2 ، حيث يتطلب فتح التغييرات عند تطوير خدمات الشبكة. يرجع هذا الاختيار إلى الرغبة في الحصول على تمويل للتطوير - فالمؤلف على استعداد لبيع حقوق رمز إعادة الترخيص بموجب ترخيص مسموح به ، مثل معهد ماساتشوستس للتكنولوجيا (MIT) ، أو تقديم ترخيص تجاري منفصل لأولئك الذين لا يرضون عن AGPL.

يدعم القالب جميع ميزات رابط GNU وهو سريع جدًا ، حيث يصل فقط بنصف سرعة نسخ الملفات باستخدام cp. على سبيل المثال ، عند إنشاء Chrome 96 (حجم الكود 1.89 جيجابايت) ، يستغرق الأمر 8 ثانية لإنشاء ملفات تنفيذية لتصحيح الأخطاء على كمبيوتر ثماني النواة باستخدام GNU gold ، و 53 ثانية لـ LLVM lld ، و 11.7 ثانية فقط للقالب (2.2 مرة أسرع من ذهب جنو). عند ربط Clang 26 (13 جيجا بايت) ، يستغرق GNU gold 3.18 ثانية ، ويستغرق LLVM lld 64 ثانية ، ويستغرق العفن 5.8 ثانية. عند ربط Firefox 2.9 (89 جيجا بايت) ، يستغرق GNU gold 1.64 ثانية ، ويستغرق LLVM lld 32.9 ثانية ، ويستغرق العفن 6.8 ثانية.

أول إصدار مستقر لمنشئ القوالب تم تطويره بواسطة LLVM lld

يمكن أن يؤدي تقليل وقت الارتباط إلى تحسين قابلية استخدام تطوير المشاريع الكبيرة إلى حد كبير عن طريق تقليل الانتظار في عملية إنشاء ملفات قابلة للتنفيذ أثناء تصحيح الأخطاء واختبار التغييرات. كان الدافع وراء العفن هو الانزعاج من الاضطرار إلى انتظار اكتمال الارتباط بعد كل تغيير في الكود ، فضلاً عن الأداء الضعيف للروابط الموجودة على الأنظمة متعددة النواة ، والرغبة في تجربة بنية ربط مختلفة تمامًا دون اللجوء إلى غير ضروري النماذج المعقدة ، مثل الارتباط المتزايد.

يتم تحقيق الأداء العالي لربط ملف قابل للتنفيذ من عدد كبير من ملفات الكائنات التي تم إعدادها بواسطة المترجم في Mould باستخدام خوارزميات أسرع ، وموازاة العمليات بنشاط بين مراكز وحدة المعالجة المركزية المتاحة ، واستخدام هياكل بيانات أكثر كفاءة. على سبيل المثال ، يطبق Mould تقنية إجراء عمليات حسابية مكثفة في وقت واحد مع نسخ الملفات ، والإحضار المسبق لملفات الكائنات في الذاكرة ، واستخدام جداول التجزئة السريعة عند حل الأحرف ، ومسح جداول إعادة التوطين في سلسلة منفصلة ، وإلغاء تكرار الأقسام المدمجة المكررة في ملفات مختلفة.

المصدر: opennet.ru

إضافة تعليق