إطلاق مجموعة المترجمين GCC 13

بعد عام من التطوير ، تم إطلاق الإصدار المجاني لمجموعة برامج التحويل البرمجي GCC 13.1 ، وهو أول إصدار مهم في فرع دول مجلس التعاون الخليجي 13.x الجديد. بموجب مخطط ترقيم الإصدارات الجديد ، تم استخدام الإصدار 13.0 أثناء التطوير ، وقبل فترة وجيزة من إصدار GCC 13.1 ، كان فرع دول مجلس التعاون الخليجي 14.0 متشعبًا بالفعل ، والذي سيتم من خلاله تكوين الإصدار المهم التالي من GCC 14.1.

التغييرات الرئيسية:

  • اعتمد مجلس التعاون الخليجي واجهة لبناء البرامج بلغة البرمجة Modula-2. وهو يدعم كود البناء الذي يتوافق مع لهجات PIM2 و PIM3 و PIM4 ، بالإضافة إلى معيار ISO المقبول لتلك اللغة.
  • تمت إضافة واجهة أمامية مع تنفيذ مترجم لغة Rust الذي أعده مشروع gccrs (GCC Rust) إلى شجرة مصدر دول مجلس التعاون الخليجي. في العرض الحالي ، يتم تمييز المقدمة على أنها تجريبية وتعطيلها افتراضيًا. بمجرد أن تصبح الواجهة الأمامية جاهزة (من المتوقع في الإصدار القادم) ، يمكن استخدام مجموعة أدوات دول مجلس التعاون الخليجي القياسية لتجميع برامج Rust دون الحاجة إلى تثبيت برنامج التحويل البرمجي rustc الذي تم إنشاؤه باستخدام تطورات LLVM.
  • يضيف Link-in-Step Optimization (LTO) دعمًا لخادم الوظائف (خادم العمل) الذي يحتفظ به GNU لإنشاء المشروع لتحسين تنفيذ البناء المتوازي عبر سلاسل محادثات متعددة. في دول مجلس التعاون الخليجي ، يتم استخدام خادم الوظائف لموازنة العمل أثناء تحسين LTO في سياق البرنامج بأكمله (WPA ، تحليل البرنامج بالكامل). يتم استخدام الأنابيب المسماة (--jobserver-style = fifo) افتراضيًا للتفاعل مع خادم العمل.
  • يوفر المحلل الثابت (-المحلل) 20 فحصًا تشخيصيًا جديدًا ، بما في ذلك "- محلل المحلل - خارج الحدود" ، "- محلل - حجم التخصيص" ، "- محلل - deref - قبل الفحص" ، "- محلل - لانهائي -Recursion "-Wanalyzer-jump-through-null" ، "-Wanalyzer-va-list-leak".
  • تم تنفيذ القدرة على إخراج التشخيصات بتنسيق SARIF استنادًا إلى JSON. يمكن استخدام الشكل الجديد للحصول على نتائج تحليل ثابتة (GCC -fanalyzer) ، وكذلك للحصول على معلومات حول التحذيرات والأخطاء. يتم التمكين باستخدام الخيار "-fdiagnostics-format = sarif-stderr | sarif-file | json-stderr | json | json-file" ، حيث تؤدي الخيارات مع "json" إلى إخراج في متغير خاص بدول مجلس التعاون الخليجي من تنسيق JSON .
  • تم تنفيذ بعض الميزات المحددة في معيار C23 C ، مثل الثابت nullptr لتعريف المؤشرات الفارغة ، مما يسهل استخدام القوائم مع عدد متغير من الوسائط (متغير) ، وتوسيع إمكانيات التعداد ، والسمة noreturn ، مما يسمح باستخدام constexpr و auto عند تحديد الكائنات ، نوع و typeof_unqual ، محاذاة كلمات رئيسية جديدة ، محاذاة ، منطقية ، خطأ ، static_assert ، thread_local و true ، السماح للأقواس الفارغة عند التهيئة.
  • تم تنفيذ بعض الميزات المحددة في معيار C ++ 23 ، مثل القدرة على وضع العلامات في نهاية التعبيرات المركبة ، والتوافق مع نوع char8_t ، وتوجيه # warning preprocessor ، المحدد بـ (\ u {} ، \ o {} ، \ x {}) ، والمسمى ('\ N {LATIN CAPITAL LETTER A}') تسلسلات الهروب ، عامل التشغيل الثابت () ، عامل التشغيل الثابت [] ، عامل المساواة داخل التعبيرات ، باستثناء بعض القيود على استخدام constexpr ، الدعم لـ UTF-8 في النصوص المصدر.
  • قام libstdc ++ بتحسين الدعم التجريبي لمعايير C ++ 20 و C ++ 23 ، مثل إضافة دعم ملف الرأس و std :: format ، إمكانيات ملف الرأس الموسعة ، أنواع إضافية من الفاصلة العائمة المضافة، ملفات الرأس المنفذة و .
  • تمت إضافة سمات دالة جديدة إلى المستند الذي يتم فيه تمرير واصف الملف في متغير عدد صحيح: "__ سمة __ ((fd_arg (N)))" و "__ سمة __ ((fd_arg_read (N)))" و "__ سمة __ ((fd_arg_write (N) )) ". يمكن استخدام السمات المحددة في محلل ثابت (-محلل) لاكتشاف العمل غير الصحيح مع واصفات الملفات.
  • تمت إضافة سمة جديدة "__ سمة __ ((تفترض (EXPR)))" ، والتي يمكنك من خلالها إخبار المترجم بأن التعبير صحيح ويمكن للمجمع استخدام هذه الحقيقة دون تقييم التعبير.
  • تمت إضافة علامة "-fstrict-flex-arrays = [المستوى]" لتحديد السلوك عند معالجة عنصر مصفوفة مرنة في الهياكل (أعضاء المصفوفة المرنة ، مصفوفة ذات حجم غير محدد في نهاية البنية ، على سبيل المثال ، "int b [] ").
  • تمت إضافة علامة "-Wenum-int-mismatch" لإصدار تحذيرات إذا كان هناك عدم تطابق بين نوع تم تعداده ونوع عدد صحيح.
  • تتمتع واجهة Fortran الأمامية بدعم كامل للإنهاء.
  • تمت إضافة دعم الوظائف والأنواع العامة (الأدوية) إلى الواجهة الأمامية للغة Go ، وتم ضمان التوافق مع حزم لغة Go 1.18.
  • تدعم الواجهة الخلفية AArch64 وحدة المعالجة المركزية Ampere-1A (ampere1a) و Arm Cortex-A715 (cortex-a715) و Arm Cortex-X1C (cortex-x1c) و Arm Cortex-X3 (cortex-x3) و Arm Neoverse V2 (neoverse -v2) . تمت إضافة دعم الوسيطات "armv9.1-a" و "armv9.2-a" و "armv9.3-a" إلى الخيار "-march =". تمت إضافة دعم لملحقات المعالجات FEAT_LRCPC و FEAT_CSSC و FEAT_LSE2.
  • تمت إضافة دعم وحدات المعالجة المركزية STAR-MC1 (star-mc1) و Arm Cortex-X1C (cortex-x1c) و Arm Cortex-M85 (cortex-M85) إلى الواجهة الخلفية لبنية ARM.
  • تمت إضافة دعم معالجات Intel Raptor Lake و Meteor Lake و Sierra Forest و Grand Ridge و Emerald Rapids و Granite Rapids و AMD Zen 86 (znver4) إلى الواجهة الخلفية x4. تم تنفيذ ملحقات مجموعة تعليمات AVX-IFMA و AVX-VNNI-INT8 و AVX-NE-CONVERT و CMPccXADD و AMX-FP16 و PREFETCHI و RAO-INT و AMX-COMPLEX المقترحة في معالجات Intel. بالنسبة إلى C و C ++ على الأنظمة ذات SSE2 ، يتم توفير النوع __bf16.
  • تنفذ الواجهة الخلفية لتوليد الكود لوحدات معالجة الرسومات (GCN) AMD Radeon القدرة على استخدام مسرعات AMD Instinct MI200 لتحسين أداء OpenMP / OpenACC. تحسين الاتجاه باستخدام تعليمات SIMD.
  • قدرات خلفية موسعة بشكل كبير لمنصة LoongArch.
  • تمت إضافة دعم XuanTie C906 الخاص بـ CPU T-Head (thead-c906) في الواجهة الخلفية RISC-V. تم تنفيذ الدعم لمعالجات المتجهات المحددة في مواصفات RISC-V Vector Extension 0.11 الجوهرية. تمت إضافة دعم لـ 30 امتدادًا لمواصفات RISC-V.
  • عند إنشاء كائنات مشتركة باستخدام الخيار "-shared" ، لم يعد يتم إضافة رمز بدء التشغيل بعد إضافة بيئة النقطة العائمة إذا تم تمكين تحسينات "-Ofast" أو "-ffast-math" أو "-funsafe-math-optimisation" .
  • يتم تنفيذ دعم تنسيق تصحيح أخطاء DWARF في جميع التكوينات تقريبًا.
  • تمت إضافة خيار "-gz = zstd" لضغط معلومات التصحيح باستخدام خوارزمية Zstandard. تمت إزالة الدعم لوضع ضغط معلومات التصحيح الذي تم إيقافه "-gz = zlib-gnu".
  • تمت إضافة الدعم الأولي لـ OpenMP 5.2 (Open Multi-Processing) واستمر تنفيذ معايير OpenMP 5.0 و 5.1 ، وتحديد واجهات برمجة التطبيقات وطرق تطبيق طرق البرمجة المتوازية على أنظمة متعددة النواة وهجينة (CPU + GPU / DSP) مع وحدات الذاكرة المشتركة والاتجاه (SIMD).
  • توقف دعم تنسيق تخزين معلومات تصحيح الأخطاء القديم "STABS" (الذي تم تمكينه بواسطة خياري -gstabs و -gxcoff) ، الذي تم إنشاؤه في الثمانينيات والمستخدم في مصحح أخطاء dbx.
  • دعم موقوف لـ Solaris 11.3 (ستتم إزالة الرمز لدعم هذا النظام الأساسي في إصدار مستقبلي).

المصدر: opennet.ru

إضافة تعليق