د LLVM 13.0 کمپیلر سیټ خوشې کول

د شپږو میاشتو پراختیا وروسته، د LLVM 13.0 پروژې خوشې کول وړاندې شول - د GCC سره مطابقت لرونکی اوزار کټ (کمپیلر، اصلاح کونکي او کوډ جنریټرونه) چې پروګرامونه د RISC په څیر مجازی لارښوونو منځګړی بټکوډ کې تالیف کوي (د ټیټ کچې مجازی ماشین سره. د څو کچې اصلاح کولو سیسټم). تولید شوی سیډوکوډ د JIT کمپیلر په کارولو سره د ماشین لارښوونو ته مستقیم د برنامې اجرا کولو په وخت کې بدل کیدی شي.

په کلینګ 13.0 کې پرمختګونه:

  • د تضمین شوي ټیل زنګونو لپاره پلي شوي ملاتړ (د فنکشن په پای کې د سبروټین غږ کول ، د tail تکرار رامینځته کول که سبروټین پخپله غږ وکړي). د تضمین شوي ټیل زنګونو لپاره ملاتړ په C++ کې د "[[clang::musttail]]" خاصیت او په C کې "__attribute__((musttail))" لخوا چمتو کیږي، چې په "بیرته راستنیدنه" بیان کې کارول کیږي. فیچر تاسو ته اجازه درکوي چې د سټیک مصرف خوندي کولو لپاره په فلیټ تکرار کې د کوډ ځای په ځای کولو سره اصلاح کول پلي کړئ.
  • د "استعمال" اعلامیې او کلنګ توسیعونه د "[[]]" بڼه په کارولو سره د C++ 11 سټایل ځانګړتیاو تعریفولو لپاره ملاتړ چمتو کوي.
  • د خبرتیا ښودلو لپاره د "-Wreserved-identifier" بیرغ اضافه شوی کله چې خوندي پیژندونکي د کارونکي کوډ کې مشخص شوي وي.
  • د خبرتیا ښودلو لپاره "-Wunused-but-set-parameter" او "-Wunused-but-set-variable" بیرغونه اضافه شوي که چیرې پیرامیټر یا متغیر ټاکل شوی وي مګر کارول شوی نه وي.
  • د "-Wnull-pointer-subtraction" بیرغ د خبرداری ورکولو لپاره اضافه شوی که چیرې کوډ ممکن د تخفیف عملیاتو کې د نول پوائنټر کارولو له امله نامعلوم چلند معرفي کړي.
  • د "-fstack-usage" بیرغ اضافه شوی ترڅو د هر کوډ فایل لپاره اضافي ".su" فایل رامینځته کړي چې د هر فنکشن لپاره د سټیک چوکاټونو اندازې په اړه معلومات لري چې د پروسس شوي فایل کې تعریف شوي.
  • په جامد شنونکي کې د محصول نوی ډول اضافه شوی - "sarif-html"، کوم چې په HTML او سریف فارمیټونو کې په ورته وخت کې د راپورونو تولید ته لار هواروي. نوی 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 مشخصاتو پلي کول دوام لري. د C لپاره، د OpenCL 1.2 مشخصات په ډیفالټ کارول کیږي پرته لدې چې بله نسخه په واضح ډول غوره شوې وي. د C++ لپاره، د ".clcpp" تمدید سره د فایلونو ملاتړ اضافه شوی.
  • د لوپ بدلون لارښودونو ملاتړ ("#pragma omp unrol" او "#pragma omp tile") د OpenMP 5.1 مشخصاتو کې تعریف شوي پلي شوي.
  • د کلینګ فارمیټ یوټیلیټ کې اضافه شوي اختیارونه: SpacesInLineCommentPrefix د تبصرو دمخه د ځایونو شمیر تعریف کولو لپاره ، IndentAccessModifiers ، LambdaBodyIndentation او PPIndentWidth د ننوتلو تنظیم کولو کنټرول لپاره ، د لامبډا څرګندونه او د پروسیسر لارښوونې. د سرلیک فایلونو (SortIncludes) د شمیرنې ترتیب کولو امکانات پراخ شوي. د JSON فایلونو فارمیټ کولو لپاره ملاتړ اضافه شوی.
  • د نویو چکونو لویه برخه د لینټر کلینګ - پاکولو کې اضافه شوې.

په LLVM 13.0 کې کلیدي نوښتونه:

  • د CET (Windows Control-flow-Enforcement Technology) ټیکنالوژۍ کارولو لپاره د "-ehcontguard" اختیار اضافه شوی ترڅو د استثنایی مدیریت مرحلې کې د بیرته راستنیدونکي برنامې (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:: فایل سیسټم لپاره ملاتړ اضافه شوی. د سرلیک فایلونه جلا شوي , او . د بشپړ نه پلي شوي فعالیت سره د سرلیک فایلونو غیر فعال کولو لپاره د جوړونې اختیار LIBCXX_ENABLE_INCOMPLETE_FEATURES اضافه شوی.
  • د LLD لینکر وړتیاوې پراخې شوې، په کوم کې چې د Big-endian Aarch64 پروسیسرونو لپاره ملاتړ پلي کیږي، او د مچ-O بیکینډ داسې حالت ته راوړل شوی چې د منظم پروګرامونو لینک کولو ته اجازه ورکوي. د LLD په کارولو سره د Glibc لینک کولو لپاره اړین اصلاحات شامل دي.
  • د llvm-mca (ماشین کوډ شنونکي) یوټیلیټ د پروسیسرونو لپاره ملاتړ اضافه کړی چې لارښوونې په ترتیب سره اجرا کوي (په ترتیب کې سپرسکلر پایپ لاین) ، لکه د ARM Cortex-A55.
  • د AArch64 پلیټ فارم لپاره د LLDB ډیبګر د پوائنټر تصدیق ، MTE (MemTag ، د حافظې ټاګ کولو توسیع) او SVE راجسترونو لپاره بشپړ ملاتړ چمتو کوي. اضافه شوي کمانډونه چې تاسو ته اجازه درکوي د هرې حافظې تخصیص عملیاتو کې ټاګونه وتړئ او حافظې ته د لاسرسي پرمهال د پوائنټر چیک تنظیم کړئ ، کوم چې باید د سم ټاګ سره تړاو ولري.
  • د LLDB ډیبګر او د فورټران ژبې لپاره فرنټ اینډ - فلانګ د پروژې لخوا رامینځته شوي بائنری مجلسونو کې اضافه شوي.

سرچینه: opennet.ru

Add a comment