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

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

Clang 13.0 ۾ بهتري:

  • گارنٽي ٿيل دم ڪالن لاءِ لاڳو ڪيل سپورٽ (هڪ فنڪشن جي بلڪل آخر ۾ هڪ سبروٽين کي سڏڻ، هڪ دم ريڪرشن ٺاهيندي جيڪڏهن سبروٽين پاڻ کي ڪال ڪري). گارنٽي ٿيل ٹیل ڪالن لاءِ سپورٽ مهيا ڪئي وئي آهي "[[clang::musttail]]" وصف C++ ۾ ۽ "__attribute__((musttail))" C ۾، "واپسي" بيان ۾ استعمال ٿيل آهي. خصوصيت توهان کي اسٽيڪ واپرائڻ کي بچائڻ لاءِ ڪوڊ کي فليٽ ورهاڱي ۾ ترتيب ڏيڻ سان اصلاحن کي لاڳو ڪرڻ جي اجازت ڏئي ٿي.
  • "استعمال" اعلان ۽ ڪلانگ ايڪسٽينشن "[[]]" فارميٽ استعمال ڪندي C++ 11 طرز جي خاصيتن جي وضاحت لاءِ مدد فراهم ڪن ٿا.
  • شامل ڪيو ويو "-Wreserved-identifier" جھنڊو ڊيڄاريندڙ ڏيکارڻ لاءِ جڏھن توھان مخصوص ڪريو مخصوص سڃاڻپ ڪندڙ صارف ڪوڊ ۾.
  • شامل ڪيو ويو "-Wunused-but-set-parameter" ۽ "-Wunused-but-set-variable" جھنڊو ڊيڄاريندڙ ڏيکارڻ لاءِ جيڪڏھن ھڪڙو پيراميٽر يا متغير مقرر ٿيل آھي پر استعمال نه ڪيو ويو آھي.
  • شامل ڪيو ويو "-Wnull-pointer-subtraction" جھنڊو هڪ ڊيڄاريندڙ جاري ڪرڻ لاءِ جيڪڏهن ڪوڊ شايد اڻ ٺهڪندڙ رويي کي متعارف ڪرائڻ جي ڪري null پوائنٽر جي استعمال جي ڪري.
  • شامل ڪيو ويو "-fstack-usage" جھنڊو پيدا ڪرڻ لاءِ ھر ڪوڊ فائل لاءِ ھڪڙو اضافي ".su" فائل جنھن ۾ پروسيس ٿيل فائل ۾ بيان ڪيل ھر فنڪشن لاءِ اسٽيڪ فريم جي سائيز بابت معلومات شامل آھي.
  • جامد تجزيي ۾ هڪ نئون آئوٽ ٽائپ شامل ڪيو ويو آهي - "sarif-html"، جيڪو HTML ۽ Sarif فارميٽ ۾ هڪ ئي وقت ۾ رپورٽون تيار ڪري ٿو. شامل ڪيو ويو نئون allocClassWithName چيڪ. جڏهن بيان ڪيو ويو آهي "-تجزيي-ڊسپلي-پروگريس" اختيار، هر فنڪشن جو تجزيو وقت ڏيکاريل آهي. سمارٽ پوائنٽر اينالائيزر (alpha.cplusplus.SmartPtr) لڳ ڀڳ تيار آهي.
  • OpenCL سپورٽ سان لاڳاپيل صلاحيتون وڌايو ويو آھي. نئين ايڪسٽينشن cl_khr_integer_dot_product، cl_khr_extended_bit_ops، __cl_clang_bitfields ۽ __cl_clang_non_portable_kernel_param_types لاءِ سپورٽ شامل ڪئي وئي. OpenCL 3.0 وضاحتن تي عمل درآمد جاري آھي. سي لاءِ، OpenCL 1.2 وضاحت ڊفالٽ طور استعمال ٿئي ٿي جيستائين ٻيو ورجن واضح طور تي منتخب نه ڪيو وڃي. C++ لاءِ، ايڪسٽينشن سان فائلن لاءِ سپورٽ “.clcpp” شامل ڪئي وئي آهي.
  • اوپن ايم پي 5.1 وضاحتن ۾ بيان ڪيل لوپ ٽرانسفارميشن هدايتون ("#pragma omp unrol" ۽ "#pragma omp ٽائل") لاءِ سپورٽ لاڳو ڪئي وئي آهي.
  • ڪلانگ فارميٽ يوٽيلٽي ۾ شامل ڪيل اختيارات: تبصرن کان اڳ اسپيس جو تعداد بيان ڪرڻ لاءِ SpacesInLineCommentPrefix، IndentAccessModifiers، LambdaBodyIndentation ۽ PPIndentWidth داخلائن جي ترتيب کي ڪنٽرول ڪرڻ لاءِ، lambda ايڪسپريسشن ۽ پري پروسيسر هدايتون. هيڊر فائلن جي ڳڻپ کي ترتيب ڏيڻ جا امڪان (SortIncludes) وڌايو ويو آهي. JSON فائلن کي فارميٽ ڪرڻ لاءِ سپورٽ شامل ڪئي وئي.
  • نئين چيڪن جو هڪ وڏو حصو linter clang-tidy ۾ شامل ڪيو ويو آهي.

LLVM 13.0 ۾ اهم جدت:

  • شامل ڪيو ويو “-ehcontguard” اختيار استعمال ڪرڻ لاءِ CET (ونڊوز ڪنٽرول-فلو انفورسمينٽ ٽيڪنالاجي) ٽيڪنالاجي کي استعمال ڪرڻ جي خلاف بچاءَ لاءِ ريٽرن-اورينٽيڊ پروگرامنگ (ROP) ٽيڪنڪ استعمال ڪندي استثنيٰ سنڀالڻ واري مرحلي تي.
  • debuginfo-test پروجيڪٽ جو نالو تبديل ڪيو ويو آهي ڪراس-پروجيڪٽ-ٽيسٽ ۽ مختلف منصوبن جي اجزاء کي جانچڻ لاءِ ٺهيل آهي، ڊيبگنگ معلومات تائين محدود ناهي.
  • اسيمبلي سسٽم ڪيترن ئي تقسيم جي تعمير لاء مدد فراهم ڪري ٿي، مثال طور، هڪ افاديت سان، ۽ ٻيو ڊولپرز لاء لائبريرين سان.
  • AArch64 آرڪيٽيڪچر جي پس منظر ۾، Armv9-A RME (Realm Management Extension) ۽ SME (Scalable Matrix Extension) ايڪسٽينشن لاءِ سپورٽ اسمبلر ۾ لاڳو ڪئي وئي آھي.
  • ISA V68/HVX لاءِ سپورٽ شامل ڪئي وئي آهي پس منظر ۾ هيڪساگن آرڪيٽيڪچر لاءِ.
  • x86 پس منظر AMD Zen 3 پروسيسرز لاءِ سپورٽ کي بهتر ڪيو آهي.
  • AMDGPU پس منظر ۾ GFX1013 RDNA2 APU لاءِ سپورٽ شامل ڪئي وئي.
  • Libc++ C++20 ۽ C++2b معيارن جي نئين خاصيتن کي لاڳو ڪرڻ جاري رکي ٿو، بشمول ”تصورات“ لائبريري جي مڪمل ٿيڻ. MinGW تي ٻڌل ونڊوز پليٽ فارم لاءِ std::filesystem لاءِ سپورٽ شامل ڪئي وئي. هيڊر فائلون ، ۽ جدا ٿيل آهن. شامل ڪيو ويو بلڊ آپشن LIBCXX_ENABLE_INCOMPLETE_FEATURES مڪمل طور تي لاڳو ٿيل ڪارڪردگي سان هيڊر فائلن کي غير فعال ڪرڻ لاءِ.
  • ايل ايل ڊي لنڪر جي صلاحيتن کي وڌايو ويو آهي، جنهن ۾ بگ-انڊين Aarch64 پروسيسرز لاءِ سپورٽ لاڳو ڪئي وئي آهي، ۽ Mach-O پس منظر کي هڪ حالت ۾ آندو ويو آهي جيڪو باقاعده پروگرامن کي ڳنڍڻ جي اجازت ڏئي ٿو. ايل ايل ڊي استعمال ڪندي Glibc کي ڳنڍڻ لاءِ گهربل سڌارا شامل آهن.
  • llvm-mca (مشين ڪوڊ اينالائيزر) يوٽيلٽي پروسيسرز لاءِ سپورٽ شامل ڪئي آهي جيڪي هدايتن تي عمل ڪن ٿا (ان آرڊر سپر اسڪيلر پائپ لائن)، جهڙوڪ ARM Cortex-A55.
  • AArch64 پليٽ فارم لاءِ LLDB ڊيبگر پوائنٽر جي تصديق، MTE (MemTag، Memory Tagging Extension) ۽ SVE رجسٽرز لاءِ مڪمل مدد فراهم ڪري ٿو. شامل ڪيل حڪم جيڪي توهان کي هر ميموري مختص ڪرڻ واري عمل ۾ ٽيگ کي پابند ڪرڻ جي اجازت ڏين ٿا ۽ ميموري تائين رسائي حاصل ڪرڻ وقت پوائنٽر جي چيڪ کي منظم ڪن ٿا، جيڪو صحيح ٽيگ سان لاڳاپيل هوندو.
  • LLDB ڊيبگر ۽ فورٽران ٻولي لاءِ فرنٽ اينڊ - فلانگ پروجيڪٽ پاران ٺاهيل بائنري اسيمبلين ۾ شامل ڪيو ويو آهي.

جو ذريعو: opennet.ru

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