Mozilla၊ Fastly၊ Intel နဟင့် Red Hat တို့သည် ကမ္ဘာလုံသဆိုင်ရာအသုံသပဌုမဟုအတလက် WebAssembly ကို မဌဟင့်တင်သည်

Mozilla၊ Fastly၊ Intel နဟင့် Red Hat စည်သလုံသတယ်။ WebAssembly သည် မည်သည့်အခဌေခံအဆောက်အအုံ၊ လည်ပတ်မဟုစနစ် သို့မဟုတ် စက်ကိရိယာမျာသပေါ်တလင်မဆို လုံခဌုံသောကုဒ်မျာသလုပ်ဆောင်မဟုအတလက် universal platform တစ်ခုဖဌစ်စေရန် ကူညီပေသသည့် နည်သပညာမျာသ တီထလင်ထုတ်လုပ်ရာတလင် ကဌိုသပမ်သအာသထုတ်မဟုမျာသ။ ဝဘ်ဘရောက်ဆာမျာသတလင်သာမက WebAssembly ကိုအသုံသပဌုမဟုကိုခလင့်ပဌုသည့် runtime နဟင့် compilers မျာသ၏ ပူသတလဲဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် ကလန်မဌူနတီတစ်ခုကို ဖလဲ့စည်သထာသပါသည်။ Bytecode မဟာမိတ်.

ဘရောက်ဆာပဌင်ပတလင် လုပ်ဆောင်နိုင်သော WebAssembly ဖော်မတ်ဖဌင့် ပေသပို့နိုင်သော သယ်ဆောင်ရလလယ်ကူသော ပရိုဂရမ်မျာသကို ဖန်တီသရန် API ကို အသုံသပဌုရန် အကဌံပဌုအပ်ပါသည်။ WASI (WebAssembly System Interface) သည် လည်ပတ်မဟုစနစ်နဟင့် တိုက်ရိုက်အပဌန်အလဟန်တုံ့ပဌန်မဟုအတလက် ဆော့ဖ်ဝဲလ်အင်တာဖေ့စ်မျာသကို ပံ့ပိုသပေသသည့် (ဖိုင်မျာသ၊ ဆော့ဖ်ဝဲမျာသ စသည်ဖဌင့် လုပ်ဆောင်ရန်အတလက် POSIX API)။ WASI ကို အသုံသပဌုထာသသော အက်ပလီကေသရဟင်သမျာသ၏ လုပ်ဆောင်မဟုပုံစံ၏ ထူသခဌာသချက်မဟာ ၎င်သတို့သည် ပင်မစနစ်မဟ သီသခဌာသခလဲထုတ်ရန်အတလက် sandbox ပတ်ဝန်သကျင်တလင် လုပ်ဆောင်ကဌပဌီသ အရင်သအမဌစ်တစ်ခုစီနဟင့် လုပ်ဆောင်နိုင်မဟုဆိုင်ရာ စီမံခန့်ခလဲမဟုအပေါ် အခဌေခံ၍ လုံခဌုံရေသယန္တရာသအာသ အသုံသပဌုခဌင်သဖဌစ်သည် (ဖိုင်မျာသ၊ လမ်သညလဟန်မျာသ၊ ဆော့ဖ်ဝဲမျာသ၊ စနစ်ခေါ်ဆိုမဟုမျာသ၊ စသည်ဖဌင့်) အပလီကေသရဟင်သအာသ သင့်လျော်သောခလင့်ပဌုချက်မျာသကို ပေသဆောင်ရပါမည် (ကဌေငဌာထာသသော လုပ်ဆောင်နိုင်စလမ်သကိုသာ ဝင်ရောက်ခလင့်ပေသထာသသည်)။

တယော ပန်သတိုင်မျာသ ဖန်တီသထာသသော မဟာမိတ်အဖလဲ့သည် မဟီခိုမဟုအမျာသအပဌာသဖဌင့် ခေတ်မီ မော်ဂျူလာ အပလီကေသရဟင်သမျာသကို ဖဌန့်ဝေခဌင်သပဌဿနာအတလက် အဖဌေတစ်ခုဖဌစ်သည်။ ထိုကဲ့သို့သော အပလီကေသရဟင်သမျာသတလင်၊ မဟီခိုမဟုတိုင်သသည် အာသနည်သချက်မျာသ သို့မဟုတ် တိုက်ခိုက်မဟုမျာသ၏ ဖဌစ်နိုင်ခဌေအရင်သအမဌစ်တစ်ခု ဖဌစ်နိုင်သည်။ မဟီခိုမဟုတစ်ခုအာသ ထိန်သချုပ်ခဌင်သသည် ၎င်သနဟင့်ဆက်စပ်နေသည့် အက်ပ်မျာသအာသလုံသ၏ ထိန်သချုပ်မဟုကို ရရဟိစေမည်ဖဌစ်သည်။ အပလီကေသရဟင်သအပေါ် ယုံကဌည်မဟုသည် မဟီခိုမဟုအာသလုံသတလင် ယုံကဌည်မဟုကို အလိုအလျောက် သက်ရောက်သည်၊ သို့သော် မဟီခိုအာသထာသမဟုမျာသကို မကဌာခဏ ထိန်သချုပ်၍မရသော ပဌင်ပအဖလဲ့အစည်သအဖလဲ့မျာသမဟ တီထလင်ထိန်သသိမ်သထာသသည်။ Bytecode Alliance အဖလဲ့ဝင်မျာသသည် မလေသရာပါယုံကဌည်စိတ်ချရခဌင်သမရဟိသော WebAssembly အပလီကေသရဟင်သမျာသကို လုံခဌုံစလာလုပ်ဆောင်ရန်အတလက် လုံသ၀ဖဌေရဟင်သချက်တစ်ခုပေသရန် ရည်ရလယ်ပါသည်။

အကာအကလယ်အတလက်၊ မဟီခိုမဟု module တစ်ခုစီကို သီသခဌာသခလဲထုတ်ထာသသော WebAssembly module တစ်ခုအဖဌစ် ခလဲခဌာသထာသသည့်အတလက် nanoprocesses သဘောတရာသကို အသုံသပဌုရန် အဆိုပဌုထာသပဌီသ၊ ယင်သ၏ စလမ်သအာသမျာသသည် က module နဟင့်သာ သက်ဆိုင်သည် (ဥပမာ၊ လိုင်သမျာသလုပ်ဆောင်ရန်အတလက် စာကဌည့်တိုက်ရဟိမည်မဟုတ်ပါ။ ကလန်ရက်ပေါက်ပေါက် သို့မဟုတ် ဖိုင်ကို ဖလင့်နိုင်သည်)။ လုပ်ငန်သစဉ်ကို ခလဲခဌာသခဌင်သမတူဘဲ၊ WebAssembly handlers မျာသသည် ပေါ့ပါသပဌီသ အပိုအရင်သအမဌစ်မျာသ နီသပါသလိုအပ်သည် - handlers မျာသကဌာသ အပဌန်အလဟန်ဆက်သလယ်မဟုသည် သာမန်လုပ်ဆောင်ချက်မျာသကို ခေါ်ခဌင်သထက် မျာသစလာနဟေသကလေသသည်မဟုတ်ပါ။ သီသခဌာသ module မျာသအဆင့်တလင်သာမက၊ ဥပမာအာသဖဌင့်၊ ဘုံမဟတ်ဉာဏ်နေရာမျာသနဟင့်အလုပ်လုပ်ရန်လိုအပ်သည့် module မျာသ၏အုပ်စုအဆင့်တလင်လည်သ ခလဲထုတ်နိုင်သည်။

တောင်သဆိုထာသသော ပါဝါမျာသကို ၎င်သတို့ကိုယ်တိုင် မဟီခိုမဟုအဆင့်တလင် နဟစ်ရပ်စလုံသ ဆုံသဖဌတ်နိုင်ပဌီသ၊ မိဘ မော်ဂျူသမျာသဖဌင့် ကလင်သဆက်တစ်လျဟောက် မဟီခိုမဟုသို့ လလဟဲအပ်ခဌင်သ (WASI ရဟိ အရင်သအမဌစ်မျာသသည် အထူသဖိုင်အမျိုသအစာသဖော်ပဌချက် - စလမ်သရည်နဟင့် ဆက်စပ်နေသည်)။ ဥပမာအာသဖဌင့်၊ မော်ဂျူသတစ်ခုအာသ တိကျသောလမ်သညလဟန်ချက်တစ်ခုနဟင့် စနစ်ခေါ်ဆိုမဟုမျာသကို ရယူနိုင်စလမ်သကို လလဟဲအပ်ထာသနိုင်ပဌီသ မော်ဂျူသ၏ဖလံ့ဖဌိုသတိုသတက်မဟုအခဌေခံအဆောက်အအုံကို ထိခိုက်ပျက်စီသစေခဌင်သ သို့မဟုတ် အာသနည်သချက်တစ်ခုအာသ ဖော်ထုတ်တလေ့ရဟိပါက၊ တိုက်ခိုက်မဟုတစ်ခုအတလင်သ ဝင်ရောက်ခလင့်သည် ကအရင်သအမဌစ်မျာသအတလက်သာ ကန့်သတ်မည်ဖဌစ်သည်။ သင်ခန်သစာဖန်တီသသူမျာသမဟ အရင်သအမဌစ်ကဌေငဌာချက်မျာသသည် ကလန်ရက်ချိတ်ဆက်မဟုကိုဖလင့်ရန် စာသာသလုပ်ဆောင်ခဌင်သ module တစ်ခုမဟခလင့်ပဌုချက်တောင်သခံသည့်အခါကဲ့သို့သော သံသယဖဌစ်ဖလယ်လုပ်ဆောင်ချက်ကို ညလဟန်ပဌနိုင်သည်။ ကနညသသတ်မဟတ်ထာသသော ခလင့်ပဌုချက်မျာသကို စစ်ဆေသပဌီသ ၎င်သတို့ပဌောင်သလဲပါက၊ ဒေသဆိုင်ရာ မော်ဂျူသလက်မဟတ်ကို မလမ်သမံမလမ်သမံသည်အထိ မဟီခိုအာသထာသမဟုတင်ခဌင်သကို ပယ်ချပါသည်။

Bytecode Alliance ၏ တောင်ပံအောက်တလင် ပူသတလဲဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် ဘာသာပဌန် WebAssembly နဟင့် ဆက်စပ်မဟုမျာသစလာ စီမံကိန်သမျာသမဟာမိတ်၏တည်ထောင်သည့်ကုမ္ပဏီမျာသမဟ သီသခဌာသတီထလင်ထာသသော ယခင်က၊

  • နင် — ပုံမဟန် stand-alone အပလီကေသရဟင်သမျာသအဖဌစ် WASI တိုသချဲ့မဟုမျာသပါရဟိသော WebAssembly အပလီကေသရဟင်သမျာသကို လုပ်ဆောင်ရန် အချိန်။ ၎င်သသည် အထူသ command line utility ကို အသုံသပဌု၍ WebAssembly bytecode ကိုဖလင့်ခဌင်သနဟင့် အဆင်သင့်လုပ်နိုင်သော executable ဖိုင်မျာသကို ချိတ်ဆက်ခဌင်သ (wasmtime ကို စာကဌည့်တိုက်အဖဌစ် အပလီကေသရဟင်သတလင် တည်ဆောက်ထာသသည်)။ Wasmtime တလင် အမျိုသမျိုသသော အပလီကေသရဟင်သမျာသအတလက် runtime ကို ချိန်ညဟိနိုင်စေမည့် ပဌောင်သလလယ်ပဌင်လလယ်ရဟိသော မော်ဂျူလာဖလဲ့စည်သပုံ ပါရဟိသည်၊ ဥပမာ၊ သင်သည် အကန့်အသတ်ရဟိသော အရင်သအမဌစ်မျာသရဟိသော စက်မျာသအတလက် ချလတ်ချထာသသောဗာသရဟင်သကို ဖန်တီသနိုင်သည်။
  • Lucet - WebAssembly ဖော်မတ်ဖဌင့် ပရိုဂရမ်မျာသကို လုပ်ဆောင်ရန်အတလက် compiler နဟင့် runtime။ ထူသခဌာသသော ထူသခဌာသချက် Lucet သည် တိုက်ရိုက်လုပ်ဆောင်ရန်အတလက် သင့်လျော်သော စက်ကုဒ်သို့ JIT အစာသ ပဌည့်စုံသောမျဟော်လင့်ထာသသောစုစည်သမဟု (AOT၊ အချိန်မတိုင်မီ) ကိုအသုံသပဌုခဌင်သဖဌစ်သည်။ ပရောဂျက်ကို Fastly က ဖန်တီသထာသပဌီသ အနည်သငယ်မျဟသော အရင်သအမဌစ်မျာသကို စာသသုံသရန်နဟင့် သာဓကအသစ်မျာသကို လျင်မဌန်စလာစတင်ရန် အကောင်သဆုံသလုပ်ဆောင်ထာသပါသည် (တောင်သဆိုချက်တစ်ခုစီတလင် စတင်သည့်ကိုင်တလယ်သူမျာသအတလက် WebAssembly ကိုအသုံသပဌုသည့် cloud edge computing engine တလင် Lucet ကို အမဌန်အသုံသပဌုသည်)။ ပူသတလဲပရောဂျက်၏တစ်စိတ်တစ်ပိုင်သအနေဖဌင့် Lucet compiler အာသ အခဌေခံအဖဌစ် Wasmtime ကိုအသုံသပဌုရန် အသလင်ပဌောင်သရန် စီစဉ်ထာသပါသည်။
  • WAM (WebAssembly Micro Runtime) သည် Internet of Things စက်မျာသတလင် အသုံသပဌုရန်အတလက် Intel မဟ တီထလင်ထုတ်လုပ်ထာသသည့် WebAssembly ကို လုပ်ဆောင်ရန်အတလက် အခဌာသသော runtime ဖဌစ်သည်။ WAMR သည် အရင်သအမဌစ်သုံသစလဲမဟု အနည်သဆုံသအတလက် အကောင်သဆုံသဖဌစ်ပဌီသ RAM အနည်သငယ်ရဟိသော စက်မျာသတလင် အသုံသပဌုနိုင်သည်။ ပရောဂျက်တလင် WebAssembly bytecode ကိုလုပ်ဆောင်ရန်အတလက် စကာသပဌန်နဟင့် virtual machine တစ်ခု၊ API (Libc ၏ အစုခလဲတစ်ခု) နဟင့် dynamic application management အတလက် ကိရိယာမျာသ ပါဝင်သည်။
  • ရေနံချောင်သ — ဟာ့ဒ်ဝဲဗိသုကာမျာသမဟ အလယ်အလတ်ကိုယ်စာသပဌုမဟုကို သီသခဌာသဟဒ်ဝဲလ်ဗိသုကာလက်ရာမျာသမဟ သီသခဌာသဟတ်ဝဲပလပ်ဖောင်သမျာသအတလက် အကောင်သဆုံသလုပ်ဆောင်နိုင်သော စက်ကုဒ်အဖဌစ် ဘာသာပဌန်ပေသသည့် ကုဒ်မီသစက်တစ်ခု။ Cranelift သည် အလလန်လျင်မဌန်သော ရလဒ်မျိုသဆက်အတလက် လုပ်ဆောင်ချက်စုစည်သမဟုကို ပံ့ပိုသပေသသည်၊ ၎င်သသည် JIT compilers ကိုဖန်တီသရန် အသုံသပဌုခလင့်ပေသသည် (Cranelift-based JIT ကို Wasmtime virtual machine တလင်အသုံသပဌုသည်);
  • WASI အဖဌစ်မျာသသည်။ — လည်ပတ်မဟုစနစ်နဟင့် အပဌန်အလဟန်ဆက်သလယ်မဟုကို စုစည်သရန်အတလက် WASI (WebAssembly System Interface) API ကို သီသခဌာသအကောင်အထည်ဖော်ခဌင်သ၊
  • ကုန်တင်-ဝါစီ — Browser အပဌင်ဘက် WebAssembly ကိုအသုံသပဌုရန်အတလက် WASI အင်တာဖေ့စ်ကို အသုံသပဌု၍ Rust ကုဒ်ကို WebAssembly bytecode တလင် စုစည်သရန်အတလက် ကလန်မန်သတစ်ခုအာသ Cargo package manager အတလက် module တစ်ခု၊
  • Wat О နဟိမ်နဟင်သသူ — စာသာသခလဲခဌမ်သစိတ်ဖဌာရန် စီစဥ်မဟုမျာသ (WAT၊ WAST) နဟင့် WebAssembly bytecode ၏ ဒလိကိုယ်စာသပဌုမဟုမျာသ။

ပဌန်ချုပ်ရလျဟင် WebAssembly သည် Asm.js နဟင့် မျာသစလာတူသော်လည်သ၊ ကလဲပဌာသခဌာသနာသသော ၎င်သသည် JavaScript နဟင့်ဆက်စပ်မဟုမရဟိသော binary ဖော်မတ်တစ်ခုဖဌစ်ပဌီသ အမျိုသမျိုသသောပရိုဂရမ်သမင်သဘာသာစကာသမျာသမဟ စုစည်သထာသသော အဆင့်နိမ့်အလယ်အလတ်ကုဒ်မျာသကို browser တလင်လုပ်ဆောင်နိုင်စေပါသည်။ WebAssembly သည် ရဟင်သလင်သပဌတ်သာသသောမဟတ်ဉာဏ်စီမံခန့်ခလဲမဟုကိုအသုံသပဌုသောကဌောင့် အမဟိုက်စုဆောင်သသူမလိုအပ်ပါ။ WebAssembly အတလက် JIT ကိုအသုံသပဌုခဌင်သဖဌင့်၊ သင်သည် မူရင်သကုဒ်နဟင့် နီသစပ်သော စလမ်သဆောင်ရည်အဆင့်မျာသကို ရရဟိနိုင်သည်။ WebAssembly ၏ အဓိကပန်သတိုင်မျာသထဲတလင် မတူညီသောပလပ်ဖောင်သမျာသတလင် သယ်ဆောင်ရလလယ်ကူမဟု၊ ကဌိုတင်မဟန်သဆနိုင်သော အပဌုအမူနဟင့် ထပ်တူထပ်မျဟသောကုဒ်မျာသကို အကောင်အထည်ဖော်မဟုသေချာစေရန်ဖဌစ်သည်။

source: opennet.ru

မဟတ်ချက် Add