ဖွံ့ဖြိုးတိုးတက်မှု ခြောက်လအကြာတွင်၊ LLVM 13.0 ပရောဂျက်ကို ထုတ်လွှင့်ပြသခဲ့သည် - GCC-သဟဇာတဖြစ်သော ကိရိယာတန်ဆာပလာများ (compilers၊ optimizers နှင့် code generators) သည် ပရိုဂရမ်များကို RISC ကဲ့သို့သော အလယ်အလတ်ဘစ်ကုဒ်အဖြစ် စုစည်းထားသော RISC ကဲ့သို့သော virtual ညွှန်ကြားချက်များ (အဆင့်နိမ့် virtual machine တစ်ခုပါရှိသော၊ Multi-level optimization စနစ်)။ ထုတ်လုပ်လိုက်သော pseudocode ကို JIT compiler သုံးပြီး ပရိုဂရမ်ကို လုပ်ဆောင်သည့်အချိန်တွင် တိုက်ရိုက် စက်ညွှန်ကြားချက်များအဖြစ် ပြောင်းလဲနိုင်သည်။
Clang 13.0 တွင် တိုးတက်မှုများ-
- အာမခံထားသော အမြီးခေါ်ဆိုမှုများအတွက် ပံ့ပိုးကူညီမှု (လုပ်ဆောင်ချက်တစ်ခု၏အဆုံးတွင် အမြီးပိုင်းတစ်ခုအား ခေါ်ဆိုခြင်းဖြစ်ပြီး၊ လုပ်ရိုးလုပ်စဉ်တစ်ခုက သူ့ဘာသာသူခေါ်ဆိုပါက အမြီးပြန်လှည့်ခြင်းပုံစံ) ကို အကောင်အထည်ဖော်ခဲ့သည်။ C++ နှင့် "__attribute__((musttail))" တွင်အသုံးပြုသည့် "[[clang::musttail]]" attribute မှ အာမခံထားသော အမြီးခေါ်ဆိုမှုများကို ပံ့ပိုးပေးပါသည်။ ဤအင်္ဂါရပ်သည် အစုအစည်းသုံးစွဲမှုကို သက်သာစေရန် ကုဒ်ကို အပြားလိုက်ပြုလုပ်ခြင်းဖြင့် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းကို အကောင်အထည်ဖော်နိုင်စေပါသည်။
- "အသုံးပြု" ကြေငြာချက်များနှင့် clang တိုးချဲ့မှုများသည် "[[]]" ဖော်မတ်ကို အသုံးပြု၍ C++ 11-စတိုင် attribute များကို သတ်မှတ်ခြင်းအတွက် ပံ့ပိုးပေးပါသည်။
- အသုံးပြုသူကုဒ်တွင် သီးသန့်သတ်မှတ်ပေးသည့် အထောက်အထားများကို သတ်မှတ်သည့်အခါ သတိပေးချက်ပြသရန် "-Wreserved-identifier" အလံကို ပေါင်းထည့်ထားသည်။
- ကန့်သတ်ချက်တစ်ခုသတ်မှတ်ထားသော်လည်း အသုံးမပြုပါက သတိပေးချက်ပြသရန် "-Wunused-but-set-parameter" နှင့် "-Wunused-but-set-variable" အလံများကို ထည့်သွင်းထားသည်။
- အနုတ်လုပ်ငန်းဆောင်တာများတွင် null pointer ကိုအသုံးပြုခြင်းကြောင့် ကုဒ်သည် သတ်မှတ်မထားသော အမူအကျင့်ကို မိတ်ဆက်လာပါက သတိပေးချက်ထုတ်ရန် "-Wnull-pointer-subtraction" အလံကို ပေါင်းထည့်ထားသည်။
- ကုဒ်ဖိုင်တစ်ခုစီအတွက် ထုတ်လုပ်ရန် "-fstack-usage" အလံကို ထည့်သွင်းပြီး ကုဒ်တစ်ခုစီအတွက် လုပ်ဆောင်နေသည့် ဖိုင်တစ်ခုစီအတွက် သတ်မှတ်ထားသည့် လုပ်ဆောင်မှုတစ်ခုစီအတွက် stack frames အရွယ်အစားနှင့်ပတ်သက်သည့် အချက်အလက်ပါရှိသော နောက်ထပ် ".su" ဖိုင်တစ်ခု။
- HTML နှင့် Sarif ဖော်မတ်များဖြင့် တစ်ပြိုင်နက် အစီရင်ခံစာများ ထုတ်ပေးခြင်းကို ဖြစ်ပေါ်စေသည့် static analyzer - "sarif-html" တွင် အထွက်အမျိုးအစားအသစ်ကို ထည့်သွင်းထားပါသည်။ allocClassWithName အသစ်ကို ထပ်မံစစ်ဆေးပါ။ “-analyzer-display-progress” option ကို သတ်မှတ်သောအခါ၊ function တစ်ခုစီ၏ ခွဲခြမ်းစိတ်ဖြာမှုအချိန်ကို ပြသသည်။ စမတ်ညွှန်ပြမှုခွဲခြမ်းစိတ်ဖြာသူ (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” တိုးချဲ့မှုပါရှိသော ဖိုင်များအတွက် ပံ့ပိုးမှုကို ထည့်သွင်းထားသည်။
- OpenMP 5.1 သတ်မှတ်ချက်တွင် သတ်မှတ်ထားသော ကွင်းဆက်အသွင်ပြောင်းခြင်းဆိုင်ရာ လမ်းညွှန်ချက်များအတွက် ပံ့ပိုးမှု (“#pragma omp unrol” နှင့် “#pragma omp tile”) ကို အကောင်အထည်ဖော်ပြီးဖြစ်သည်။
- clang-format utility တွင် ရွေးချယ်စရာများ ထပ်ထည့်သည်- မှတ်ချက်များ မပြုမီ နေရာလွတ် အရေအတွက်ကို သတ်မှတ်ရန် SpacesInLineCommentPrefix၊ IndentAccessModifiers၊ LambdaBodyIndentation နှင့် PPIndentWidth သည် entry များ၏ ချိန်ညှိမှု၊ lambda အသုံးအနှုန်းများနှင့် preprocessor လမ်းညွှန်ချက်များကို ထိန်းချုပ်ရန်။ ခေါင်းစီးဖိုင်များ စာရင်းကောက်ယူခြင်း (SortIncludes) ကို စီရန် ဖြစ်နိုင်ချေများကို တိုးချဲ့ထားသည်။ JSON ဖိုင်များကို ဖော်မတ်ချခြင်းအတွက် ပံ့ပိုးမှု ထပ်ထည့်ထားသည်။
- စစ်ဆေးမှုအသစ်အများအပြားကို linter clang-tidy တွင် ထည့်သွင်းထားသည်။
LLVM 13.0 တွင် အဓိက တီထွင်ဆန်းသစ်မှုများ-
- Добавлена опция «-ehcontguard» для использования технологии CET (Windows Control-flow Enforcement Technology) для защиты на этапе обработки исключений от выполнения эксплоитов, построенных с использованием приёмов возвратно-ориентированного программирования (ROP, Return-Oriented Programming).
- ဒီဘာဂ်အင်ဖို-စမ်းသပ်ပရောဂျက်ကို ပရောဂျက်-စမ်းသပ်မှုများဟု အမည်ပြောင်းထားပြီး အမှားရှာပြင်ခြင်းဆိုင်ရာ အချက်အလက်များကို အကန့်အသတ်မရှိ၊ မတူညီသော ပရောဂျက်များမှ အစိတ်အပိုင်းများကို စမ်းသပ်ရန်အတွက် ဒီဇိုင်းထုတ်ထားသည်။
- စည်းဝေးပွဲစနစ်သည် ဖြန့်ဖြူးမှုများစွာကို တည်ဆောက်ခြင်းအတွက် ပံ့ပိုးပေးသည်၊ ဥပမာအားဖြင့် တစ်ခုသည် utilities ပါသော၊ နောက်တစ်ခုသည် developer များအတွက် စာကြည့်တိုက်များပါရှိသည်။
- AArch64 ဗိသုကာလက်ရာအတွက် နောက်ကွယ်တွင်၊ Armv9-A RME (Realm Management Extension) နှင့် SME (Scalable Matrix Extension) တိုးချဲ့မှုများကို တပ်ဆင်ကိရိယာတွင် ပံ့ပိုးပေးပါသည်။
- ISA V68/HVX အတွက် ပံ့ပိုးမှုကို Hexagon ဗိသုကာအတွက် နောက်ခံတွင် ထည့်သွင်းထားသည်။
- x86 backend သည် AMD Zen 3 ပရိုဆက်ဆာများအတွက် ပိုမိုကောင်းမွန်သောပံ့ပိုးမှုပေးထားသည်။
- GFX1013 RDNA2 APU အတွက် ပံ့ပိုးမှုကို AMDGPU နောက်ခံတွင် ထည့်သွင်းထားသည်။
- В Libc++ продолжена реализация новых возможностей стандартов C++20 и C++2b, в том числе завершена реализация библиотеки «concepts». Для платформы Windows на базе MinGW добавлена поддержка std::filesystem. Разделены заголовочные файлы <algorithm>, <iterator> и <utility>. Добавлена сборочная опция LIBCXX_ENABLE_INCOMPLETE_FEATURES для отключения заголовочных файлов с не полностью реализованной функциональностью.
- Big-endian Aarch64 ပရိုဆက်ဆာများအတွက် ပံ့ပိုးကူညီမှုဖြင့် LLD linker ၏စွမ်းရည်များကို ချဲ့ထွင်ထားပြီး Mach-O backend သည် ပုံမှန်ပရိုဂရမ်များကို ချိတ်ဆက်နိုင်စေမည့် အခြေအနေသို့ ယူဆောင်လာခဲ့သည်။ LLD ကို အသုံးပြု၍ Glibc ချိတ်ဆက်ရန် လိုအပ်သော တိုးတက်မှုများ ပါဝင်သည်။
- llvm-mca (Machine Code Analyzer) utility သည် ARM Cortex-A55 ကဲ့သို့သော အမှာစာ (in-order superscalar pipeline) တွင် ညွှန်ကြားချက်များကို လုပ်ဆောင်သည့် ပရိုဆက်ဆာများအတွက် အထောက်အပံ့ကို ပေါင်းထည့်ထားသည်။
- AArch64 ပလပ်ဖောင်းအတွက် LLDB အမှားရှာပြင်သူသည် Pointer Authentication၊ MTE (MemTag၊ Memory Tagging Extension) နှင့် SVE မှတ်ပုံတင်ခြင်းများအတွက် အပြည့်အဝပံ့ပိုးပေးပါသည်။ မှတ်ဉာဏ်ခွဲဝေမှုလုပ်ဆောင်မှုတစ်ခုစီတွင် တဂ်များကို ချိတ်ဆက်ရန်နှင့် မှန်ကန်သောတက်ဂ်နှင့် ဆက်စပ်မှုရှိရမည့် မမ်မိုရီကို ဝင်ရောက်သည့်အခါ အမှတ်အသား၏ စစ်ဆေးမှုကို စုစည်းရန် ခွင့်ပြုသည့် ညွှန်ကြားချက်များ။
- LLDB အမှားရှာပြင်ခြင်း နှင့် Fortran ဘာသာစကားအတွက် ရှေ့ဆုံးတန်း - Flang ကို ပရောဂျက်မှ ထုတ်ပေးသော binary စည်းဝေးပွဲများတွင် ထည့်သွင်းထားသည်။
source: opennet.ru
