د یو کال پرمختګ وروسته
GCC 10.1 د C++ 20 معیارونو لپاره رامینځته شوي په C++ ژبه کې د ډیری نوښتونو پلي کولو لپاره د پام وړ دی ، د راتلونکي C ژبې معیار (C2x) پورې اړوند پرمختګونه ، د کمپیلر بیکنډونو کې نوي اصلاحونه او تجربې ملاتړ
اصلي
-
زیاته کړه د جامد تحلیل تجربوي حالت "- فینالیزر "، کوم چې په برنامه کې د کوډ اجرا کولو لارو او ډیټا جریانونو سرچینې - ژور متقابل تحلیل ترسره کوي. موډ د تالیف په مرحله کې د ستونزو موندلو وړتیا لري ، لکه د یوې حافظې ساحې لپاره وړیا () فنکشن ته دوه ځله زنګ وهل ، د فایل ډیسکریټر لیکونه ، د نول پوائنټرونو حواله کول او تیریدل ، د حافظې آزاد بلاکونو ته لاسرسی ، د غیر پیل شوي ارزښتونو کارول او داسې نور. د OpenSSL کوډ لپاره د نوي حالت کارول لا دمخه د پیژندلو امکان لريخطرناک زیانمنتیا . - د پروسیجرونو اصلاح کول. د IPA-SRA (Interprocedural Scalar Shared Replacement) پاس د پابندۍ په وخت کې د کار کولو لپاره له سره ډیزاین شوی او د نورو شیانو په مینځ کې اوس حساب شوي او بیرته نه کارول شوي ارزښتونه لرې کوي. د "-O2" اصلاح کولو حالت کې، د "-finline-functions" اختیار فعال شوی، کوم چې د اجرا کولو فعالیت په پرتله د ډیر کمپیکٹ کوډ غوره کولو لپاره بیرته راستانه شوی. د انلاین فعالیت ګمارلو لپاره د هیوریسټیک کار ګړندی شوی. د انلاین توسعې او فعالیت کلونینګ هیوریسټیک اوس کولی شي د ارزښت رینجونو په اړه معلومات وکاروي ترڅو د انفرادي بدلونونو اغیزمنتوب وړاندوینه وکړي. د C++ لپاره، د ډول پر بنسټ د عرف پارس کولو دقت ښه شوی دی.
- د لینک کولو وخت اصلاح کول (LTO). د اجرا وړ نوي اضافه شوي
lto-ډمپ د LTO بایټ کوډ سره د اعتراض فایلونو په اړه معلومات بیا تنظیم کول. موازي LTO پاسونه په اوتومات ډول په ورته وخت کې د چلولو د کارونو شمیر ټاکي او که دوی نشي ټاکل کیدی، د موازي کولو فکتور په توګه د CPU کورونو شمیر په اړه معلومات وکاروئ. د zstd الګوریتم په کارولو سره د LTO بایټکوډ کمپریس کولو وړتیا اضافه کړه. - د کوډ پروفایل کولو پایلو پراساس د اصلاح کولو میکانیزم (PGO - د پروفایل لارښود اصلاح) ښه شوی ، کوم چې د کوډ اجرا کولو ځانګړتیاو تحلیل پراساس ډیر غوره کوډ رامینځته کوي. د تالیف او ګرم / سړه کوډ جلا کولو پرمهال د پروفایل ښه ساتنه. د اختیار له لارې "
-fprofile-values » اوس کولی شي تر 4 پروفایل ارزښتونو څارنه وکړي، د بیلګې په توګه د غیر مستقیم تلیفونونو لپاره او د پروفایل ډیر دقیق معلومات چمتو کول. - د موازي پروګرام کولو مشخصات د C، C++ او Fortran ژبو لپاره پلي شوي
OpenACC 2.6 ، کوم چې په GPUs او ځانګړي پروسیسرونو لکه NVIDIA PTX کې د آفلوډ کولو عملیاتو لپاره وسیلې تعریفوي. د معیارونو پلي کول نږدې بشپړ شوي ديخلاص ايم پي 5.0 (Open Multi-Processing)، کوم چې د مشترکه حافظې او ویکٹرائزیشن واحدونو (SIMD) سره په ملټي کور او هایبرډ (CPU+GPU/DSP) سیسټمونو کې د موازي پروګرام کولو میتودونو پلي کولو API او میتودونه تعریفوي. اضافه شوي ځانګړتیاوې لکه وروستي شخصي شرطونه، سکین او لوپ لارښوونې، ترتیب او استعمال_device_addr څرګندونې. د OpenMP او OpenACC لپاره، په څلورم نسل (فیجي) او پنځم نسل AMD Radeon (GCN) GPUs (VEGA 10/VEGA 20) کې د آفلوډ کولو عملیاتو لپاره ملاتړ اضافه شوی. - د C کورنۍ ژبو لپاره، د "لاسرسۍ" فنکشن اضافه شوی ترڅو د حوالې یا پوائنټر لخوا تیر شوي شیانو ته د فعالیت لاسرسی تشریح کړي، او دا ډول توکي د انټیجر دلیلونو سره شریک کړي چې د شیانو د اندازې په اړه معلومات لري. د "لاسرسۍ" سره په ګډه کار کولو لپاره، د "ډول" خاصیت د کارونکي دندو څخه د غلط لاسرسي موندلو لپاره پلي کیږي، د بیلګې په توګه، کله چې د صف له حدودو بهر یوې سیمې ته ارزښتونه ولیکئ. همدارنګه اضافه شوي د "سیمور" ځانګړتیا د ځانګړي نسخه شمیرو سره په 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]]، [[منحرف شوي]]، [[fallthrough]] او [[شاید_unused]]. د UTF-8 حروفونو سره د ثابتو تعریفولو لپاره د "u8" نحو لپاره ملاتړ اضافه شوی.
نوي میکرو اضافه کړل . strftime ته "%OB" او "%Ob" بدیلونه اضافه کړل. - د C لپاره ډیفالټ حالت "-fno-common" دی، کوم چې په ځینو پلیټ فارمونو کې نړیوالو متغیرونو ته د لا اغیزمن لاسرسي اجازه ورکوي.
- د C++ لپاره، شاوخوا 16 بدلونونه او نوښتونه پلي شوي، چې په C++20 معیار کې جوړ شوي دي. د اضافه شوي کلیدي کلمې "constinit" په شمول
او د ټیمپلیټ توسیع لپاره ملاتړ پلي شوی دی "مفاهیم ". مفاهیم تاسو ته اجازه درکوي د ټیمپلیټ پیرامیټرو اړتیاو یوه سیټ تعریف کړئ چې د تالیف په وخت کې د دلیلونو سیټ محدود کړي چې د ټیمپلیټ پیرامیټونو په توګه منل کیدی شي. مفاهیم د ټیمپلیټ دننه کارول شوي ډیټا ډولونو ملکیتونو او د ان پټ پیرامیټرو ډیټا ډول ملکیتونو ترمینځ د منطقي تضادونو مخنیوي لپاره کارول کیدی شي. - G++ د غیر تعریف شوي چلند کشف چمتو کوي چې د constexpr له لارې د ثابت شیانو بدلولو له امله رامینځته کیږي. د کمپیلر لخوا د حافظې مصرف کم شوی کله چې د constexpr محاسبه کول. نوي اخطارونه "-Wmismatched-tags" او "-Wredundant-tags" اضافه کړل.
- د کمانډ لاین نوي اختیارونه وړاندیز شوي:
- "-fallocation-dce" د "نوي" او "ړنګولو" آپریټرانو غیر ضروري جوړه لرې کولو لپاره.
- "-fprofile-partial-training" د کوډ لپاره د اندازې اصلاح کولو غیر فعالولو لپاره چې د روزنې چل نه لري.
- "-fprofile-reproducible ترڅو د پروفایل بیا تولید کچه کنټرول کړي.
- "-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 (د توزیع وړ ویکتور توسیع) لپاره ملاتړ ښه شوی ، پشمول د جوړ شوي SVE ACLE دندو او ډولونو لپاره اضافي ملاتړ ، او د ویکٹرائزیشن کارول. د LSE (لوی سیسټم توسیع) او TME (د لیږد یادښت توسیع) لپاره ملاتړ پراخ شوی. په Armv8.5-A او Armv8.6-A کې وړاندیز شوي نوي لارښوونې اضافه شوي، په شمول د تصادفي شمیرې تولید، ګردي کولو، د حافظې ټاګ پابندۍ لپاره لارښوونې،
bfloat16 او matrix ضرب. د پروسیسر ملاتړ اضافه شوی
آرم کورټیکس-A77،
آرم کورټیکس-A76AE
آرم کورټیکس-A65،
آرم کورټیکس-A65AE
Arm Cortex-A34 او
مارویل تندر ایکس ۳ - د ARM32 لپاره د ABI FDPIC (64-bit فنکشن پوائنټرونو) لپاره ملاتړ اضافه شوی. د 64-bit انټیجر عملیاتو بیا ډیزاین او مطلوب پروسس کول. د CPU ملاتړ اضافه شوی
آرم کورټیکس-A77،
Arm Cortex-A76AE او
Arm Cortex-M35P. د ACLE ډیټا پروسس کولو لارښوونو لپاره پراخه ملاتړ ، پشمول د 32-bit SIMD ، 16-bit ضرب ، لیچ ریاضی ، او نور DSP الګوریتم اصلاح کول. د ACLE CDE (د ګمرک ډیټاپت توسیع) لارښوونو لپاره تجربوي ملاتړ اضافه شوی. - د GCN مایکرو آرکیټیکچر پراساس د AMD GPUs لپاره په شالید کې د پام وړ د کوډ تولید او ویکٹرائزیشن ښه شوی.
- د AVR معمارۍ لپاره د XMEGA په څیر وسیلو لپاره ملاتړ اضافه شوی
ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATminy808, ATmega809, ATmega1608, ATmega1609 3208، ATmega3209، ATmega4808 4809، ATmegaXNUMX او ATmegaXNUMX. - د IA-32/x86-64 آرکیټیکچرونو لپاره د Intel ENQCMD نوی لارښود سیټ آرکیټیکچر توسیع (-menqcmd) اضافه شوی. د Intel Cooperlake (-march=cooperlake، د AVX512BF16 ISA توسیع شامل دي) او ټایګرلیک (-march=tigerlake، د MOVDIRI، MOVDIR64B او AVX512VP2INTERSECT ISA توسیع شامل دي) CPUs لپاره اضافي ملاتړ.
- د HSA جوړښت پراساس د متفاوت کمپیوټري سیسټمونو لپاره د HSAIL (Heterogeneous System Architecture Intermediate Language) پلي کول له پامه غورځول شوي او احتمال به په راتلونکي خپرونه کې لرې شي.
سرچینه: opennet.ru