جي سي سي 9 ڪمپيلر سوٽ جو رليز

ترقي جي هڪ سال کان پوء شايع ٿيل ڪمپيلرز جي هڪ مفت سيٽ جي ڇڏڻ GCC 9.1، نئين GCC 9.x برانچ ۾ پهريون وڏو رليز. جي مطابق نئين اسڪيم رليز نمبر، ورزن 9.0 ڊولپمينٽ جي عمل دوران استعمال ڪيو ويو، ۽ GCC 9.1 جي رليز ٿيڻ کان ٿورو اڳ، GCC 10.0 برانچ اڳ ۾ ئي بند ٿي چڪي هئي، جنهن جي بنياد تي ايندڙ اهم رليز، GCC 10.1، ٺهي ويندي.

GCC 9.1 قابل ذڪر آهي C++ 17 معيار لاءِ سپورٽ کي مستحڪم ڪرڻ، مستقبل جي C++ 20 معيار (ڪوڊنام C++2a) جي صلاحيتن کي لاڳو ڪرڻ لاءِ، ڊي ٻولي لاءِ فرنٽ اينڊ ۾ شامل ڪرڻ، OpenMP 5.0 لاءِ جزوي سپورٽ , OpenACC 2.5 لاءِ لڳ ڀڳ مڪمل سپورٽ، بائنڊنگ اسٽيج تي انٽرپروسيجرل اصلاحن ۽ اصلاحن جي اسڪاليبلٽي کي وڌايو، تشخيصي اوزارن جي توسيع ۽ نئين ڊيڄاريندڙن جو اضافو، OpenRISC، C-SKY V2 ۽ AMD GCN GPU لاءِ پٺاڻ.

مکيه تبديل ڪريو:

  • ڊي پروگرامنگ ٻولي لاءِ سپورٽ شامل ڪئي وئي. GCC ۾ هڪ ڪمپائلر سان گڏ فرنٽ اينڊ شامل آهي GDC (Gnu D Compiler) ۽ رن ٽائم لائبرريون (libphobos)، جيڪي توھان کي اجازت ڏين ٿيون معياري GCC استعمال ڪرڻ لاءِ پروگرام ٺاھڻ لاءِ ڊي پروگرامنگ ٻولي. GCC ۾ ڊي ٻولي جي مدد کي چالو ڪرڻ جو عمل شروع ٿي چڪو آهي واپس 2011 ۾، پر ڇڪيو ويو ڪوڊ کي GCC جي ضرورتن جي تعميل ۾ آڻڻ جي ضرورت جي ڪري ۽ ڊجيٽل مارس ڏانهن دانشورانه ملڪيت جي حقن جي منتقلي سان مسئلا، جيڪا ڊي پروگرامنگ ٻولي کي ترقي ڪري رهي آهي؛
  • ڪوڊ جنريٽر کي بهتر بڻايو ويو آهي. مثال طور، سوئچ ايڪسپريسز کي وڌائڻ لاءِ مختلف حڪمت عملين جو استعمال (جمپ ٽيبل، بٽ ٽيسٽ، فيصلي جو وڻ) حالتن جي لحاظ کان لاڳو ڪيو ويو آهي. لڪير جي ڪمن کي تبديل ڪرڻ جي صلاحيت شامل ڪئي وئي جنهن ۾ "-ftree-switch-conversion" اصلاح استعمال ڪندي هڪ سوئچ ايڪسپريس شامل آهي (مثال طور، حالتن جو هڪ سيٽ جهڙوڪ "ڪيس 2: ڪيئن = 205؛ وقفو؛ ڪيس 3: ڪيئن = 305؛ وقفو ؛" کي تبديل ڪيو ويندو "100 * ڪيئن + 5"؛
  • بهتر interprocedural optimizations. ان لائن ڊيپلائيمينٽ سيٽنگون جديد C++ ڪوڊ بيسز لاءِ ترتيب ڏنيون ويون آهن ۽ نون پيراميٽرن سان وڌايو ويو آهي max-inline-insns-small, max-inline-insns-size, uninline-function-ins, uninlined-function-time, uninlined-thunk-insns ۽ uninlined - وقت- وقت. سرد/گرم ڪوڊ جي جدائي جي بهتري ۽ جارحيت. تمام وڏي لاءِ بهتر اسڪاليبلٽي ترجمو يونٽ (مثال طور، جڏهن وڏي پروگرامن کي ڳنڍڻ واري مرحلي تي اصلاح لاڳو ڪرڻ)؛
  • ڪوڊ پروفائلنگ جي نتيجن جي بنياد تي اصلاحي ميڪانيزم (PGO - پروفائل-گائيڊ ٿيل اصلاح) کي بھتر ڪيو ويو آھي، جيڪو ڪوڊ جي عمل جي خاصيتن جي تجزيو جي بنياد تي وڌيڪ بھترين ڪوڊ ٺاھي ٿو. خلاصو اختيار "پروفائل-استعمال" ھاڻي شامل آھي اصلاح جا طريقا "-fversion-loops-for-strides"، "-floop-interchange"، "-floop-unroll-and-jam" ۽ "-ftree-loop-distribution". فائلن ۾ ڪائونٽرن سان هسٽوگرام جي شموليت کي هٽايو ويو، جنهن سان پروفائلز سان فائلن جي سائيز گھٽائي وئي (هسٽوگرام هاڻي اڏام تي ٺاهيا ويا آهن جڏهن ڳنڍڻ دوران اصلاحن کي انجام ڏيو)؛
  • وڌايل ڳنڍڻ واري وقت جي اصلاح (LTO). نتيجو پيدا ڪرڻ کان اڳ قسمن جي سادگي مهيا ڪئي وئي، جيڪا ممڪن طور تي LTO اعتراض فائلن جي سائيز کي گھٽائڻ، بائنڊنگ اسٽيج تي ياداشت جي استعمال کي گھٽائڻ، ۽ عملن جي متوازي کي بهتر بڻائڻ ممڪن بڻائي. ورهاڱي جو تعداد (-param lto-partitions) 32 کان 128 تائين وڌايو ويو آهي، جيڪو سسٽم تي ڪارڪردگي بهتر ڪري ٿو وڏي تعداد ۾ CPU ٿريڊز سان. اصلاحي عملن جي تعداد کي ڪنٽرول ڪرڻ لاءِ ھڪڙو پيٽرولر شامل ڪيو ويو آھي
    "-param lto-max-streaming-parallelism"؛

    نتيجي طور، GCC 8.3 جي مقابلي ۾، GCC 9 ۾ متعارف ٿيل اصلاحون اجازت Firefox 5 ۽ LibreOffice 66 جي تاليف جو وقت اٽڪل 6.2.3٪ گھٽايو. اعتراض فائلن جي سائيز 7 سيڪڙو گھٽجي وئي. 8-core CPU تي پابند وقت 11٪ گھٽجي ويو. ڳنڍڻ واري مرحلي جو ترتيب وار اصلاح وارو مرحلو هاڻي 28٪ تيز آهي ۽ 20٪ گهٽ ياداشت استعمال ڪري ٿو. LTO جي متوازي اسٽيج جي هر پروسيسر جي ياداشت جو استعمال 30٪ گھٽجي ويو؛

  • اڪثر متوازي پروگرامنگ وضاحتن تي عمل ڪيو ويو آهي C، C++ ۽ Fortran ٻولين لاءِ OpenACC 2.5، جيڪو GPUs ۽ خاص پروسيسرز جهڙوڪ NVIDIA PTX تي عملن کي بند ڪرڻ لاءِ اوزار جي وضاحت ڪري ٿو.
  • سي ۽ سي ++ لاءِ معيار لاءِ جزوي سپورٽ لاڳو ڪئي وئي آهي اوپن ايم پي 5.0 (اوپن ملٽي پروسيسنگ)، جيڪو API ۽ متوازي پروگرامنگ طريقن کي لاڳو ڪرڻ جا طريقا بيان ڪري ٿو C, C++ ۽ Fortran ٻولين لاءِ ملٽي ڪور ۽ هائبرڊ (CPU+GPU/DSP) سسٽم تي شيئر ڪيل ميموري ۽ ویکٹرائيزيشن يونٽس (SIMD) ؛
  • سي ٻولي لاءِ نئون ڊيڄاريندڙ شامل ڪيو ويو آهي: "-پيڪ ٿيل-ميمبر جو پتو" (هڪ ڍانچي يا يونين جي ڀريل ميمبر ڏانهن غير ترتيب ڏنل پوائنٽر قدر) ۽
    «- وابستگي- قدر" (جڏهن هڪ مطلق قدر جي ڳڻپ لاءِ افعال تائين رسائي، جيڪڏهن مخصوص دليل لاءِ وڌيڪ موزون فنڪشن آهي، مثال طور، abs(3.14) بدران fabs(3.14) استعمال ڪيو وڃي. C++ لاءِ نئون ڊيڄاريندڙ شامل ڪيو ويو: "-Wdeprecated-copy"،
    "-Winit-list-lifetime"، "-Wredundant-move"، "-Wpessimizing-move" ۽ "-Wclass-conversion". ڪيتريون ئي اڳ ۾ موجود ڊيڄاريندڙن کي وڌايو ويو آهي؛

  • شامل ڪيل تجرباتي سپورٽ مستقبل جي سي ٻوليء جي معيار جي حصي لاء، ڪوڊنيم C2x. C2x سپورٽ کي فعال ڪرڻ لاءِ، اختيارن کي استعمال ڪريو "-std=c2x" ۽ "-std=gnu2x" (GNU ايڪسٽينشن کي فعال ڪرڻ لاءِ). معيار اڃا ترقي جي شروعاتي مرحلي ۾ آهي، تنهن ڪري، ان جي صلاحيتن مان، صرف هڪ اظهار سان _Static_assert هڪ دليل جي حمايت ڪئي وئي آهي (_Static_asssert ٻن دليلن سان C11 ۾ معياري آهي)؛
  • C ++ 17 معيار لاءِ سپورٽ کي مستحڪم قرار ڏنو ويو آهي. فرنٽ اينڊ ۾، ٻوليءَ جون صلاحيتون C++ 17 مڪمل طور تي لاڳو ٿيل آهن، ۽ libstdc++ ۾، لائبريريءَ جا ڪم جيڪي معيار ۾ بيان ڪيا ويا آهن، مڪمل عمل درآمد جي ويجهو آهن؛
  • جاري لاڳو ڪرڻ مستقبل جي عناصر C++2a معيار. مثال طور، شروعات جي دوران رينج شامل ڪرڻ جي صلاحيت شامل ڪئي وئي آهي، لامبڊا ايڪسپريسز لاءِ توسيع لاڳو ڪئي وئي آهي، ڊيٽا ڍانچي جي خالي ميمبرن لاءِ سپورٽ ۽ امڪاني/ممڪن خاصيتون شامل ڪيون ويون آهن، مشروط اظهار ۾ ورچوئل افعال کي ڪال ڪرڻ جي صلاحيت ڏني وئي آهي. وغيره
    C++2a سپورٽ کي فعال ڪرڻ لاءِ، "-std=c++2a" ۽ "-std=gnu++2a" آپشن استعمال ڪريو. بٽ ۽ ورزن هيڊر فائلون شامل ڪيون ويون libstdc++ for C++2a، std::remove_cvref، std::unwrap_reference، std::unwrap_decay_ref، std::is_nothrow_convertible ۽ std::type_identity traits، std::midpoint , std:: midpoint , std::bind_front,
    std::visit, std::is_constant_evaluated ۽ std::assume_aligned، چار8_t قسم لاءِ شامل ڪيل سپورٽ، اسٽرنگ جي اڳياڙي ۽ لاڳاپي کي چيڪ ڪرڻ جي صلاحيت کي لاڳو ڪيو (starts_with، ends_with)؛

  • نئين ARM پروسيسرز لاءِ سپورٽ شامل ڪئي وئي
    Cortex-A76، Cortex-A55، Cortex-A76 DynamIQ big.LITTLE ۽ Neoverse N1. Armv8.3-A ۾ ڪمپليڪس نمبرن سان ڪم ڪرڻ، pseudo-random number Generation (rng) ۽ ميموري ٽيگنگ (memtag) ۾ متعارف ڪرايل هدايتن لاءِ سپورٽ شامل ڪئي وئي، ان سان گڏ برانچ پريڊڪشن يونٽ جي قياس آرائي ۽ آپريشن سان لاڳاپيل حملن کي روڪڻ لاءِ هدايتون. . AArch64 فن تعمير لاء، هڪ تحفظ موڊ شامل ڪيو ويو آهي اسٽيڪ ۽ هيپ جا چونڪ ("-fstack-clash-protection"). Armv8.5-A آرڪيٽيڪچر جون خاصيتون استعمال ڪرڻ لاءِ، اختيار ”-march=armv8.5-a“ شامل ڪيو ويو آهي.

  • ان ۾ GCN مائڪرو آرڪيٽيڪچر جي بنياد تي AMD GPUs لاءِ ڪوڊ ٺاهڻ لاءِ هڪ پس منظر شامل آهي. عمل درآمد في الحال سنگل ٿريڊ ٿيل ايپليڪيشنن جي تاليف تائين محدود آهي (OpenMP ۽ OpenACC ذريعي ملٽي ٿريڊ ڪيل حسابن کي انجام ڏيڻ لاءِ سپورٽ بعد ۾ پيش ڪئي ويندي) ۽ GPU Fiji ۽ Vega 10 لاءِ سپورٽ؛
  • پروسيسرز لاءِ نئون پس منظر شامل ڪيو ويو OpenRISC;
  • پروسيسرز لاءِ پس منظر شامل ڪيو ويو C-SKY V2, مختلف صارفين ڊوائيسز لاء ساڳئي نالي جي چيني ڪمپني پاران پيدا ڪيل؛
  • سڀئي ڪمانڊ لائين آپشن جيڪي بائيٽ ويلز کي هلائيندا آھن، ساٿ ڏين ٿا لاحقا kb، KiB، MB، MiB، GB ۽ GiB؛
  • لاڳو ٿيل "-flive-patching=[inline-only-static|inline-clone]" آپشن توهان کي اجازت ڏئي ٿو لائيو-پيچنگ سسٽم لاءِ محفوظ تالیف حاصل ڪرڻ جي ڪري انٽرپروسيجرل جي استعمال تي ملٽي ليول ڪنٽرول (IPA) اصلاح؛
  • شامل ڪيو ويو "--completion" آپشن جي مڪمل ڪنٽرول لاءِ اختيار مڪمل ڪرڻ لاءِ جڏهن bash استعمال ڪيو ويو؛
  • تشخيصي اوزار مهيا ڪن ٿا ماخذ جي متن جي اقتباسن جي ڊسپلي لائن نمبر جو اشارو ڪندي ۽ بصري طور تي لاڳاپيل معلومات جي نشاندهي ڪن ٿا، جهڙوڪ آپرينڊ جا قسم. لائن نمبرن ۽ ليبلز جي ڊسپلي کي غير فعال ڪرڻ لاءِ، آپشن ”-fno-diagnostics-show-line-numbers“ ۽ ”-fno-diagnostics-show-labels“ مهيا ڪيا ويا آھن؛

    جي سي سي 9 ڪمپيلر سوٽ جو رليز

  • وڌايو ويو C++ ڪوڊ ۾ غلطين جي تشخيص جا اوزار، غلطين جي سببن بابت معلومات جي بهتر پڙهڻ جي صلاحيت ۽ مشڪلاتي پيٽرولن کي اجاگر ڪرڻ؛

    جي سي سي 9 ڪمپيلر سوٽ جو رليز

  • شامل ڪيل آپشن ”-fdiagnostics-format=json“، جيڪو مشين پڙهڻ جي قابل فارميٽ ۾ تشخيصي پيداوار پيدا ڪرڻ جي اجازت ڏئي ٿو (JSON)؛
  • نئين پروفائلنگ جا اختيار شامل ڪيا ويا "-fprofile-filter-files" ۽ "-fprofile-exclude-files" کي پروسيس ڪرڻ لاء ماخذ فائلن کي چونڊڻ لاء؛
  • Address Sanitizer خودڪار متغيرن لاءِ وڌيڪ ڪمپيڪٽ تصديقي ڪوڊ جي پيداوار مهيا ڪري ٿو، جيڪو چڪاس ٿيڻ واري ايگزيڪيوٽو فائل جي ميموري استعمال کي گھٽائي ٿو.
  • بهتر پيداوار ۾ "-fopt- ڄاڻ» (شامل ٿيل اصلاحن بابت تفصيلي ڄاڻ). شامل ڪيا ويا نوان اڳياڙيون ”بهتر ٿيل“ ۽ ”مس ٿيل“، اڳي موجود اڳياڙي ”نوٽ“ کان علاوه. ان لائن-انفولڊنگ ۽ سائيڪل جي ویکٹرائيزيشن تي فيصلا ڪرڻ بابت معلومات جي پيداوار شامل ڪئي وئي؛
  • شامل ڪيو ويو "-fsave-optimization-record" اختيار، جڏهن بيان ڪيو ويو آهي، GCC SRCFILE.opt-record.json.gz فائل کي محفوظ ڪري ٿو خاص اصلاحن جي استعمال تي فيصلن جي وضاحت سان. نئون اختيار "-fopt-info" موڊ کان مختلف آهي اضافي ميٽا ڊيٽا شامل ڪندي، جهڙوڪ پروفائل ۽ ان لائن زنجيرن بابت معلومات؛
  • شامل ڪيل آپشنز “-fipa-stack-alignment” ۽ “-fipa-reference-addressable” کي ڪنٽرول ڪرڻ لاءِ اسٽيڪ الائنمينٽ ۽ ايڊريسنگ موڊس جو استعمال (صرف لکڻ يا پڙهڻ لاءِ صحيح) جامد متغيرن لاءِ interprocedural optimizations.
  • نوان بلٽ ان فنڪشن متعارف ڪرايا ويا آهن ڪنٽرول بائنڊنگ کي ڪنٽرول ڪرڻ لاءِ ۽ انهي سان گڏ برانچ جي اڳڪٿي سان لاڳاپيل رويي ۽ قياس آرائي واري هدايتن تي عمل ڪرڻ: "__builtin_has_attribute«،«__builtin_expect_with_probability”۽“__builtin_speculation_safe_value". ھڪڙي نئين خاصيت شامل ڪئي وئي آھي افعال، متغير ۽ قسمن لاء ڪاپي;
  • Fortran ٻولي لاءِ غير مطابقت رکندڙ ان پٽ/آئوٽ پٽ لاءِ مڪمل سپورٽ لاڳو ڪئي وئي آهي؛
  • Solaris 10 (*-*-solaris2.10) ۽ Cell/BE (سيل براڊ بينڊ انجڻ SPU) پليٽ فارمن لاءِ سپورٽ ختم ڪئي وئي آهي ۽ ايندڙ وڏي رليز ۾ هٽائي ويندي. Armv2، Armv3، Armv5 ۽ Armv5E آرڪيٽيڪچرز لاءِ سپورٽ بند ڪئي وئي آھي. Intel MPX (ميموري پروٽيڪشن ايڪسٽينشن) لاءِ سپورٽ بند ڪئي وئي آهي.

جو ذريعو: opennet.ru

تبصرو شامل ڪريو