ڇهن مهينن جي ترقيءَ کان پوءِ، LLVM 19.1.0 پروجيڪٽ جو خلاصو پيش ڪيو ويو، ترقي ڪندڙ اوزار (ڪمپائلر، آپٽمائيزر ۽ ڪوڊ جنريٽر) جيڪي پروگرامن کي RISC-جهڙي ورچوئل هدايتن جي وچولي بٽ ڪوڊ ۾ گڏ ڪن ٿا (هڪ گهٽ-سطح واري ورچوئل مشين سان ملٽي. - سطح جي اصلاح جو نظام). ٺاهيل pseudocode کي ڏنل ٽارگيٽ پليٽ فارم لاءِ مشين ڪوڊ ۾ تبديل ڪري سگھجي ٿو يا JIT ڪمپيلر طرفان استعمال ڪري سگھجي ٿو سڌو سنئون پروگرام جي عمل دوران مشين جون هدايتون پيدا ڪرڻ لاءِ. LLVM ٽيڪنالاجيز جي بنياد تي، پروجيڪٽ ڪلانگ ڪمپلر کي ترقي ڪري رهيو آهي، جيڪو پروگرامنگ ٻولين C، C++ ۽ Objective-C کي سپورٽ ڪري ٿو. آخري برانچ کان شروع ڪندي، پروجيڪٽ ورزن نمبرن ٺاهڻ لاءِ نئين اسڪيم ۾ تبديل ٿي ويو، جنهن مطابق صفر رليز ("N.0") ترقي جي عمل ۾ استعمال ڪيو ويندو آهي، ۽ پهريون مستحڪم ورزن نمبر "N" سان فراهم ڪيو ويندو آهي. .1“.
Clang 19 ۾ بهتري شامل آهن:
- شامل ڪيل خاصيتون C-standard C23 ۾ بيان ڪيل:
- شين جي وضاحت ڪرڻ لاءِ constexpr specifier استعمال ڪرڻ لاءِ سپورٽ؛
- macros INFINITY, NAN, FLT_NORM_MAX, DBL_NORM_MAX ۽ LDBL_NORM_MAX float.h ۾؛
- بائنري وسيلن کي گڏ ڪرڻ لاء "# ايمبيڊ" ميڪانيزم؛
- UTF-8 ۾ تارن ۽ اکرن لاءِ char8_t ٽائپ ڪريو.
- C ++ 17 معيار ۾ بيان ڪيل سڀني خاصيتن جي عمل کي يقيني بڻايو وڃي. آخري قدم اھو ھو ته عناصر لاءِ سپورٽ کي فعال ڪرڻ لاءِ ٽيمپليٽ پيراميٽرن سان مطابقت رکندڙ دليلن سان، جيڪي موجوده مطابقت جي مسئلن جي ڪري ڊفالٽ طور بند ڪيا ويا آھن.
- C++ 14 موڊ ۾، ڊفالٽ ڊيلوڪيشن سان ڊيلٽ فنڪشن لاءِ سپورٽ ڊفالٽ طور فعال ڪئي وئي آهي،
- شامل ڪيل خاصيتون C++ 20 معيار سان لاڳاپيل: بلٽ ان فنڪشن __is_layout_compatible ۽ __is_pointer_interconvertible_base_of؛ ماڊلز کي درآمد ڪرڻ لاءِ اظهار لاءِ مڪمل سپورٽ؛ شروعاتي سپورٽ ڪلاس ٽيمپليٽ آرگيومينٽ جي قسم جي پاڻمرادو پتو لڳائڻ لاءِ ٽيمپليٽس استعمال ڪندي قسم جي عرف لاءِ (CTAD for Alias Template).
- شامل ڪيل خاصيتون C++ 20 معيار سان لاڳاپيل: عارضي شيون جي زندگيءَ کي وڌائڻ واري لوپس ۾ رينج تي ٻيهر ورجائيندي؛ منتقلي جا فرض؛ Constexpr تي پابنديون ختم ڪرڻ ۽ "-Winvalid-constexpr" تشخيصي کي غير فعال ڪرڻ؛ ساڳئي پيٽرولر لسٽن سان شيون جي جامد ۽ واضح ميمبرن جي ڪارڪردگي لاء سپورٽ.
- شامل ڪيل خاصيتون مستقبل سان لاڳاپيل C++2c (C++26) معيار: ٽيمپليٽس ۾ پيرا ميٽرز جي پيڪيج کي ترتيب ڏيڻ؛ syntax ' = حذف ڪريو ("سبب")'؛ ترتيب ڏنل پابندن لاء خاصيتون؛ عارضي قدر جي واپسي جي قيمت کي پابند ڪرڻ تي پابندي؛ غير واضح رويي سان غير معمولي لامحدود لوپس؛ هڪ غلطي ڏيکاري ٿي جڏهن هڪ پوائنٽر کي هڪ نامڪمل قسم کي حذف ڪندي؛ فولڊ ايڪسپريس ۾ پابنديون لاڳو ڪرڻ (“…”).
- شامل ڪيو ويو نئون مرتب ڪندڙ جھنڊو:
- "-fsanitize=implicit-bitfield-conversion" بيٽ فيلڊز سان ڪم ڪرڻ دوران بي مثال ٽرڪنڪشن ۽ سائن ريورسل کي چيڪ ڪرڻ لاءِ.
- "-fsanitize= implicit-integer-conversion" انٽيجر جي تبديلين کي جانچڻ لاءِ.
- "-Wmissing-designated-field-initializers" گم ٿيل فيلڊ جي شروعات ڪندڙ کي ڳولڻ لاء.
- "-fexperimental-modules-reduced-bmi" C++ 20 نالي ماڊلز لاءِ گھٽ ٿيل BMI (بائنري ماڊل انٽرفيس) کي فعال ڪرڻ لاءِ، معياري C++ ماڊلز جي استعمال جي اجازت ڏئي ٿو.
- "-fexperimental-late-parse-attribute" خاص حوالن ۾ خصوصيتن جي late parse کي فعال ڪرڻ لاءِ، جيئن شمار ڪيل_ طرفان وصف.
- "-fseparate-named-sections" نالي خاص حصن ۾ عالمي علامتن لاءِ الڳ الڳ سيڪشن ٺاهڻ لاءِ.
- MSVC سان STDC مطابقت لاءِ "-fms-define-stdc"
- "-Wc++23-compat" ۽ "-Wc++2c-compat" ڊيڄاريندڙ گروپ آھن جن کي C++23 ۽ C++26 ڏانھن لڏپلاڻ کي آسان بڻائي سگھجي ٿو.
- "-fdisable-block-signature-string" بلاڪن لاءِ دستخطي اسٽرنگ جي نسل کي بند ڪرڻ لاءِ.
- "-fpointer-tbaa" قسم جي بنياد تي عرف تجزيو (TBAA) استعمال ڪندي غير مطابقت پذير پوائنٽرن کي نشانو بڻائڻ لاء.
- نئين خاصيتون شامل ڪيون ويون: sized_by, counted_by_or_null, nonblocking, non-allocating, blocking, allocating, sized_by_or_null, amdgpu_max_num_work_groups(x, y, z).
- شامل ٿيل نئون بلٽ ان فنڪشن: __builtin_readsteadycounter، __builtin_popcountg، __builtin_clzg، __builtin_ctzg، __is_bitwise_cloneable.
- تشخيص ۽ جامد تجزيو جا اوزار وڌايو ويو آهي، نوان چيڪ شامل ڪيا ويا آهن.
LLVM 19 ۾ اهم جدت:
- RISC-V آرڪيٽيڪچر لاءِ پس منظر ۾، تجرباتي سپورٽ Zabha (ائٽمي ميموري آپريشنز)، Ssqosid، Ssnpm، Smnpm، Smmpm، Sspm ۽ Supm ايڪسٽينشنز (پوائنٽ ماسڪ استعمال ڪندي)، Zba، Zbb، Zbs شامل ڪيا ويا آھن. Ztso، Zabha، Zaamo ۽ Zalrsc ايڪسٽينشن لاءِ سپورٽ کي مستحڪم ڪيو ويو آھي.
- AArch64 آرڪيٽيڪچر لاءِ پسمنظر Cortex-R82AE، Cortex-A78AE، Cortex-A520AE، Cortex-A720AE، Cortex-A725، Cortex-X925، Neoverse-N3، Neoverse-V3 ۽ Neoverse-V3-AE لاءِ سپورٽ شامل ڪري ٿو.
- Cortex-R52+ پروسيسر لاءِ سپورٽ ARM آرڪيٽيڪچر لاءِ پس منظر ۾ شامل ڪئي وئي آهي.
- X86، LoongArch، WebAssembly، MIPS، PowerPC ۽ AMDGPU آرڪيٽيڪچرز لاءِ بهتر پس منظر.
- ايل ايل ڊي لنڪر جي صلاحيت کي وڌايو ويو آهي. شامل ڪيا ويا نون قسمن جا جٽادار: CREL, GNU_PROPERTY_AARCH64_FEATURE_PAUTH, R_AARCH64_AUTH_ABS64 ۽ R_AARCH64_AUTH_RELATIVE. شامل ڪيو ويو "-compress-sections" پيٽرول ={none,zlib,zstd}[:level]" سيڪشن ڪمپريشن الگورٿم کي چونڊڻ لاءِ.
- Libc++ لائبريري C++20، C++23 ۽ C++ 26 معيارن جي صلاحيتن کي لاڳو ڪرڻ جاري رکي ٿي.
- 3.6 کان 8 تائين، LLVM تعمير ڪرڻ لاء پيٿون جي ورزن جي ضرورتن کي وڌايو ويو آھي.
جو ذريعو: opennet.ru
