يصل LLVM 11.0 مع تحديث لـ Python 3 وتحسينات لـ RISC-V والمزيد

LLVM

بعد ستة أشهر من التطوير تم تقديم إطلاق الإصدار الجديد من مشروع LLVM 11.0 حيث يتم تقديم العديد من التحسينات ، مثل التحديث إلى Python 3 ، وتصحيحات لدعم الإرشادات التجريبية في RISC-V والعديد من التغييرات الأخرى.

بالنسبة لأولئك الذين ليسوا على دراية بـ LLVM ، يجب أن يعرفوا ما هو مجموعة أدوات متوافقة مع دول مجلس التعاون الخليجي (المجمعات والمحسّنات ومولدات الأكواد) التي تجمع البرامج في تعليمات افتراضية وسيطة برموز البت تشبه RISC (جهاز افتراضي منخفض المستوى مع نظام تحسين متعدد المستويات).

إنه مصمم لتحسين وقت التجميع، ووقت الربط ، ووقت التنفيذ بأي لغة برمجة يريد المستخدم تحديدها. تم تنفيذه في الأصل لترجمة C و C ++، وتصميم LLVM الحيادي للغة ، ونجاح المشروع لقد أنتجوا مجموعة متنوعة من اللغات.

يمكن تحويل الكود الزائف الذي تم إنشاؤه باستخدام مترجم JIT إلى تعليمات الآلة مباشرة في وقت تنفيذ البرنامج.

الميزات الرئيسية الجديدة لـ LLVM 11.0

في هذا الإصدار الجديد من LLVM 11.0 تم نقل نظام البناء لاستخدام Python 3على هذا النحو ، لا يتم فرض استخدام Python 3 ، لأنه في حالة عدم توفرها ، يتم تنفيذ خيار التراجع لاستخدام Python 2.

ينسب تمت إضافة متغير وظيفة أبي متغير إلى التمثيل المتوسط ​​(IR) لوصف التعيين بين الوظائف العددية والمتجهية للمكالمات الموجهة. يتم استخراج نوعين متجهين منفصلين ، llvm :: FixedVectorType و llvm :: ScalableVectorType ، من llvm :: VectorType.

السلوك غير المحدد هو التفريع المستند إلى undef والتمرير من القيم غير المحددة إلى وظائف المكتبة القياسية.

في memset / memcpy / memmove ، يُسمح بتمرير مؤشرات غير محددة ، ولكن إذا كانت المعلمة ذات الحجم تساوي الصفر.

يضيف LLJIT دعمًا لإجراء عمليات تهيئة ثابتة من خلال أساليب LLJIT :: initialize و LLJIT :: deinitialize.

تمت إضافة القدرة على إضافة مكتبات ثابتة إلى JITDylib باستخدام فئة StaticLibraryDefinitionGenerator. تمت إضافة C API لـ ORCv2 (API لإنشاء برامج التحويل البرمجي لـ JIT).

من جانب تحسين الدعم لبنى المعالجات المختلفة:

  • مضاف دعم معالجات Cortex-A34 و Cortex-A77 و Cortex-A78 و Cortex-X1 في الواجهة الخلفية لعمارة AArch64. تم تنفيذ امتدادات ARMv8.2-BF16 (BFloat16) و ARMv8.6-A ، بما في ذلك RMv8.6-ECV (المحاكاة الافتراضية المحسنة للعداد) و ARMv8.6-FGT (المصائد الدقيقة) و ARMv8.6-AMU (النشاط) تراقب المحاكاة الافتراضية) و ARMv8.0-DGH (تلميح جمع البيانات).
  • دعم إضافي لمعالجات Cortex-M55 و Cortex-A77 و Cortex-A78 و Cortex-X1 على الواجهة الخلفية لـ ARM. تم تنفيذ ملحقات Armv8.6-A Matrix Multiply و RMv8.2-AA32BF16 BFloat16.
  • تمت إضافة دعم إنشاء الكود لمعالجات POWER10 في الواجهة الخلفية لـ PowerPC. تحسينات الحلقة المحسّنة ودعم محسّن لعمليات النقطة العائمة.
  • الخلفية المعمارية يمكن أن يتلقى RISC-V تصحيحات بدعم لمجموعات التعليمات التجريبية الممتدة التي لم يتم اعتمادها رسميًا بعد.

بالإضافة إلى ذلك ، يتم توفير القدرة على إنشاء رمز لوظائف الربط متكامل لتعليمات ناقل SVE.

تم نقل الواجهة الخلفية لهندسة AVR من الفئة التجريبية إلى الفئة المستقرة المضمنة في التوزيع الأساسي.

x86 الخلفية يدعم تعليمات Intel AMX و TSXLDTRK. حماية إضافية ضد هجمات LVI تم أيضًا تطبيق (Load Value Injection) وآلية قمع الآثار الجانبية للتنفيذ التخميني العام لمنع الهجمات الناتجة عن التنفيذ التخميني للعمليات على وحدة المعالجة المركزية.

من التغييرات الأخرى التي تبرز:

  • تضيف الواجهة الخلفية لهندسة SystemZ دعمًا لبرنامج MemorySanitizer و LeakSanitizer.
  • يضيف Libc ++ دعمًا لملف رأس ثابت للرياضيات .
  • قدرات رابط LLD الموسعة.
  • تحسين دعم ELF ، بما في ذلك الخيارات المضافة "–lto-emit-asm"، "–lto-whole-program-visual"، "–print-archive-stats"، "–shuffle-section"، "–thinlto-single -module "،" –unique "،" –rosegment "،" –threads = N ".
  • تمت إضافة خيار "–time-trace" لحفظ التتبع إلى الملف ، والذي يمكن بعد ذلك تحليله من خلال واجهة chrome: // trace في Chrome.
  • تمت إزالة واجهة مع مترجم Go (llgo) من الإصدار ويمكن إعادة هيكلتها في المستقبل.

أخيرا إذا كنت تريد معرفة المزيد عنها حول هذا الإصدار الجديد ، يمكنك التحقق التفاصيل في الرابط التالي.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.