Cheerp 3.0၊ C/C++ ကို JavaScript compiler သို့ Apache 2.0 နှင့် LLVM လိုင်စင်များသို့ ရွှေ့ပြောင်းထားသည်

Cheerp 3.0 compiler ကို မိတ်ဆက်ပေးခဲ့ပြီး၊ သင်သည် မည်သည့် C/C++ ကုဒ်ကိုမဆို WebAssembly သို့မဟုတ် JavaScript သို့ စုစည်းနိုင်စေပါသည်။ ဌာနခွဲအသစ်သည် ယခင်က ကန့်သတ်လိုင်စင်မူဝါဒအစား ခွင့်ပြုထားသော Apache 2.0 နှင့် LLVM လိုင်စင်များကို အသုံးပြုရန် ကွန်ပြူလာနှင့် ပါ၀င်သည့်စာကြည့်တိုက်များကို ပြောင်းရွှေ့ခြင်းအတွက် မှတ်သားဖွယ်ဖြစ်ပြီး၊ စီးပွားဖြစ်မဟုတ်သောပရောဂျက်များအတွက် GPLv2 လိုင်စင်ရွေးချယ်ခွင့်နှင့် စီးပွားဖြစ်လုပ်ငန်းများအတွက် မူပိုင်ခွင့်လိုင်စင်ကို ပေးဆောင်ခြင်းဖြစ်သည်။ compiler ကုဒ်သည် LLVM နှင့် Clang တို့မှ တိုးတက်မှုများအပေါ် အခြေခံထားပြီး စွမ်းဆောင်ရည် မြှင့်တင်ရန်နှင့် စုစည်းထားသော ရလဒ်အရွယ်အစားကို လျှော့ချရန်အတွက် ထပ်လောင်း ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်မှုများ ပါဝင်သည်။

Cheerp ကို browser တွင်လည်ပတ်ရန်ရှိပြီးသား C/C++ စာကြည့်တိုက်များနှင့် အပလီကေးရှင်းများကို သယ်ဆောင်ရန်နှင့် စွမ်းဆောင်ရည်မြင့် ဝဘ်အက်ပလီကေးရှင်းများနှင့် WebAssembly အစိတ်အပိုင်းများကို အစမှအဆုံးဖန်တီးရန်အတွက် နှစ်မျိုးလုံးကို အသုံးပြုနိုင်သည်။ အဆိုပါပရောဂျက်သည် သင့်အား C/C++ နှင့် JavaScript မှ ကုဒ်များကို ဝဘ်အပလီကေးရှင်းတစ်ခုတွင် ပေါင်းစပ်နိုင်စေကာ JavaScript ကုဒ်မှ C/C++ တွင် မူလတီထွင်ထားသည့် လုပ်ဆောင်ချက်များကို ဝင်ရောက်ကြည့်ရှုနိုင်စေရန်နှင့် C/C++ ကုဒ်မှ JavaScript အရာဝတ္ထုများ၊ JavaScript စာကြည့်တိုက်များ၊ Web API နှင့် အင်္ဂါရပ်အားလုံး DOM ။ JavaScript တွင် စုစည်းထားသော ကုဒ်တစ်စိတ်တစ်ပိုင်းနှင့် WebAssembly တွင် တစ်စိတ်တစ်ပိုင်း ပေါင်းစပ်ထားသော စည်းဝေးပွဲများကို ဖန်တီးနိုင်သည်။ ၎င်းသည် libc နှင့် libc++ စံစာကြည့်တိုက်များကို အသုံးပြုသည့် တည်ဆောက်ရေးပရောဂျက်များကို ပံ့ပိုးပေးသည်။

Emscripten compiler နှင့် နှိုင်းယှဉ်ပါက Cheerp သည် ပိုမိုကောင်းမွန်ပြီး ကျစ်လစ်သိပ်သည်းသော WebAssembly အလယ်အလတ်ကုဒ်ကို ထုတ်ပေးသည် (ပျမ်းမျှအားဖြင့် 7% ပိုသေးငယ်သော ရလာဒ်ဖိုင်များ)။ အယူအဆအရ၊ Emscripten ကို WebAssembly အရာဝတ္ထုဖော်မတ်အဖြစ် အသုံးပြုပြီး WebAssembly လုပ်ငန်းစဉ်လွန်အဆင့် (wasm-opt) တွင် ချိတ်ဆက်ခြင်းနှင့် ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ခြင်းတို့ကို လုပ်ဆောင်ခြင်းမှာ ကွဲပြားမှုများဖြစ်သည်။ Cheerp သည် LLVM bytecode ကို အသုံးပြုပြီး စာကြည့်တိုက်များနှင့် အရာဝတ္ထုဖိုင်များအတွက် အလယ်အလတ်ကိုယ်စားပြုမှုအဖြစ် အသုံးပြုကာ ပရောဂျက်တစ်ခုလုံးကို ကျယ်ကျယ်ပြန့်ပြန့် ချဲ့ထွင်ကာ LLVM အဆင့် မက်တာဒေတာကို အသုံးချပြီး နောက်ပိုင်းတွင် လုပ်ဆောင်ရန်မလိုအပ်ဘဲ အသုံးပြုသည်။

ထို့အပြင်၊ Cheerp သည် ကမ္ဘာလုံးဆိုင်ရာအရာဝတ္တုများကို ကိန်းသေအဖြစ်သို့ ပြောင်းလဲရန်အတွက် ဥပမာအားဖြင့်၊ စုစည်းမှုအဆင့်တွင် ကုဒ်၏ကြိုတင်လုပ်ဆောင်မှုကို သေချာစေသည့် PreExecuter optimizer ကိုအသုံးပြုသည်။ ထို့အပြင်၊ စုစည်းမှုအတွင်း PartialExecuter သည် လုပ်ဆောင်မှုအတွင်း အသုံးမပြုရဟု အာမခံထားသည့် ကုဒ်များကို ဖယ်ရှားပေးသည့် function parameters များကို ခွဲခြမ်းစိတ်ဖြာမှုအပေါ် အခြေခံ၍ PartialExecuter ကို အသုံးပြုပါသည်။

Cheer သည် အမှိုက်စုဆောင်းသူမှ ဖုံးအုပ်ထားသော memory ကို dynamically manipulate လုပ်ရန် JavaScript ကုဒ်ကိုလည်း ဖန်တီးနိုင်သည်။ အထူးသဖြင့်၊ JavaScript အမှိုက်စုဆောင်းသူသည် အသုံးမပြုသောအရာများကိုဖယ်ရှားနိုင်စွမ်းရှိသောကြောင့်၊ အထူးသဖြင့်၊ ရိုးရာလိပ်စာနေရာကိုအတုယူမည့်အစား Cheerp သည် C++ အရာများကို JavaScript objectများသို့ တိုက်ရိုက်မြေပုံဆွဲပေးပါသည်။ စွမ်းဆောင်ရည် မြှင့်တင်ရန်၊ ထုတ်လုပ်လိုက်သော WebAssembly အလယ်အလတ်ကုဒ်သည် ဒေတာလည်ပတ်မှုကို အပြိုင်လုပ်ဆောင်ခွင့်ပြုသည့် SIMD တိုးချဲ့မှုများကို အသုံးပြုသည်။

Cheerp ကို C++ တွင် ပေါင်းစပ်အသုံးပြုသူ/ဆာဗာဝဘ်အက်ပလီကေးရှင်းများ ဖန်တီးရန်အတွက် ပလပ်ဖောင်းတစ်ခုအဖြစ် အသုံးပြုနိုင်သည်။ လက်ရှိလက်တွေ့တွင်၊ JavaScript ဖြင့် ရေးသားထားသော သီးခြား in-browser ၏ ရှေ့ဆုံးအဆုံးနှင့် PHP၊ Python၊ Ruby သို့မဟုတ် JavaScript/Node.js ဖြင့် ရေးသားထားသော သီးခြားနောက်ကျောတစ်ခုကို တီထွင်ရန်မှာ သာမာန်ဖြစ်သည်။ Cheerp သည် ကုဒ်အခြေခံတစ်ခုတည်းတွင် backend နှင့် frontend ကို ပံ့ပိုးပေးသည့် C++ တွင် ပြီးပြည့်စုံသော ဝဘ်အက်ပလီကေးရှင်းများကို ဖန်တီးရန်အတွက် ကိရိယာများကို ပံ့ပိုးပေးပါသည်။ စုစည်းမှုလုပ်ငန်းစဉ်အတွင်း၊ ဆာဗာဘက်ခြမ်းကို မူရင်းကုဒ်အဖြစ် စုစည်းပြီး အင်တာဖေ့စ်ကို JavaScript ကိုယ်စားပြုမှုအဖြစ်သို့ ပြောင်းလဲထားသည်။ JavaScript သို့ပြောင်းထားသော ပရောဂျက်အစိတ်အပိုင်းများအပါအဝင် ပရောဂျက်အစိတ်အပိုင်းအားလုံးကို အမှားရှာခြင်းအား Source Map နည်းပညာကို အသုံးပြု၍ C++ တွင် ရင်းမြစ်စာသားများကို အသုံးပြု၍ လုပ်ဆောင်သည် (အမှားတစ်ခုဖြစ်ပေါ်ပါက၊ C++ ကုဒ်၏ အပိုင်းတစ်ခုကို သင်တွေ့မြင်နိုင်သည်၊ ၎င်းသည် C++ ကုဒ်နှင့် လိုင်းအလိုက် ခွဲထွက်မှတ်များကို သတ်မှတ်ခြင်းကို ပံ့ပိုးပေးသည် C++ ကုဒ်ကို အဆင့်ဆင့်လုပ်ဆောင်ခြင်း)။

source: opennet.ru

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