LLVM 15.0 گڏ ڪرڻ وارو سوٽ ڇڏڻ

ڇهن مهينن جي ترقيءَ کان پوءِ، LLVM 15.0 پروجيڪٽ جو رليز پيش ڪيو ويو - هڪ GCC-مطابقت رکندڙ ٽول ڪٽ (ڪمپائلر، آپٽمائيزر ۽ ڪوڊ جنريٽر) جيڪو پروگرامن کي RISC-جهڙي ورچوئل هدايتن جي وچ واري بٽ ڪوڊ ۾ گڏ ڪري ٿو (هڪ گهٽ-سطح واري ورچوئل مشين سان. گھڻ-سطح اصلاحي نظام). ٺاهيل pseudocode کي JIT ڪمپيلر استعمال ڪندي مشين جي هدايتن ۾ سڌو سنئون پروگرام جي عمل جي وقت ۾ تبديل ڪري سگھجي ٿو.

Clang 15.0 ۾ اهم سڌارا:

  • سسٽم لاءِ x86 آرڪيٽيڪچر جي بنياد تي، "-fzero-call-used-regs" پرچم شامل ڪيو ويو آهي، جيڪو يقيني بڻائي ٿو ته فنڪشن ۾ استعمال ٿيل سڀئي سي پي يو رجسٽرز صفر تي ري سيٽ ڪيا ويا آهن فنڪشن مان ڪنٽرول واپس ڪرڻ کان اڳ. هي اختيار توهان کي اجازت ڏئي ٿو ته توهان ڪمن مان معلومات جي لڪيج کان بچاءُ ڪري سگهو ٿا ۽ ROP (ريٽرن-اورينٽيڊ پروگرامنگ) گيجٽ جي تعمير لاءِ مناسب بلاڪن جو تعداد تقريباً 20 سيڪڙو گھٽائي ٿو.
  • سي ڪوڊ لاءِ اڏاوتن جي يادگيري جي جاءِ تي ترتيب ڏيڻ تي عمل ڪيو ويو آهي، جيڪو ڪمزورين جي استحصال جي صورت ۾ ساختن مان ڊيٽا ڪڍڻ کي پيچيده ڪري ٿو. randomize_layout ۽ no_randomize_layout خاصيتن کي استعمال ڪندي رينڊمائيزيشن کي آن ۽ آف ڪيو وڃي ٿو، ۽ "-frandomize-layout-seed" يا "-frandomize-layout-seed-file" جھنڊو استعمال ڪندي ٻج سيٽ ڪرڻ جي ضرورت آھي.
  • شامل ڪيو ويو "-fstrict-flex-arrays=" پرچم "، جنهن سان توهان اڏاوتن ۾ لچڪدار صف جي عنصر لاءِ حدون ڪنٽرول ڪري سگهو ٿا (لچڪدار صف جا ميمبر، ساخت جي آخر ۾ اڻڄاتل سائيز جي هڪ صف). جڏهن 0 تي مقرر ڪيو ويو آهي (ڊفالٽ)، جوڙجڪ جو آخري عنصر هميشه هڪ لچڪدار صف جي طور تي پروسيس ڪيو ويندو آهي، 1 - صرف سائز []، [0] ۽ [1] هڪ لچڪدار صف طور پروسيس ڪيو ويندو آهي، 2 - صرف سائز [] ۽ [0] هڪ لچڪدار صف وانگر پروسيس ٿيل آهن.
  • سي-جهڙي ٻولي HLSL (High-level Shader Language) لاءِ تجرباتي سپورٽ شامل ڪئي وئي، DirectX ۾ استعمال ٿيل شيڊر لکڻ لاءِ.
  • شامل ڪيو ويو "-Warray-parameter" کي ڊيڄارڻ لاءِ اوور رائڊنگ افعال بابت غير مطابقت واري دليل واري بيانن سان جڙيل مقرر- ۽ متغير-لمبائي صفن سان.
  • MSVC سان بهتر مطابقت. شامل ڪيل سپورٽ "#pragma فنڪشن" لاءِ (ڪمپائلر کي هدايت ڪري ٿو ته ان لائن توسيع جي بدران هڪ فنڪشن ڪال پيدا ڪري) ۽ "#pragma alloc_text" (سيڪشن جو نالو فنڪشن ڪوڊ سان بيان ڪري ٿو) MSVC ۾ مهيا ڪيل. شامل ڪيل سپورٽ MSVC-مطابقت رکندڙ /JMC ۽ /JMC پرچم لاءِ.
  • ڪم مستقبل جي C2X ۽ C++ 23 معيار جي حمايت ڪرڻ لاء جاري آهي. C ٻولي لاءِ، ھيٺيون لاڳو ڪيون ويون آھن: noreturn وصف، ڪي لفظ غلط ۽ سچا، _BitInt(N) قسم ڏنل بٽ ڊيپٿ جي انٽيجرز لاءِ، *_WIDTH ميڪروز، UTF-8 انڪوڊ ٿيل اکرن لاءِ u8 اڳياڙي.

    C++ لاءِ، هيٺيون لاڳو ڪيون ويون آهن: ماڊل ضم ڪرڻ، فنڪشن جي ميمبرن جو ABI الڳ ڪرڻ، ماڊلز ۾ غير مقامي متغيرن جي متحرڪ شروعات جو حڪم ڏنو، ملٽي ڊئمنشنل انڊيڪس آپريٽرز، آٽو (x)، غير لغوي متغير، گوٽو ۽ ليبلز کي ڪانسٽڪسپر قرار ڏنو ويو , delimited escape sequences, name escape characters.

  • OpenCL ۽ OpenMP سپورٽ سان لاڳاپيل صلاحيتون وڌايو ويو آھي. OpenCL ايڪسٽينشن cl_khr_subgroup_rotate لاءِ سپورٽ شامل ڪئي وئي.
  • x86 آرڪيٽيڪچر لاءِ، غير مشروط اڳتي وڌڻ جي عملن کان پوءِ هدايتن جي قياس آرائي جي ڪري پروسيسرز ۾ خطرن جي خلاف تحفظ شامل ڪيو ويو آهي. ميموري ۾ شاخ جي هدايتن جي فوري طور تي هدايتن جي اڳڀرائي واري پروسيسنگ جي ڪري مسئلو ٿئي ٿو (SLS، سڌي لائين اسپيڪيوليشن). تحفظ کي چالو ڪرڻ لاء، اختيار "-mharden-sls=[none|all|return|indirect-jmp]" تجويز ڪيل آهي.
  • پليٽ فارمن لاءِ جيڪي SSE2 جي توسيع کي سپورٽ ڪن ٿا، _Float16 قسم شامل ڪيو ويو آهي، جيڪو AVX512-FP16 هدايتون لاءِ سپورٽ نه هجڻ جي صورت ۾ فلوٽ قسم استعمال ڪندي نقل ڪيو ويو آهي.
  • شامل ڪيو ويو "-m[no-]rdpru" پرچم RDPRU هدايتون جي استعمال کي ڪنٽرول ڪرڻ لاء، AMD Zen2 پروسيسرز سان شروع ٿيندڙ سپورٽ.
  • شامل ڪيو ويو "-mfunction-return=thunk-extern" جھنڊو RETBLEED خطرن کان بچائڻ لاءِ، جيڪو ڪم ڪري ٿو ھدايتن جي ھڪڙي ترتيب کي شامل ڪندي جيڪو اڻ سڌي شاخن لاءِ قياس آرائي واري عمل جي ميڪانيزم جي شموليت کي خارج ڪري ٿو.

LLVM 15.0 ۾ اهم جدت:

  • Cortex-M85 CPU، Armv9-A، Armv9.1-A ۽ Armv9.2-A آرڪيٽيڪچرز، Armv8.1-M PACBTI-M ايڪسٽينشنز لاءِ سپورٽ شامل ڪئي وئي.
  • DirectX لاءِ تجرباتي پس منظر شامل ڪيو ويو آھي جيڪو سپورٽ ڪري ٿو DXIL (DirectX Intermediate Language) فارميٽ جو DirectX shaders لاءِ استعمال ڪيو ويو آھي. پس منظر کي فعال ڪيو ويو آهي وضاحت ڪندي "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" پيٽرول جي اسيمبلي دوران.
  • Libc++ C++20 ۽ C++2b معيارن جي نئين خاصيتن کي لاڳو ڪرڻ جاري رکي ٿو، بشمول "فارميٽ" لائبريري جي عمل درآمد جي مڪمل ٿيڻ ۽ "رينجز" لائبريري جي تجويز ڪيل تجرباتي ورزن.
  • x86، پاور پي سي ۽ RISC-V آرڪيٽيڪچرز لاءِ بهتر پس منظر.
  • LLD لنڪر ۽ LLDB ڊيبگر جي صلاحيتن کي وڌايو ويو آھي.

جو ذريعو: opennet.ru

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