د GCC 10 کمپیلر سویټ خوشې کول

د یو کال پرمختګ وروسته خپور شوی د کمپیلرونو وړیا سیټ خوشې کول GCC 10.1، په نوي GCC 10.x څانګه کې لومړی لوی ریلیز. د..سره په سمون نوې سکیم د خوشې کولو شمیره، نسخه 10.0 د پراختیا په بهیر کې کارول کیده، او د GCC 10.1 د خوشې کیدو څخه لږ وخت دمخه، د GCC 11.0 څانګه لا دمخه شاخه شوې وه، چې د هغې پر بنسټ راتلونکی مهم ریلیز، GCC 11.1، به جوړ شي.

GCC 10.1 د C++ 20 معیارونو لپاره رامینځته شوي په C++ ژبه کې د ډیری نوښتونو پلي کولو لپاره د پام وړ دی ، د راتلونکي C ژبې معیار (C2x) پورې اړوند پرمختګونه ، د کمپیلر بیکنډونو کې نوي اصلاحونه او تجربې ملاتړ د جامد تحلیل حالت. برسېره پردې، د یوې نوې څانګې د چمتو کولو په جریان کې، پروژې ذخیره د SVN څخه Git ته لیږدول.

اصلي بدل کړئ:

  • زیاته کړه د جامد تحلیل تجربوي حالت "- فینالیزر"، کوم چې په برنامه کې د کوډ اجرا کولو لارو او ډیټا جریانونو سرچینې - ژور متقابل تحلیل ترسره کوي. موډ د تالیف په مرحله کې د ستونزو موندلو وړتیا لري ، لکه د یوې حافظې ساحې لپاره وړیا () فنکشن ته دوه ځله زنګ وهل ، د فایل ډیسکریټر لیکونه ، د نول پوائنټرونو حواله کول او تیریدل ، د حافظې آزاد بلاکونو ته لاسرسی ، د غیر پیل شوي ارزښتونو کارول او داسې نور. د 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

Add a comment