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

ترقي جي هڪ سال کان پوء، مفت ڪمپلر سوٽ GCC 12.1 جاري ڪيو ويو آهي، نئين GCC 12.x برانچ ۾ پهريون اهم رليز. نئين رليز نمبرنگ اسڪيم جي مطابق، ورزن 12.0 ڊولپمينٽ جي عمل ۾ استعمال ڪيو ويو، ۽ GCC 12.1 جي رليز ٿيڻ کان ٿورو اڳ، GCC 13.0 برانچ اڳ ۾ ئي بند ٿي چڪي هئي، جنهن جي بنياد تي ايندڙ وڏي رليز، GCC 13.1، ٿيندي. ٺهڻ. 23 مئي تي، پروجيڪٽ GCC جي پهرين ايڊيشن جي ٺهڻ کان وٺي 35 سال ملهائيندي.

مکيه تبديليون:

  • CTF (Compact Type Format) ڊيبگنگ فارميٽ لاءِ شامل ڪيل سپورٽ، جيڪا C قسم جي معلومات جي ڪامپيٽ اسٽوريج مهيا ڪري ٿي، ڪمن جي وچ ۾ ڪنيڪشن ۽ ڊيبگنگ علامتون. جڏهن ELF شين ۾ شامل ڪيو ويو، فارميٽ ڊيٽا جي نقل کان بچڻ لاءِ EFL ڪردار جدولن جي استعمال جي اجازت ڏئي ٿو.
  • "STABS" ڊيبگنگ انفارميشن اسٽوريج فارميٽ لاءِ سپورٽ، جيڪا 1980s ۾ ٺاهي وئي، ختم ڪئي وئي آهي.
  • C ۽ C++ ٻولين لاءِ مستقبل جي C2X ۽ C++ 23 معيارن لاءِ سهڪار وڌائڻ لاءِ ڪم جاري آهي. مثال طور، "جيڪڏهن استحڪام" اظهار جي حمايت شامل ڪئي وئي آهي؛ فنڪشن جي دليلن ۾ آٽو استعمال ڪرڻ جي اجازت ڏني وئي (“f(auto(g()))”)؛ غير لغوي متغيرن، گوٽو ۽ ليبلز جي استعمال جي اجازت ڏني وئي آھي ڪمن ۾ جن کي constexpr قرار ڏنو ويو آھي؛ multidimensional انڊيڪس آپريٽرز آپريٽر لاءِ شامل ڪيل سپورٽ[]؛ جيڪڏهن، لاء ۽ سوئچ ۾، شروعاتي بلاڪ جي صلاحيتن کي وڌايو ويو آهي ("لاء (استعمال ڪندي T = int؛ T e : v)").
  • C++ معياري لائبريري C++ 20 ۽ C++ 23 معيارن جي تجرباتي حصن لاءِ مدد کي بهتر بڻايو آهي. std::move_only_function، ، std::basic_string::resize_and_overwrite، ، ۽ std::invoke_r لاءِ سپورٽ شامل ڪئي وئي. استعمال ڪرڻ جي اجازت ڏني وئي std::unique_ptr, std::vector, std::basic_string, std::optional and std::variant in constexpr functions.
  • فورٽران فرنٽ اينڊ TS 29113 وضاحتن لاءِ مڪمل مدد فراهم ڪري ٿي، جيڪا فورٽرين ۽ سي ڪوڊ جي وچ ۾ پوربليت کي يقيني بڻائڻ جي صلاحيتن کي بيان ڪري ٿي.
  • شامل ڪيل سپورٽ __builtin_shufflevector(vec1, vec2, index1, index2, ...) جي واڌ لاءِ اڳ ۾ ڪلانگ ۾ شامل ڪئي وئي، جيڪا عام ویکٹر شفل ۽ شفل آپريشنز کي انجام ڏيڻ لاءِ ھڪڙي ڪال پيش ڪري ٿي.
  • جڏهن "-O2" اصلاح جي سطح کي استعمال ڪندي، ویکٹرائيزيشن کي ڊفالٽ طور تي فعال ڪيو ويندو آهي (-ftree-vectorize ۽ -fvect-cost-model= تمام سستا طريقا فعال آهن). تمام سستو ماڊل ویکٹرائيزيشن جي اجازت ڏئي ٿو صرف ان صورت ۾ جڏهن ویکٹر ڪوڊ مڪمل طور تي اسڪيلر ڪوڊ کي بدلائي سگھي ٿو جيڪو ویکٹرائز ڪيو پيو وڃي.
  • شامل ڪيو ويو "-ftrivial-auto-var-init" موڊ کي اسٽيڪ تي متغيرن جي واضح شروعات کي چالو ڪرڻ لاءِ مسئلن کي ٽريڪ ڪرڻ ۽ غير شروع ٿيل متغيرن جي استعمال سان لاڳاپيل خطرن کي بلاڪ ڪرڻ لاءِ.
  • C ۽ C++ ٻولين لاءِ، ھڪ بلٽ ان فنڪشن __builtin_dynamic_object_size شامل ڪيو ويو آھي ڪنھن شئي جي سائيز جو تعين ڪرڻ لاءِ، جيڪو Clang کان ساڳي فنڪشن سان مطابقت رکي ٿو.
  • C ۽ C++ ٻولين لاءِ، ”غير دستياب“ وصف لاءِ سپورٽ شامل ڪئي وئي آھي (مثال طور، توھان انھن ڪمن کي نشانو بڻائي سگھو ٿا جيڪي جيڪڏھن توھان استعمال ڪرڻ جي ڪوشش ڪندا ته غلطي پيدا ٿيندي).
  • C ۽ C++ ٻولين لاءِ، اڳواٽ پروسيسنگ هدايتن لاءِ سپورٽ “#elifdef” ۽ “#elifndef” شامل ڪئي وئي آهي.
  • شامل ڪيو ويو "-Wbidi-chars" جھنڊو ڊيڄاريندڙ ڏيکارڻ لاءِ جيڪڏھن UTF-8 اکر غلط استعمال ڪيا ويا آھن، ترتيب کي تبديل ڪندي جنھن ۾ ٻه طرفي متن ڏيکاريل آھي.
  • شامل ڪيو ويو "-Warray-compare" جھنڊو ھڪ ڊيڄاريندڙ ڏيکارڻ لاءِ جڏھن ٻن ڪمرن جو مقابلو ڪرڻ جي ڪوشش ڪئي وڃي جيڪي صفن جو حوالو ڏين ٿيون.
  • OpenMP 5.0 ۽ 5.1 (اوپن ملٽي پروسيسنگ) معيارن تي عمل درآمد، جيڪي ملٽي ڪور ۽ هائبرڊ (CPU+GPU/DSP) سسٽم تي متوازي پروگرامنگ طريقن کي لاڳو ڪرڻ لاءِ API ۽ طريقن جو تعين ڪن ٿا گڏيل ميموري ۽ ویکٹرائيزيشن يونٽس (SIMD) سان. ، جاري آهي.
  • OpenACC 2.6 متوازي پروگرامنگ جي وضاحت جو بهتر عمل، جيڪو GPUs ۽ خاص پروسيسرز جهڙوڪ NVIDIA PTX تي آف لوڊ ڪرڻ جي عملن لاءِ اوزارن جي وضاحت ڪري ٿو.
  • وڌايل هدايتن لاءِ سپورٽ Intel AVX86-FP512 ۽ _Float16 قسم x16 آرڪيٽيڪچر لاءِ ڪوڊ نسل جي پس منظر ۾ شامل ڪيو ويو آھي.
  • x86 آرڪيٽيڪچر لاءِ، غير مشروط اڳتي وڌڻ جي عملن کان پوءِ هدايتن جي قياس آرائي جي ڪري پروسيسرز ۾ خطرن جي خلاف تحفظ شامل ڪيو ويو آهي. ميموري ۾ شاخ جي هدايتن جي فوري طور تي هدايتن جي اڳڀرائي واري پروسيسنگ جي ڪري مسئلو ٿئي ٿو (SLS، سڌي لائين اسپيڪيوليشن). تحفظ کي فعال ڪرڻ لاء، "-mharden-sls" اختيار پيش ڪيو ويو آهي.
  • تجرباتي جامد تجزيي ۾ غير شروعاتي متغيرن جي استعمال جو پتو لڳايو ويو. ان لائن داخلن ۾ اسيمبلي ڪوڊ جي تجزيو ڪرڻ لاءِ ابتدائي مدد شامل ڪئي وئي. بهتر ميموري ٽريڪنگ. پروسيسنگ سوئچ ايڪسپريسز لاءِ ڪوڊ ٻيهر لکيو ويو آهي.
  • libgccjit ۾ 30 نيون ڪالون شامل ڪيون ويون آهن، هڪ گڏيل لائبريري هڪ ڪوڊ جنريٽر کي ٻين پروسيس ۾ شامل ڪرڻ ۽ JIT کي استعمال ڪندي بائيٽ ڪوڊ کي مشين ڪوڊ ۾ گڏ ڪرڻ لاءِ.
  • CO-RE لاءِ سپورٽ (Compile One - Run Everywhere) ميڪانيزم کي بيڪ اينڊ ۾ شامل ڪيو ويو آهي BPF bytecode پيدا ڪرڻ لاءِ، جيڪو توهان کي اجازت ڏئي ٿو ته eBPF پروگرامن جو ڪوڊ صرف هڪ ڀيرو لينڪس ڪنيل لاءِ گڏ ڪري ۽ هڪ خاص يونيورسل لوڊر استعمال ڪريو جيڪو لينڪس ڪرنل لاءِ استعمال ڪري ٿو. لوڊ ٿيل پروگرام کي موجوده ڪنييل ۽ بي پي ايف جي قسم جي شڪل ۾). CO-RE مرتب ٿيل eBPF پروگرامن جي پورائيبلٽي جي مسئلي کي حل ڪري ٿو، جيڪي اڳ ۾ صرف ڪنيل جي ورزن ۾ استعمال ٿي سگھن ٿا جن لاءِ اهي مرتب ڪيا ويا هئا، ڇاڪاڻ ته ڊيٽا جي جوڙجڪ ۾ عناصر جي پوزيشن نسخي کان ورزن تائين تبديل ٿي ويندي آهي.
  • RISC-V پس منظر نئين هدايتن جي سيٽ آرڪيٽيڪچر ايڪسٽينشنز zba، zbb، zbc ۽ zbs لاءِ سپورٽ شامل ڪري ٿو، گڏوگڏ ویکٹر ۽ اسڪيلر ڪرپٽوگرافڪ آپريشنز لاءِ ISA ايڪسٽينشنز. ڊفالٽ طور، RISC-V ISA 20191213 وضاحتن لاءِ سپورٽ مهيا ڪئي وئي آھي. -mtune=thead-c906 جھنڊو شامل ڪيو ويو آھي T-HEAD c906 cores لاءِ اصلاحن کي فعال ڪرڻ لاءِ.
  • __int128_t/integer(kind=16) قسم جي سپورٽ AMD GPUs لاءِ GCN مائڪرو آرڪيٽيڪچر جي بنياد تي ڪوڊ نسل جي پس منظر ۾ شامل ڪئي وئي آھي. اهو ممڪن آهي 40 ڪم گروپن تائين في ڪمپيوٽنگ يونٽ (CU) ۽ 16 هدايتي محاذن تائين (wavefront، SIMD Engine پاران متوازي طور تي ٿريڊن جو هڪ سيٽ) في گروپ استعمال ڪيو وڃي. اڳي، صرف هڪ هدايت واري ڪنڊ في CU جي اجازت هئي.
  • NVPTX پس منظر، NVIDIA PTX (Parallel Thread Execution) ھدايت واري سيٽ آرڪيٽيڪچر کي استعمال ڪندي ڪوڊ ٺاھيو ويو، "-march"، "-mptx" ۽ "-march-map" جھنڊن کي استعمال ڪرڻ جي صلاحيت شامل ڪئي وئي آھي. PTX ISA sm_53، sm_70، sm_75 ۽ sm_80 لاءِ لاڳو ڪيل سپورٽ. ڊفالٽ آرڪيٽيڪچر آهي sm_30.
  • پاور پي سي / پاور پي سي 64 / RS6000 پروسيسرز جي پس منظر ۾ تعمير ٿيل افعال جي نفاذ کي ٻيهر لکيو ويو آهي. بلٽ ان فنڪشن __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_texasru, __builtin_set_t_t_firhar ۽ دستاويز ٿيل آهن.
  • Arm Ampere-64 (-mcpu/-mtune ampere1)، Arm Cortex-A1 (cortex-a510)، Arm Cortex-A510 (cortex-a710) ۽ Arm Cortex-X710 (cortex-x2) لاءِ سپورٽ. شامل ڪيل سپورٽ نئين ARMv2 آرڪيٽيڪچر اختيارن لاءِ استعمال ڪرڻ لاءِ "-march" اختيار سان: armv8-a، armv8.7-a، armv8.8-a. ايٽمي لوڊ ڪرڻ ۽ ڊيٽا کي ميموري ۾ محفوظ ڪرڻ لاءِ ڪمپلر (انٽرنڪس) ۾ ٺهيل سي افعال جو شامل ڪيو ويو، وڌايل ARM هدايتون (ls9) جي استعمال جي بنياد تي. mopsoption ARM ايڪسٽينشن استعمال ڪندي memcpy، memmove ۽ memset افعال کي تيز ڪرڻ لاءِ سپورٽ شامل ڪئي وئي.
  • نئون چيڪنگ موڊ شامل ڪيو ويو “-fsanitize=shadow-call-stack” (ShadowCallStack)، جيڪو في الحال صرف AArch64 آرڪيٽيڪچر لاءِ موجود آهي ۽ ڪم ڪندو آهي جڏهن ڪوڊ ٺاهيندي “-ffixed-r18” اختيار سان. موڊ اسٽيڪ تي بفر اوور فلو جي صورت ۾ فنڪشن مان موٽڻ واري ايڊريس کي اوور رائٽنگ ڪرڻ جي خلاف تحفظ فراهم ڪري ٿو. تحفظ جو جوهر اهو آهي ته واپسي جي ايڊريس کي هڪ الڳ ”شيڊو“ اسٽيڪ ۾ محفوظ ڪرڻ کان پوءِ ڪنٽرول کي هڪ فنڪشن ڏانهن منتقل ڪرڻ ۽ فنڪشن مان نڪرڻ کان اڳ هن ايڊريس کي ٻيهر حاصل ڪرڻ.

جو ذريعو: opennet.ru

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