د GCC 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) وړتیاوو پلي کولو ته دوام ورکوي، د D ژبې لپاره په فرنټ اینډ کې شاملول، د OpenMP 5.0 لپاره جزوی ملاتړ د OpenACC 2.5 لپاره نږدې بشپړ ملاتړ، د پابندۍ په مرحله کې د متقابل عمل او اصلاح کولو اندازه کول، د تشخیصي وسیلو پراخول او د نوي اخطارونو اضافه کول، د OpenRISC، C-SKY V2 او AMD GCN GPU لپاره بیکینډونه.

اصلي بدل کړئ:

  • د D پروګرامینګ ژبې لپاره ملاتړ اضافه شوی. په GCC کې د کمپیلر سره مخکینۍ برخه شامله ده GDC (Gnu D Compiler) او د چلولو وخت کتابتونونه (libphobos)، کوم چې تاسو ته اجازه درکوي د معیاري GCC کارولو لپاره د D پروګرام کولو ژبه کې پروګرامونه جوړ کړي. په GCC کې د D ژبې مالتړ فعالولو پروسه پیل شوی دی بیرته په 2011 کې، مګر کش کړ د دې اړتیا له امله چې کوډ د GCC اړتیاو سره مطابقت ولري او ډیجیټل مریخ ته د فکري ملکیت حقونو لیږد سره ستونزې ، کوم چې د D برنامې ژبه وده کوي؛
  • د کوډ جنراتور ته ښه والی راغلی دی. د بیلګې په توګه، د سویچ بیانونو پراخولو لپاره د بیلابیلو ستراتیژیو کارول (جمپ میز، بټ ټیسټ، د پریکړې ونې) د شرایطو پورې اړه لري. د خطي دندو بدلولو وړتیا اضافه کړه چې پکې د "-ftree-switch-conversion" اصلاح کولو په کارولو سره د سویچ بیان شامل وي (د مثال په توګه ، د شرایطو یوه مجموعه لکه "کیس 2: څنګه = 205؛ وقفه؛ قضیه 3: څنګه = 305؛ وقفه ؛" به "100 * څنګه + 5" ته بدل شي؛
  • د پروسیجرونو اصلاح کول. د انلاین ګمارنې ترتیبات د عصري C++ کوډبیسونو لپاره تطابق شوي او د نوي پیرامیټونو سره پراخ شوي max-inline-insns-small, max-inline-insns-size, uninline-function-inss, uninlined-function-time, uninlined-thunk-insns او uninlined. - ټکان وخت د سړه / ګرم کوډ جلا کولو دقت او تیریدو ښه والی. د خورا لوی لپاره ښه پیمانه د ژباړې واحدونه (د مثال په توګه، کله چې لوی پروګرامونو ته د لینک کولو په مرحله کې د اصلاح کولو غوښتنه کول)؛
  • د کوډ پروفایل کولو پایلو پراساس د اصلاح کولو میکانیزم (PGO - د پروفایل لارښود اصلاح) ښه شوی ، کوم چې د کوډ اجرا کولو ځانګړتیاو تحلیل پراساس ډیر غوره کوډ رامینځته کوي. لنډیز اختیار "-fprofile-استعمال" اوس د اصلاح کولو طریقې شاملې دي "-fversion-loops-for-strides"، "-floop-interchange"، "-floop-unroll-and-jam" او "-ftree-loop-distribution". په فایلونو کې د کاونټرونو سره د هسټوګرامونو شاملول لرې کړل ، کوم چې د پروفایلونو سره د فایلونو اندازه کمه کړې (هسټوګرامونه اوس په الوتنه کې رامینځته کیږي کله چې د لینک کولو پرمهال اصلاح کول ترسره کوي)؛
  • د لینک کولو وخت اصلاح کول (LTO). د ډولونو ساده کول د پایلې رامینځته کولو دمخه چمتو شوي ، کوم چې دا ممکنه کړې چې د پام وړ د LTO څیز فایلونو اندازه کمه کړي ، په پابند مرحله کې د حافظې مصرف کم کړي ، او د عملیاتو موازي کول ښه کړي. د پارټیشنونو شمیر (-param lto-partitions) له 32 څخه 128 ته لوړ شوی، کوم چې د ډیرو CPU تارونو سره په سیسټمونو کې فعالیت ښه کوي. یو پیرامیټر اضافه شوی ترڅو د اصلاح کونکي پروسو شمیر کنټرول کړي
    "-پرم lto-max-streaming-parallelism"؛

    د پایلې په توګه، د GCC 8.3 په پرتله، په GCC 9 کې معرفي شوي اصلاحات اجازه د Firefox 5 او LibreOffice 66 د تالیف وخت شاوخوا 6.2.3٪ کم کړئ. د اعتراض فایلونو اندازه 7٪ کمه شوې. په 8 کور CPU کې د پابندۍ وخت 11٪ کم شوی. د لینک کولو مرحلې ترتیبي اصلاح مرحله اوس 28٪ ګړندی ده او 20٪ لږ حافظه مصرفوي. د LTO موازي مرحلې د هر پروسیسر حافظې مصرف 30٪ کم شوی؛

  • د موازي پروګرام کولو ډیری مشخصات د C، C++ او Fortran ژبو لپاره پلي کیږي OpenACC 2.5، کوم چې په GPUs او ځانګړي پروسیسرونو لکه NVIDIA PTX کې د آفلوډ کولو عملیاتو لپاره وسیلې تعریفوي؛
  • د معیار لپاره جزوی ملاتړ د C او C++ لپاره پلي شوی خلاص ايم پي 5.0 (Open Multi-Processing)، کوم چې د مشترکه حافظې او ویکٹرائزیشن واحدونو (SIMD) سره په ملټي کور او هایبرډ (CPU+GPU/DSP) سیسټمونو کې د C, C++ او Fortran ژبو لپاره د موازي پروګرام کولو میتودونو پلي کولو API او میتودونه تعریفوي. ;
  • د C ژبې لپاره نوي اخطارونه اضافه شوي:-د پیکل شوي-غړي پتهاو
    «-وابسولټ-ارزښت" (کله چې د مطلق ارزښت محاسبه کولو لپاره افعال ته لاسرسی ومومئ ، که چیرې د ټاکل شوي دلیل لپاره ډیر مناسب فعالیت شتون ولري ، د مثال په توګه ، fabs(3.14) باید د abs(3.14) پرځای وکارول شي. د C++ لپاره نوي اخطارونه اضافه شوي: "-Wdeprecated-copy"،
    "-Winit-list-lifetime"، "-Wredundant-move"، "-Wpessimizing-move" او "-Wclass-conversion". ډیری دمخه موجود اخطارونه پراخ شوي؛

  • د راتلونکي C ژبې معیاري برخې لپاره تجربوي ملاتړ اضافه شوی، کوډ نوم C2x. د C2x ملاتړ فعالولو لپاره، "-std=c2x" او "-std=gnu2x" (د GNU توسیع فعالولو لپاره) اختیارونه وکاروئ. معیار لاهم د پراختیا په لومړي مرحله کې دی، له همدې امله، د دې وړتیاوو څخه، یوازې د یو دلیل سره بیان _Static_assert ملاتړ کیږي (_Static_assert د دوه دلیلونو سره په C11 کې معیاري شوی)؛
  • د C++ 17 معیار لپاره ملاتړ مستحکم اعلان شوی. په فرنټ اینډ کې، د C++17 ژبې وړتیاوې په بشپړه توګه پلي شوي، او په libstdc++ کې، د کتابتون دندې په معیار کې تعریف شوي بشپړ پلي کولو ته نږدې دي؛
  • ادامه ورکړه احساس د راتلونکي C++2a معیاري عناصر. د مثال په توګه، د پیل کولو په جریان کې د رینجونو شاملولو وړتیا اضافه شوې، د لامبډا بیانونو لپاره غزول پلي شوي، د ډیټا جوړښتونو د خالي غړو لپاره ملاتړ او احتمالي / احتمالي صفات اضافه شوي، په مشروط بیانونو کې د مجازی فعالیتونو غږولو وړتیا چمتو شوې. , etc.
    د C++2a ملاتړ فعالولو لپاره، د "-std=c++2a" او "-std=gnu++2a" اختیارونه وکاروئ. د C++2a، std::remove_cvref، std::unwrap_reference، std::unwrap_decay_ref، std::is_nothrow_convertible او std::type_identity ځانګړنو، std::midpointer، std::ppointler لپاره د libstdc++ لپاره بټ او نسخه سرلیک فایلونه اضافه شوي , std::bind_front,
    std::visit, std::is_constant_evaluated او std::assume_aligned، د char8_t ډول لپاره اضافي ملاتړ، د تارونو د مخفف او ضمیمه چک کولو وړتیا پلي کړه (start_with, ends_with);

  • د نوي ARM پروسیسرونو لپاره ملاتړ اضافه شوی
    Cortex-A76، Cortex-A55، Cortex-A76 DynamIQ big.LITTLE او Neoverse N1. د پیچلو شمیرو سره کار کولو لپاره په Armv8.3-A کې د لارښوونو لپاره اضافه شوي ملاتړ اضافه شوی ترڅو د پیچلو شمیرو سره کار وکړي ، د pseudo-random شمیره تولید (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" اختیار اضافه شوی؛
  • د تشخیصي وسیلې د سرچینې متن اقتباسونو ښودنه کوي چې د کرښې شمیره په ګوته کوي او په لید ډول اړوند معلومات په نښه کوي ، لکه د عملیات ډولونه. د لاین شمیرو او لیبلونو د ښودلو غیر فعالولو لپاره، "-fno-diagnostics-show-line-numbers" او "-fno-diagnostics-show-labels" اختیارونه چمتو شوي؛

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

  • پراخ شوی په C++ کوډ کې د تېروتنو د تشخیص لپاره وسیلې، د تېروتنو د لاملونو په اړه د معلوماتو د لوستلو ښه والی او د ستونزو د پارامترونو روښانه کول؛

    د GCC 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" د سټیک الینمینټ کنټرول او د ادرس کولو طریقو کارول (یوازې د لیکلو یا لوستلو دقیق) د متقابل عمل اصلاح کولو پرمهال د جامد تغیراتو لپاره؛
  • نوي جوړ شوي افعال د خاصیت پابندۍ کنټرول او همدارنګه د شاخ وړاندوینې او د قیاس لارښوونې اجرا کولو پورې اړوند چلند لپاره معرفي شوي: "__جوړول_هس_خصوصیت«،«__جوړول_توقع_سره_احتمال» и «__بنسټ_ټاکل_خوندي_ارزښت". د دندو، تغیراتو او ډولونو لپاره یو نوی صفت اضافه شوی کاپي;
  • د فورټران ژبې لپاره د غیر متناسب ان پټ/آؤټ پټ بشپړ ملاتړ پلي شوی؛
  • د سولاریس 10 (*-*-solaris2.10) او Cell/BE (Cell Broadband Engine SPU) پلیټ فارمونو لپاره ملاتړ له مینځه وړل شوی او په راتلونکي لوی ریلیز کې به لرې شي. د Armv2، Armv3، Armv5 او Armv5E جوړښتونو لپاره ملاتړ بند شوی دی. د Intel MPX (د حافظې محافظت توسیع) لپاره ملاتړ بند شوی.

سرچینه: opennet.ru

Add a comment