تم إصدار 11.1 من دول مجلس التعاون الخليجي بالفعل ، وهذه هي أهم أخباره وتغييراته

بعد عام من التطوير ، إصدار النسخة الجديدة من مجموعة مترجم مجلس التعاون الخليجي 11.1، الإصدار الأول المهم في فرع مجلس التعاون الخليجي الجديد 11.x. بموجب مخطط ترقيم الإصدارات الجديدة ، تم استخدام الإصدار 11.0 أثناء التطوير ، وقبل وقت قصير من إصدار GCC 11.1 ، تم بالفعل تشكيل فرع من GCC 12.0 لتشكيل الإصدار الرئيسي التالي من GCC 12.1.

يتميز GCC 11.1 بالانتقال إلى تنسيق ملف التصحيح الافتراضي DWARF 5، التضمين الافتراضي لمعيار C ++ 17 ("-std = gnu ++ 17") ، تحسينات كبيرة في التوافق مع معيار C ++ 20 ، دعم تجريبي لـ C ++ 23 ، تحسينات متعلقة بالمعيار المستقبلي لـ لغة C (C2x) ، تحسينات جديدة للأداء.

الميزات الجديدة الرئيسية لدول مجلس التعاون الخليجي 11.1

تم تغيير الوضع الافتراضي للغة C ++ لاستخدام معيار C ++ 17، بدلاً من C ++ 14 المقترحة مسبقًا. من الممكن تعطيل سلوك C ++ 17 الجديد بشكل انتقائي عند معالجة القوالب التي تستخدم قوالب أخرى كمعامل (-fno-new-ttp-matching).

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

الجدة الأخرى التي يتم تقديمها هي تحسينات وتحسينات بين الإجراءات ، حيث تمت إضافة ممر IPA-modref جديد (-fipa-modref) لتتبع الآثار الجانبية في استدعاءات الوظائف وتحسين دقة التحليل. بالإضافة إلى أ تحسين تنفيذ تصريح IPA-ICF (-fipa-icf) ، مما يقلل من استهلاك ذاكرة الترجمة ويزيد من عدد الوظائف الموحدة التي يتم دمج كتل متطابقة من التعليمات البرمجية من أجلها.

El محرك تحسين يحركها الملف الشخصي (PGO) ، تحسين وضع "-fprofile-القيم" من خلال تتبع المزيد من المعلمات للمكالمات غير المباشرة.

أيضا يتم تمييز التطبيق المستمر لمعيار OpenMP 5.0 (فتح معالجة متعددة) ، حيث إضافة دعم أولي لتوجيه المهمة والقدرة على استخدام الحلقات غير المنتظمة في OpenMP يبني. متغير البيئة OMP_TARGET_OFFLOAD مدعوم الآن.

تم تحسين تنفيذ مواصفات البرمجة المتوازية OpenACC 2.6 المقدمة للغات C و C ++ و Fortran ، والتي تحدد أدوات تفريغ العمليات إلى وحدات معالجة الرسومات والمعالجات المتخصصة مثل NVIDIA PTX.

بالنسبة للغات عائلة C ، تم تنفيذ سمة جديدة "no_stack_protector" ، مصممة لتمييز الوظائف التي لا يجب تمكين حماية المكدس لها ("-fstack-protector"). تم توسيع خاصية "malloc" مع دعم تحديد أزواج المكالمات لتخصيص الذاكرة وتحريرها، والتي تُستخدم في المحلل اللغوي الثابت لاكتشاف أخطاء الذاكرة النموذجية (تسرب الذاكرة ، والاستخدام بعد الاستخدام المجاني ، والمكالمات المزدوجة لوظيفة مجانية ، وما إلى ذلك) وتحذيرات المترجم "-Wmismatched-dealloc" و "-Wmismatched- new-delete" و " -Wfree-nonheap-object "الإبلاغ عن عمليات إلغاء تخصيص وإلغاء تخصيص غير متسقة.

عند إنشاء معلومات تصحيح الأخطاء ، يتم استخدام تنسيق DWARF 5 افتراضيًا ، والذي يسمح ، مقارنة بالإصدارات السابقة ، بإنشاء بيانات تصحيح أخطاء أكثر ضغطًا بنسبة 25٪. يتطلب دعم DWARF 5 الكامل استخدام وحدات ثنائية على الأقل من الإصدار 2.35.2.

إمكانات وضع ThreadSanitizer المحسّن (-fsanitize = خيط) ، لأن نعمe يضيف دعمًا لأوقات التشغيل والبيئات البديلة ، بالإضافة إلى دعم أداة تصحيح أخطاء Kernel Concurrency Sanitizer (KCSAN) لاكتشاف ظروف السباق ديناميكيًا داخل نواة Linux. تمت إضافة خيارات جديدة "–بارام تسان-تمييز-متقلب" و "-بارام تسان-أداة-وظائف-دخول-خروج".

يوفر Vectorizer محاسبة جميع محتويات الوظيفة والمعالجة الإضافية للقدرات المرتبطة بالتقاطعات والمراجع إلى الكتل السابقة في مخطط تدفق التحكم (CFG).

للمحسن القدرة على تحويل سلسلة من العمليات الشرطية إلى تعبير تغيير ، حيث تتم مقارنة نفس المتغير. في المستقبل ، يمكن تشفير تعبير التغيير باستخدام تعليمات اختبار البت (للتحكم في هذا التحويل ، تمت إضافة الخيار "-fbit-tests").

بالنسبة لـ C ++ ، تم تنفيذ جزء من التغييرات والابتكارات المقترحة في معيار C ++ 20 ، بما في ذلك الوظائف الافتراضية "consteval virtual" ، والمدمرات الزائفة لإنهاء دورة حياة الكائنات ، باستخدام فئة التعداد والحساب حجم المصفوفة في التعبير "جديد".

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