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

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

GCC 10.1 قابل ذڪر آهي C++ ٻولي ۾ ڪيترن ئي جدت تي عمل درآمد ڪرڻ لاءِ C++ 20 معيار لاءِ ترقي ڪئي وئي آهي، مستقبل جي سي ٻوليءَ جي معيار سان لاڳاپيل بهتري (C2x)، گڏ ڪرڻ واري پس منظر ۾ نئين اصلاح ۽ تجرباتي مدد. جامد تجزيو موڊ. ان کان سواء، نئين شاخ جي تياري دوران، پروجيڪٽ مخزن کي SVN کان Git ڏانهن منتقل ڪيو.

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

  • شامل ڪيو ويو جامد تجزيي جو تجرباتي طريقو "- پرستار"، جيڪو هڪ پروگرام ۾ ڪوڊ جي عمل جي رستن ۽ ڊيٽا جي وهڪري جي وسيلن جي شدت واري بين الاقوامي تجزيي کي انجام ڏئي ٿو. موڊ تاليف واري مرحلي تي مسئلن کي ڳولڻ جي قابل آهي، جهڙوڪ هڪ ميموري ايريا لاءِ فري () فنڪشن کي ڊبل ڪال، فائل ڊسڪرپٽر ليڪس، ڊيريفرنسنگ ۽ پاسنگ نيل پوائنٽرز، آزاد ٿيل ميموري بلاڪس تائين رسائي، غير شروع ڪيل قدر استعمال ڪرڻ وغيره. OpenSSL ڪوڊ لاءِ نئين موڊ جو استعمال اڳ ۾ ئي ان کي سڃاڻڻ ممڪن بڻائي چڪو آهي خطرناڪ ڪمزوري.
  • بهتر interprocedural optimizations. IPA-SRA (Interprocedural Scalar Shared Replacement) پاس کي بائنڊ ٽائيم تي ڪم ڪرڻ لاءِ نئين سر ڊزائين ڪيو ويو آهي ۽، ٻين شين جي وچ ۾، ھاڻي ھٽائي ٿو ڪمپيوٽ ٿيل ۽ واپس ٿيل غير استعمال ٿيل قدر. "-O2" اصلاح واري موڊ ۾، "-finline-functions" اختيار کي فعال ڪيو ويو آهي، جيڪو وڌيڪ ڪمپيڪٽ ڪوڊ تي عمل جي ڪارڪردگي جي حق ۾ واپس ڪيو ويو آهي. ان لائن فنڪشن جي تعیناتي لاءِ هوريسٽڪ جو ڪم تيز ڪيو ويو آهي. ان لائن توسيع ۽ فنڪشن ڪلوننگ هورسٽڪس هاڻي قدر جي حدن بابت معلومات استعمال ڪري سگهن ٿا انفرادي تبديلين جي اثرائتي اڳڪٿي ڪرڻ لاءِ. C++ لاءِ، قسم تي ٻڌل عرف پارسنگ جي درستگي بهتر ڪئي وئي آھي.
  • وڌايل ڳنڍڻ واري وقت جي اصلاح (LTO). شامل ڪيو ويو نئون executable ڊمپ LTO bytecode سان اعتراض فائلن بابت معلومات کي ري سيٽ ڪرڻ لاء. متوازي LTO پاسز پاڻمرادو طئي ڪندا آهن هڪ ئي وقت ۾ هلندڙ ڪمن جو تعداد ۽، جيڪڏهن اهي طئي نه ٿي سگهن، سي پي يو ڪور جي تعداد بابت معلومات کي متوازي عنصر جي طور تي استعمال ڪريو. zstd الگورتھم استعمال ڪندي LTO bytecode کي دٻائڻ جي صلاحيت شامل ڪئي وئي.
  • ڪوڊ پروفائلنگ جي نتيجن جي بنياد تي اصلاحي ميڪانيزم (PGO - پروفائل-گائيڊ ٿيل اصلاح) کي بھتر ڪيو ويو آھي، جيڪو ڪوڊ جي عمل جي خاصيتن جي تجزيو جي بنياد تي وڌيڪ بھترين ڪوڊ ٺاھي ٿو. تاليف ۽ گرم / سرد ڪوڊ جي الڳ ٿيڻ دوران بهتر پروفائل جي سار سنڀال. اختيار جي ذريعي "-fprofile-values»هاڻي 4 پروفائل قدرن تائين مانيٽر ڪري سگھن ٿا، مثال طور اڻ سڌي ڪالن لاءِ ۽ وڌيڪ صحيح پروفائل معلومات مهيا ڪرڻ.
  • متوازي پروگرامنگ جي وضاحت لاڳو ڪئي وئي C، C++ ۽ Fortran ٻولين لاءِ OpenACC 2.6، جيڪو GPUs ۽ خاص پروسيسرز جهڙوڪ NVIDIA PTX تي عملن کي بند ڪرڻ لاءِ اوزار جي وضاحت ڪري ٿو. معيار تي عملدرآمد لڳ ڀڳ مڪمل آهي اوپن ايم پي 5.0 (اوپن ملٽي پروسيسنگ)، جيڪو API ۽ متوازي پروگرامنگ طريقن کي لاڳو ڪرڻ جا طريقا بيان ڪري ٿو ملٽي ڪور ۽ هائبرڊ (CPU+GPU/DSP) سسٽم تي شيئر ڪيل ميموري ۽ ویکٹرائيزيشن يونٽس (SIMD) سان. شامل ڪيل خاصيتون جهڙوڪ آخري نجي شرطن، اسڪين ۽ لوپ هدايتون، آرڊر ۽ استعمال_device_addr اظهار. OpenMP ۽ OpenACC لاءِ، چوٿين نسل (فجي) ۽ پنجين نسل جي AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20) تي آف لوڊنگ آپريشنز لاءِ سپورٽ شامل ڪئي وئي آھي.
  • C خاندان جي ٻولين لاءِ، "رسائي" فعل شامل ڪيو ويو آھي فعل جي پھچ کي بيان ڪرڻ لاءِ جيڪو ريفرنس يا پوائنٽر ذريعي پاس ڪيو ويو آھي، ۽ اھڙين شين کي عددي دليلن سان ڳنڍڻ لاءِ جنھن ۾ شيون جي سائيز بابت معلومات شامل آھي. "رسائي" سان گڏ ڪم ڪرڻ لاء، "قسم" وصف لاڳو ڪيو ويو آهي غلط رسائي کي ڳولڻ لاء استعمال ڪندڙ جي افعال کان، مثال طور، جڏهن قيمتون لکڻ جي حدن کان ٻاهر واري علائقي ڏانهن. پڻ شامل ڪيو ويو آهي "symver" وصف هڪ ELF فائل ۾ علامتن سان لاڳاپيل مخصوص نسخن نمبرن سان.
  • نئون ڊيڄاريندڙ شامل ڪيو ويو:
    • "-Wstring-compare" ("-Wextra" سان چالو ڪيو ويو) - ايڪسپريس جي موجودگي بابت خبردار ڪري ٿو جنهن ۾ صفر جو مقابلو strcmp ۽ strncmp ڪمن کي ڪال ڪرڻ جي نتيجي سان ڪيو ويو آهي، جيڪو حقيقت جي ڊيگهه جي ڪري هڪ مستقل جي برابر آهي. هڪ دليل جو ٻيو دليل ۾ صف جي سائيز کان وڏو آهي.
    • "-Wzero-length-bounds" ("-Warray-bounds" سان چالو ڪيو ويو) - ڊيڄاري ٿو صفن جي عناصر تائين رسائي جي صفر ڊگھائي، جيڪا ٿي سگھي ٿي ٻين ڊيٽا کي اوور رائٽ ڪرڻ جو سبب.
    • "-Warray-bounds"، "-Wformat-overflow"، "-Wrestrict"، "-Wreturn-local-addr" ۽ "-Wstringop-overflow" وارننگن کي وڌايو ويو آھي حد کان ٻاھرين حالتن جي تعداد کي وڌائڻ لاءِ جيڪي سنڀاليا ويندا آهن.
  • UCN نوٽيفڪيشن (\uNNNN يا \UNNNNNNNN) جي بجاءِ موجوده انڪوڊنگ (UTF-8 ڊفالٽ) استعمال ڪندي سڃاڻپ ڪندڙ ۾ سڌي طرح وسيع اکر بيان ڪرڻ جي صلاحيت کي لاڳو ڪيو. مثال طور:

    static const int π = 3;
    int get_naïve_pi() {
    واپسي π؛
    }

  • C ٻوليءَ لاءِ، C2X معيار جي اندر ترقي ڪيل نئين خاصيتن جو هڪ حصو لاڳو ڪيو ويو آهي (-std=c2x ۽ -std=gnu2x جي وضاحت ڪندي فعال ڪيو ويو آهي): ”[[]]“ نحو جي حمايت ظاهر ڪئي وئي آهي خاصيتن جي وضاحت لاءِ جيئن C++ (مثال طور، [[gnu ::const]]، [[deprecated]]، [[fallthrough]] ۽ [[maybe_unused]]. UTF-8 اکرن سان ثابتين جي وضاحت لاءِ "u8" نحو لاءِ سپورٽ شامل ڪئي وئي.
    نئون ميڪرو شامل ڪيو ويو . strftime ۾ "%OB" ۽ "%Ob" متبادل شامل ڪيا ويا.

  • C لاءِ ڊفالٽ موڊ "-fno-common" آهي، جيڪو ڪجهه پليٽ فارمن تي عالمي متغيرن تائين وڌيڪ موثر رسائي جي اجازت ڏئي ٿو.
  • C++ لاءِ، اٽڪل 16 تبديليون ۽ جدتون لاڳو ڪيون ويون آهن، سي ++ 20 معيار ۾ ترقي ڪيون ويون آهن. شامل ڪيل لفظ "constinit" سميت
    ۽ ٽيمپليٽ ايڪسٽينشن لاءِ سپورٽ لاڳو ڪئي وئي آهي "تصورات". تصورات توهان کي ٽيمپليٽ پيراميٽر جي ضرورتن جو هڪ سيٽ بيان ڪرڻ جي اجازت ڏين ٿا جيڪي، گڏ ڪرڻ وقت، دليلن جي سيٽ کي محدود ڪن ٿيون جيڪي ٽيمپليٽ پيٽرولر طور قبول ڪري سگھجن ٿيون. تصورات کي استعمال ڪري سگھجي ٿو منطقي تضاد کان بچڻ لاءِ ڊيٽا جي قسمن جي ملڪيتن جي وچ ۾ استعمال ٿيل ٽيمپليٽ ۽ ڊيٽا جي قسم جي ملڪيتن جي ان پٽ پيٽرولن جي.

  • G++ مهيا ڪري ٿو اڻڄاتل رويي جو پتو لڳائڻ جو سبب مسلسل شيون تبديل ڪرڻ جي ڪري constexpr ذريعي. compiler پاران ميموري جي گھٽتائي کي گھٽايو ويو جڏهن constexpr جي حساب سان. نئون ڊيڄاريندڙ شامل ڪيو ويو "-Wmismatched-tags" ۽ "-Wredundant-tags".
  • نئين ڪمانڊ لائن جا اختيار تجويز ڪيا ويا آھن:
    • "-fallocation-dce" "نئين" ۽ "خارج" آپريٽرن جي غير ضروري جوڙي کي ختم ڪرڻ لاء.
    • "-fprofile-partial-training" ڪوڊ جي سائيز جي اصلاح کي بند ڪرڻ لاءِ جنهن ۾ ٽريننگ رن نه هجي.
    • "-fprofile-reproducible پروفائل reproducibility جي سطح کي ڪنٽرول ڪرڻ لاءِ.
    • "-fprofile-prefix-path" بيان ڪرڻ لاءِ بنيادي ماخذ تعمير ڊاريڪٽري جو استعمال الڳ پروفائيل جي نسل لاءِ استعمال ڪيو ويو آھي ("-fprofile-generate=profile_dir" ۽ "-fprofile-use=profile_dir" لاءِ).
  • بيان ڪيل اختيارن لاء ڊيڄاريندڙ متن ۾، هائپر لنڪس مهيا ڪيا ويا آهن جيڪي توهان کي انهن اختيارن لاء دستاويزن ڏانهن وڃڻ جي اجازت ڏين ٿيون. URL جي متبادل کي "-fdiagnostics-urls" اختيار استعمال ڪندي ڪنٽرول ڪيو ويندو آهي.
  • شامل ڪيو ويو پري پروسيسر آپريٽر "__ٺهيو_تعمير"، جيڪو استعمال ڪري سگھجي ٿو تعمير ٿيل افعال جي جانچ ڪرڻ لاء.
  • ISO/IEC TS 18661 وضاحتن ۾ بيان ڪيل راؤنڈنگ فنڪشن جي نفاذ سان گڏ هڪ نئون بلٽ ان فنڪشن "__builtin_roundeven" شامل ڪيو ويو، "گول" وانگر، پر گول ڪرڻ وارو حصو 0.5 کان وڌيڪ (وڏي قيمت تائين)، 0.5 کان گهٽ - ھيٺ (صفر تائين)، ۽ 0.5 جي برابر - شروع ٿيندڙ پني الٽيميٽ انگ جي برابري کان.
  • AArch64 آرڪيٽيڪچر لاءِ، SVE2 ايڪسٽينشن لاءِ سپورٽ شامل ڪئي وئي آھي ۽ SVE (Scalable Vector Extension) لاءِ سپورٽ بھتر ڪئي وئي آھي، بشمول SVE ACLE افعال ۽ قسمن لاءِ شامل ڪيل سپورٽ، ۽ ویکٹرائيزيشن جو استعمال. LSE (وڏي سسٽم ايڪسٽينشن) ۽ TME (ٽرانزيڪشنل ميموري ايڪسٽينشن) لاءِ سپورٽ کي وڌايو ويو آهي. Armv8.5-A ۽ Armv8.6-A ۾ تجويز ڪيل نيون هدايتون شامل ڪيون ويون آهن، بشمول بي ترتيب نمبر جنريشن، گول ڪرڻ، ميموري ٽيگ بائنڊنگ،
    bfloat16 ۽ ميٽرڪس ضرب. شامل ڪيل پروسيسر سپورٽ
    بازو Cortex-A77،
    بازو Cortex-A76AE،
    بازو Cortex-A65،
    بازو Cortex-A65AE،
    Arm Cortex-A34 ۽
    Marvell ThunderX3.

  • ARM32 لاءِ ABI FDPIC (64-bit فنڪشن پوائنٽرز) لاءِ سپورٽ شامل ڪئي وئي. 64-bit انٽيگر آپريشنز جي ٻيهر ڊزائين ڪيل ۽ بهتر ڪيل پروسيسنگ. شامل ڪيل سي پي يو سپورٽ
    بازو Cortex-A77،
    Arm Cortex-A76AE ۽
    بازو Cortex-M35P. ACLE ڊيٽا پروسيسنگ هدايتون لاءِ وڌايل سپورٽ، بشمول 32-bit SIMD، 16-bit ضرب، لچ رياضي، ۽ ٻيون ڊي ايس پي الگورٿم اصلاحون. شامل ڪيل تجرباتي سپورٽ لاءِ ACLE CDE (ڪسٽم ڊيٽاپاٿ ايڪسٽينشن) هدايتون.

  • GCN مائڪرو آرڪيٽيڪچر جي بنياد تي AMD GPUs لاءِ پس منظر ۾ خاص طور تي بهتر ڪوڊ نسل ۽ ویکٹرائيزيشن.
  • AVR فن تعمير لاءِ XMEGA-like ڊوائيسز لاءِ سپورٽ شامل ڪئي وئي
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATtiny808, ATtiny809, ATmega1608, ATmega1609, ATmega3208, ATtiny 3209، ATmega4808، ATmega4809 XNUMX، ATmegaXNUMX ۽ ATmegaXNUMX.

  • IA-32/x86-64 آرڪيٽيڪچرز لاءِ هڪ نئون Intel ENQCMD هدايتون سيٽ آرڪيٽيڪچر ايڪسٽينشن (-menqcmd) شامل ڪيو ويو آهي. Intel Cooperlake (-march=cooperlake، AVX512BF16 ISA ايڪسٽينشن شامل آھي) ۽ ٽائگرليڪ (-march=tigerlake، MOVDIRI، MOVDIR64B ۽ AVX512VP2INTERSECT ISA ايڪسٽينشن شامل آھن) سي پي يوز لاءِ شامل ڪيل سپورٽ.
  • HSA آرڪيٽيڪچر جي بنياد تي هيٽروجنيئس ڪمپيوٽنگ سسٽم لاءِ HSAIL (Heterogeneous System Architecture Intermediate Language) جو نفاذ رد ڪيو ويو آهي ۽ امڪاني طور تي مستقبل جي رليز ۾ هٽايو ويندو.

جو ذريعو: opennet.ru

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