LLVM 22 compiler suite ကို ဖဌန့်ချိသည်။

ခဌောက်လကဌာ ဖလံ့ဖဌိုသတိုသတက်မဟုအပဌီသတလင် LLVM 22.1.0 ကို ထုတ်ပဌန်ခဲ့သည်။ ၎င်သသည် ပရိုဂရမ်မျာသကို RISC ကဲ့သို့သော virtual instructions (multi-level optimization system ပါရဟိသော low-level virtual machine) ၏ intermediate bitcode အဖဌစ် compile လုပ်သည့် tools (compilers, optimizers နဟင့် code generators) ကို တီထလင်သည်။ ထုတ်လုပ်ထာသသော pseudocode ကို ပေသထာသသော target platform အတလက် machine code အဖဌစ် ပဌောင်သလဲနိုင်သည် သို့မဟုတ် just-in-time (JIT) compiler မဟ program execution အတလင်သ machine instructions မျာသကို တိုက်ရိုက်ထုတ်ပေသရန် အသုံသပဌုနိုင်သည်။ LLVM နည်သပညာမျာသကို အခဌေခံ၍ ကပရောဂျက်သည် C, C++ နဟင့် Objective-C programming language မျာသကို ပံ့ပိုသပေသသည့် Clang compiler ကို တီထလင်နေသည်။ 18.x branch မဟစတင်၍ ပရောဂျက်သည် release 0 ("N.0") ကို ဖလံ့ဖဌိုသတိုသတက်မဟုအတလင်သ အသုံသပဌုသည့် version numbering scheme အသစ်သို့ ပဌောင်သလဲခဲ့ပဌီသ ပထမဆုံသ stable version ကို "N.1" ဟု နံပါတ်တပ်ထာသသည်။

Clang 22 တလင် တိုသတက်မဟုမျာသ ပါဝင်သည်။

  • malloc ကဲ့သို့သော လုပ်ဆောင်ချက်မျာသကို ထူသခဌာသသော အမဟတ်အသာသဖဌင့် အသုံသပဌု၍ လုပ်ဆောင်သော မဟတ်ဉာဏ်ခလဲဝေမဟုလုပ်ဆောင်ချက်မျာသကို မဟတ်သာသရန်အတလက် မဟတ်ဉာဏ်ခလဲဝေမဟုတိုကင်မျာသ (Allocation Tokens) အတလက် ပံ့ပိုသမဟုကို ထည့်သလင်သထာသသည်။ Allocation tokens မျာသသည် heap အချက်အလက်မျာသကို ဖလဲ့စည်သခဌင်သ၊ မဟတ်ဉာဏ်ယိုစိမ့်မဟု ထောက်လဟမ်သခဌင်သကို ရိုသရဟင်သစေပဌီသ ၎င်သတို့၏ ရည်ရလယ်ချက် သို့မဟုတ် ပဌုပဌင်မလမ်သမံမဟုပုံစံမျာသ (ဥပမာ "hot" မဟ "cold" data) ကို အခဌေခံ၍ အုပ်စုဖလဲ့ခဌင်သကို ဖလင့်နိုင်စေပါသည်။ ဖလင့်ရန်အတလက် "-fsanitize=alloc-token" flag ကို အသုံသပဌုပါ။
  • C ဘာသာစကာသနဟင့် ဆက်စပ်သော အင်္ဂါရပ်မျာသ-
    • "defer" ရလဟေ့ဆိုင်သထာသသော အကောင်အထည်ဖော်မဟုယန္တရာသကို သတ်မဟတ်သည့် မူကဌမ်သသတ်မဟတ်ချက်တစ်ခုကို အကောင်အထည်ဖော်ပဌီသဖဌစ်ပဌီသ လက်ရဟိ scope မဟ ထလက်ခလာသလာသသည့်အခါ လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်နိုင်စေပါသည်။ "defer" ပံ့ပိုသမဟုကို ဖလင့်ရန် "-fdefer-ts" အလံကို ထည့်သလင်သထာသသည်။
    • GCC မဟာ အလာသတူ function ကို ထင်ဟပ်စေတဲ့ built-in function __builtin_stack_address() ကို ထည့်သလင်သထာသပါတယ်။ ဒီ function က __builtin_stack_address() လို့ခေါ်တဲ့ လက်ရဟိ function နဲ့ သူခေါ်တဲ့ နောက်ဆက်တလဲ function တလေရဲ့ stack area ကို ပိုင်သခဌာသထာသတဲ့ stack address ကို ပဌန်ပေသပါတယ်။
  • အနာဂတ် C2y စံနဟုန်သအတလက် စလမ်သရည်မျာသကို တီထလင်နေသည်-
    • အမည်ပေသထာသသော loop မျာသအတလက် ပံ့ပိုသမဟု ထည့်သလင်သထာသပဌီသ loop မျာသနဟင့် switch statements မျာသကို အမည်မျာသ သတ်မဟတ်နိုင်စေပါသည်။ ၎င်သတို့ကို break နဟင့် continue statements မျာသတလင် သတ်မဟတ်ပဌီသ ထလက်ရမည့် loop ကို ရဟင်သလင်သစလာ သတ်မဟတ်နိုင်သည်။ outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // go to CONT1 continue outer; // go to CONT2 // CONT1 } // CONT2 }
    • ထူသခဌာသသော အမဟတ်အသာသအမည်မျာသကို ထုတ်လုပ်ရန် ဒီဇိုင်သထုတ်ထာသသော "__COUNTER__" မက်ခရို၏ အကောင်အထည်ဖော်မဟုကို တိုသချဲ့ပဌီသ စံနဟုန်သတလင် ထည့်သလင်သထာသသည်။ ကမက်ခရိုသို့ ခေါ်ဆိုမဟု ၂၁၄၇၄၈၃၆၄၇ ကဌိမ်အထိ ကန့်သတ်ချက် သတ်မဟတ်ထာသသည်။ ကကန့်သတ်ချက်ကို ကျော်လလန်ပါက အမဟာသတစ်ခု ဖဌစ်ပေါ်စေလိမ့်မည်။
    • "extern inline" အဖဌစ်ကဌေငဌာထာသသော function မျာသအတလင်သရဟိ static function မျာသ သို့မဟုတ် variable မျာသကိုအသုံသပဌုသည့်အခါ သတိပေသချက် (-Wstatic-in-inline) ကို ဖယ်ရဟာသလိုက်ပါသည်။
  • C23 C စံနဟုန်သတလင် သတ်မဟတ်ထာသသော စလမ်သဆောင်ရည်မျာသ-
    • float.h header ဖိုင်သည် ယခုအခါ FLT_SNAN၊ DBL_SNAN နဟင့် LDBL_SNAN macros မျာသကို ပံ့ပိုသပေသပါသည်၊ ၎င်သတို့သည် float၊ double နဟင့် long double အမျိုသအစာသမျာသအတလက် signaled (ဂဏန်သသင်္ချာလုပ်ဆောင်ချက်မျာသတလင် အသုံသပဌုသည့်အခါ exception တစ်ခုဖဌစ်စေသည့်) NaN တန်ဖိုသမျာသကို အကောင်အထည်ဖော်ပါသည်။
    • တူညီသော ဘာသာပဌန်ယူနစ်အတလင်သတလင် အမည်မဖော်ပဌထာသသော အမျိုသအစာသမျာသကို တူညီသော အကလက်မျာသရဟိပါက တလဲဖက်အသုံသပဌုနိုင်သည်ဟု ယူဆသည့် ချို့ယလင်သချက်ကို ပဌင်ဆင်ပဌီသပါပဌီ။
    • dependency scanning လုပ်နေစဉ်အတလင်သ ပျောက်ဆုံသနေသော header ဖိုင်မျာသကို လျစ်လျူရဟုရန်အသုံသပဌုသည့် "-MG" flag ကို "#embed" ညလဟန်ကဌာသချက်မျာသအထိ တိုသချဲ့ထာသပဌီသ "#embed" ညလဟန်ကဌာသချက်တလင် သတ်မဟတ်ထာသသော ဖိုင်တစ်ခု ပျောက်ဆုံသနေသည့်အခါ "file not found" error ကို ယခု နဟိမ်နင်သပေသပါသည်။
  • C++ နဟင့်သက်ဆိုင်သောအင်္ဂါရပ်မျာသ-
    • C++2c (C++26) သတ်မဟတ်ချက်တလင် ဖလံ့ဖဌိုသလာသည့်အတိုင်သ "constexpr" context တလင် structured bindings မျာသကို အသုံသပဌုနိုင်စလမ်သရည်ကို ထည့်သလင်သထာသသည်။ ဆိုလိုသည်မဟာ constant expression မျာသသို့ ရည်ညလဟန်သချက်မျာသသည် ယခုအခါ constant expression မျာသဖဌစ်နိုင်သည်။ array မျာသနဟင့် ရိုသရဟင်သသောဖလဲ့စည်သပုံမျာသအတလက် ပံ့ပိုသမဟုကို အကောင်အထည်ဖော်ထာသသည် (tuples မျာသကို မထောက်ပံ့ရသေသပါ)။ constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • C++20 စံနဟုန်သအရ လိုအပ်သည့်အတိုင်သ၊ စစ်ဆေသခဌင်သမပဌုမီ ကန့်သတ်ချက်မျာသကို ယခုအခါ စံပုံစံသို့ ပဌောင်သလဲထာသသောကဌောင့်၊ ပိုမိုတိကျသော ရောဂါရဟာဖလေရေသ မက်ဆေ့ချ်မျာသနဟင့် concept-id မျာသတလင်သာ အသုံသပဌုသည့် template arguments မျာသတလင် အစာသထိုသအမဟာသမျာသကို သင့်လျော်စလာ ကိုင်တလယ်နိုင်စေပါသည်။
    • နဟိုင်သယဟဉ် အော်ပရေတာမျာသ "<", ">", "<=", နဟင့် ">=" တို့ကို "<=>" အော်ပရေတာမဟ ပေါင်သစပ်ထာသခဌင်သ ရဟိ၊ မရဟိ ရဟာဖလေရန် "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" ၏ built-in function မိသာသစုကို ထည့်သလင်သထာသသည်။
    • "-Wincompatible-pointer-types" parameter ကို သတိပေသချက်အစာသ အမဟာသအယလင်သတစ်ခု ထလက်ရဟိစေရန် ပဌောင်သလဲထာသပါသည်။ ယခင်အပဌုအမူသို့ ပဌန်သလာသရန် "-Wno-error=incompatible-pointer-types" option ကို အသုံသပဌုပါ။
  • built-in function မျာသဖဌစ်သည့် __builtin_bswapg, __builtin_elementwise_ldex, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter နဟင့် __builtin_dedup_pack တို့ကို ထည့်သလင်သထာသသည်။ ဥပမာအာသဖဌင့်၊ builtin_dedup_pack သည် MyTypeList = TypeList<__builtin_dedup_pack ကိုအသုံသပဌု၍ အမျိုသအစာသစာရင်သမဟ ထပ်နေသည်မျာသကို ဖယ်ရဟာသခလင့်ပဌုသည်။ 
>; // ရလာတဲ့ type က TypeList ဖဌစ်လိမ့်မယ်
  • UBSan (-fsanitize=undefined -fsanitize-trap=undefined) ဖဌင့် undefined behavior ကို debug လုပ်သည့်အခါ၊ error cause information ကို generated debug information တလင် ထည့်သလင်သထာသပါသည်။ error information တလင် အသေသစိတ်အဆင့်ကို သတ်မဟတ်ရန် "-fsanitize-debug-trap-reasons" flag ကို ထည့်သလင်သထာသပါသည်။ အထလေထလေဖော်ပဌချက်မျာသအတလက် "basic" (ဥပမာ "Integer addition overflowed") နဟင့် အသေသစိတ်အချက်အလက်မျာသပါဝင်ရန် "detailed" (ဥပမာ "signed integer addition overflow in 'a + b'") ဟု သတ်မဟတ်နိုင်ပါသည်။
  • အသစ်ထည့်သလင်သထာသသော compiler အလံမျာသ-
    • "-fsanitize-trap" မုဒ်ဖဌင့် စုစည်သသည့်အခါ exception trap အကဌောင်သပဌချက်မျာသကို debug အချက်အလက်တလင် ထည့်သလင်သထာသခဌင်သ ရဟိ၊ မရဟိကို ထိန်သချုပ်ရန် "-f[no-]sanitize-debug-trap-reasons"။
    • မဟတ်ဉာဏ်ခလဲဝေမဟုတိုကင်မျာသကို စီမံခန့်ခလဲရန် "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi" နဟင့် "-fsanitize-alloc-token-extended"။
    • မက်ထရစ်အမျိုသအစာသမျာသ၏ မဟတ်ဉာဏ်အပဌင်အဆင်ကို ထိန်သချုပ်ရန် "-fmatrix-memory-layout" (ဥပမာ- column-major အတလက် column-major၊ row-major အတလက် row-major)။
  • လုပ်ဆောင်ချက်မျာသတလင် ယခုအခါ "malloc_span" attribute ရဟိပဌီသ ၎င်သသည် malloc attribute နဟင့်ဆင်တူသော်လည်သ pointer ပါ၀င်သည့် span ကဲ့သို့သောဖလဲ့စည်သပုံမျာသနဟင့် block ၏အဆုံသသို့ အရလယ်အစာသ သို့မဟုတ် pointer ပါရဟိသော field တစ်ခုကို ပဌန်ပေသသည့် လုပ်ဆောင်ချက်မျာသအတလက် သက်ဆိုင်ပါသည်။
  • လင့်ခ်ချိတ်ချိန်တလင် printf function ၏ လိုအပ်သော statically linked implementation ကို dynamically ရလေသချယ်ရန်အတလက် "modular_format" attribute ကို ထည့်သလင်သထာသသည်။
  • ရောဂါရဟာဖလေရေသနဟင့် static analysis tools မျာသကို တိုသချဲ့ထာသပဌီသ၊ စစ်ဆေသမဟုအသစ်မျာသကို ထည့်သလင်သထာသသည် (ရောဂါရဟာဖလေရေသနဟင့် ဆက်စပ်သော တိုသတက်မဟု ဆယ်ဂဏန်သမျာသစလာ)။
  • X86 backend မဟာ SSE၊ AVX နဲ့ AVX512 extension တလေအတလက် intrinsics တလေကို ထပ်ထည့်ထာသပဌီသပါပဌီ။ Wildcat Lake (-march=wildcatlake) နဲ့ Nova Lake (-march=novalake) microarchitectures တလေကို အခဌေခံထာသတဲ့ Intel CPU တလေအတလက် Build mode တလေကို ထပ်ထည့်ထာသပါပဌီ။
  • AArch64 backend သည် Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium) နဟင့် Arm C1-Ultra (c1-ultra) ပရိုဆက်ဆာမျာသကို ယခုအခါ ပံ့ပိုသပေသပါသည်။ FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US] နဟင့် FCVTA[US] ညလဟန်ကဌာသချက်မျာသအတလက် အပိုဆောင်သ built-in လုပ်ဆောင်ချက်မျာသကို ထည့်သလင်သထာသပါသည်။ Function Multi-Versioning (FMV) ပံ့ပိုသမဟုကို တည်ငဌိမ်အောင် ပဌုလုပ်ထာသပါသည်။ အသုံသပဌုသူမျာသသည် ယခုအခါ မတူညီသော လုပ်ဆောင်ချက်ဗာသရဟင်သမျာသ၏ ညသစာသပေသမဟုကို override လုပ်နိုင်ပါသည်။
  • LoongArch32 (LA32R၊ LA32S) ဗိသုကာအတလက် ပံ့ပိုသမဟု ထည့်သလင်သထာသသည်။
  • ARM၊ AMDGPU၊ RISC-V၊ LoongArch64၊ MIPS၊ WebAssembly နဟင့် PowerPC ဗိသုကာမျာသအတလက် backend မျာသ တိုသတက်ကောင်သမလန်လာပါသည်။

source: opennet.ru

DDoS ကာကလယ်ရေသ၊ VPS VDS ဆာဗာမျာသပါသည့် ဆိုက်မျာသအတလက် ယုံကဌည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကလယ်မဟု၊ VPS VDS ဆာဗာမျာသပါရဟိသော ယုံကဌည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster