WebAssembly-based applications များတည်ဆောက်ခြင်းအတွက် toolkit တစ်ခု Wasmer 3.0 ကို ရရှိနိုင်ပါသည်။

Wasmer ပရောဂျက်၏ တတိယမြောက် အဓိကထုတ်လွှတ်မှုအား မိတ်ဆက်ထားပြီး၊ ကွဲပြားသောလည်ပတ်မှုစနစ်များတွင် လုပ်ဆောင်နိုင်သည့် universal applications များဖန်တီးရန်အသုံးပြုနိုင်သည့် WebAssembly modules များကိုလုပ်ဆောင်ရန်အတွက် runtime ကိုဖန်တီးပေးသည့် runtime ကိုဖန်တီးပေးပါသည်။ ပရောဂျက်ကုဒ်ကို Rust ဖြင့် ရေးသားထားပြီး MIT လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

မတူညီသောပလပ်ဖောင်းများတွင် အပလီကေးရှင်းတစ်ခုအား လုပ်ဆောင်နိုင်မှုသည် မည်သည့် OS တွင်မဆို လုပ်ဆောင်နိုင်သော သို့မဟုတ် အခြားသော ပရိုဂရမ်းမင်းဘာသာစကားများဖြင့် ပရိုဂရမ်များတွင် ထည့်သွင်းနိုင်သည့် အဆင့်နိမ့် WebAssembly အလယ်အလတ်ကုဒ်သို့ ကုဒ်ကို စုစည်းခြင်းဖြင့် ပံ့ပိုးပေးပါသည်။ ပရိုဂရမ်များသည် WebAssembly pseudocode ကိုအသုံးပြုသည့် ပေါ့ပါးသောကွန်တိန်နာများဖြစ်သည်။ ဤကွန်တိန်နာများသည် လည်ပတ်မှုစနစ်နှင့် ချိတ်ဆက်ခြင်းမရှိသည့်အပြင် မည်သည့်ပရိုဂရမ်းမင်းဘာသာစကားဖြင့်မဆို မူရင်းရေးသားထားသော ကုဒ်များ ပါဝင်နိုင်သည်။ Emscripten toolkit ကို WebAssembly သို့ compile လုပ်ရန် အသုံးပြုနိုင်ပါသည်။ WebAssembly ကို လက်ရှိပလက်ဖောင်း၏ စက်ကုဒ်သို့ ဘာသာပြန်ရန်၊ ၎င်းသည် အမျိုးမျိုးသော စုစည်းမှု နောက်ကွယ်တွင် (Singlepass၊ Cranelift၊ LLVM) နှင့် အင်ဂျင်များ (JIT သို့မဟုတ် စက်ကုဒ်ထုတ်လုပ်ခြင်းကို အသုံးပြု) ချိတ်ဆက်မှုကို ပံ့ပိုးပေးပါသည်။

အပလီကေးရှင်းများသည် sandbox ပတ်ဝန်းကျင်ရှိ ပင်မစနစ်မှ သီးခြားခွဲထုတ်ထားပြီး ကြေညာထားသော လုပ်ဆောင်နိုင်စွမ်း (စွမ်းဆောင်ရည်စီမံခန့်ခွဲမှုအပေါ် အခြေခံသည့် လုံခြုံရေးယန္တရား - အရင်းအမြစ်တစ်ခုစီ (ဖိုင်များ၊ လမ်းညွှန်များ၊ ဆော့ဖ်ဝဲများ၊ စနစ်ခေါ်ဆိုမှုများ၊ စသည်ဖြင့်) လုပ်ဆောင်ချက်များအတွက်၊ လျှောက်ထားရာတွင် သင့်လျော်သော အခွင့်အာဏာ ပေးရမည်။) လည်ပတ်မှုစနစ်မှ ပံ့ပိုးပေးသော ဖိုင်များ၊ ဆော့ဖ်ဝဲများနှင့် အခြားလုပ်ဆောင်ချက်များအတွက် ပရိုဂရမ်းမင်းအင်တာဖေ့စ်များကို ပံ့ပိုးပေးသည့် WASI (WebAssembly System Interface) API ကို အသုံးပြု၍ စနစ်နှင့် ဝင်ရောက်ထိန်းချုပ်မှုနှင့် အပြန်အလှန်တုံ့ပြန်မှုများကို ပံ့ပိုးပေးပါသည်။

ပလက်ဖောင်းသည် သင့်အား ဇာတိစည်းဝေးပွဲများနှင့် နီးစပ်သော အက်ပ်လီကေးရှင်းလုပ်ဆောင်မှု စွမ်းဆောင်ရည်ကို ရရှိစေရန် ခွင့်ပြုသည်။ WebAssembly module အတွက် Native Object Engine ကိုသုံးပြီး၊ သင်သည် precompiled .so, .dylib နှင့် .dll object ဖိုင်များကို ထုတ်လုပ်ရန်အတွက် စက်ကုဒ်ကို ထုတ်လုပ်နိုင်သည် ("wasmer compile -native" ) ကို run ရန် အချိန်အနည်းငယ်သာ လိုအပ်သော်လည်း sandbox ကို သီးခြားခွဲထားမှုအားလုံးကို ထိန်းသိမ်းထားသည်။ အင်္ဂါရပ်များ။ Built-in Wasmer ဖြင့် ကြိုတင်စုစည်းထားသော ပရိုဂရမ်များကို ထောက်ပံ့ပေးနိုင်သည်။ အပိုပရိုဂရမ်များနှင့် တိုးချဲ့မှုများကို ဖန်တီးရန်အတွက် Rust API နှင့် Wasm-C-API ကို ကမ်းလှမ်းထားသည်။

WebAssembly container တစ်ခုကို စတင်ရန်၊ ပြင်ပမှီခိုမှုမရှိဘဲ ထွက်လာသော Wasmer (“curl https://get.wasmer.io -sSfL |sh”) ကို ထည့်သွင်းပြီး လိုအပ်သောဖိုင် (“wasmer test.wasm” ကို ဖွင့်ပါ။ ) ပရိုဂရမ်များကို WAPM ပက်ကေ့ဂျ်မန်နေဂျာကို အသုံးပြု၍ စီမံခန့်ခွဲနိုင်သည့် ပုံမှန် WebAssembly module များပုံစံဖြင့် ဖြန့်ဝေထားသည်။ Wasmer သည် Rust၊ C/C++၊ C#၊ D၊ Python၊ JavaScript၊ Go၊ PHP၊ Ruby၊ Elixir နှင့် Java ပရိုဂရမ်များထဲသို့ WebAssembly ကုဒ်ကို မြှုပ်နှံရန် အသုံးပြုနိုင်သည့် စာကြည့်တိုက်တစ်ခုအဖြစ်လည်း ရရှိနိုင်ပါသည်။

Wasmer 3.0 တွင် အဓိကပြောင်းလဲမှုများ-

  • မည်သည့်ပလက်ဖောင်းအတွက်မဆို မူရင်း executable ဖိုင်များဖန်တီးနိုင်မှု စွမ်းရည်ကို ထည့်သွင်းထားသည်။ Wasmer ကိုယ်တိုင်မထည့်သွင်းဘဲအသုံးပြုနိုင်သော Linux၊ Windows နှင့် macOS ပလပ်ဖောင်းများအတွက် WebAssembly အလယ်အလတ်ကုဒ်ဖိုင်ကို ကိုယ်တိုင်ပါရှိသော executables များအဖြစ်သို့ "wasmer create-exe" ကွန်မန်းအား လုံး၀ ပြန်လည်ဒီဇိုင်းထုတ်ထားပါသည်။
  • "wasmer run" အမိန့်ကို အသုံးပြု၍ wapm.io လမ်းညွှန်တွင်ရှိသော WAPM ပက်ကေ့ဂျ်များကို စတင်နိုင်သည်။ ဥပမာအားဖြင့်၊ "wasmer run python/python" ကိုအသုံးပြုခြင်းသည် wapm.io repository မှ python package ကိုဒေါင်းလုဒ်လုပ်ပြီး run လိမ့်မည်။
  • Wasmer Rust API အား လုံး၀ ဒီဇိုင်းထုတ်ထားပြီး မမ်မိုရီဖြင့် လုပ်ဆောင်သည့်ပုံစံကို ပြောင်းလဲကာ Store တည်ဆောက်ပုံတွင် Wasm အရာဝတ္ထုများကို ဘေးကင်းစွာ သိမ်းဆည်းနိုင်သည့် စွမ်းရည်ကို ပံ့ပိုးပေးထားသည်။ MemoryView ဖွဲ့စည်းတည်ဆောက်ပုံအသစ်သည် အချက်အလက်များကို မျဉ်းသားမှတ်ဉာဏ်ဧရိယာသို့ ဖတ်ရှုခြင်းနှင့် ရေးသားခြင်းတို့ကို ခွင့်ပြုရန် အဆိုပြုထားသည်။
  • wasm-bindgen စာကြည့်တိုက်ကို အသုံးပြု၍ ဝဘ်ဘရောက်ဆာတစ်ခုတွင် Wasmer ကိုလည်ပတ်ရန်နှင့် wasm-bindgen စာကြည့်တိုက်ကို အသုံးပြု၍ JavaScript မှ ၎င်းနှင့် အပြန်အလှန်တုံ့ပြန်ရန်အတွက် wasmer-js အစိတ်အပိုင်းများအစုတစ်ခုအား အကောင်အထည်ဖော်ခဲ့သည်။ ၎င်း၏စွမ်းဆောင်ရည်တွင်၊ wasmer-js သည် ပုံမှန်လည်ပတ်မှုစနစ်များတွင် Wasmer ကိုလည်ပတ်ရန် ဒီဇိုင်းထုတ်ထားသော wasmer-sys အစိတ်အပိုင်းများနှင့် ကိုက်ညီပါသည်။
  • အင်ဂျင်များကို ရိုးရှင်းအောင် ပြုလုပ်ထားသည်။ JIT အတွက် သီးခြားအင်ဂျင်များအစား၊ ဒိုင်နမစ်နှင့် ပုံသဏ္ဍာန်ချိတ်ဆက်ခြင်း (Universal၊ Dylib၊ StaticLib)၊ ဘုံအင်ဂျင်တစ်လုံးကို ယခုအခါ ကမ်းလှမ်းထားပြီး၊ ကုဒ်တင်ခြင်းနှင့် ချွေတာခြင်းများကို ကန့်သတ်ဘောင်များအဆင့်တွင် ထိန်းချုပ်ထားသည်။
  • ရှေးဟောင်းပစ္စည်းများကို ဖယ်ထုတ်ရန်၊ သုညကော်ပီမုဒ်တွင် လည်ပတ်မှုကို သေချာစေသည့် rkyv framework ကို အသုံးပြုထားသည်။ ၎င်းသည် အပိုဆောင်းမှတ်ဉာဏ်ခွဲဝေမှုမလိုအပ်ဘဲ ကနဦးပေးထားသည့်ကြားခံကိုအသုံးပြု၍သာ deserialization လုပ်ဆောင်သည်။ rkyv ကိုအသုံးပြုခြင်းသည် startup speed သိသိသာသာတိုးလာသည်။
  • Singlepass single-pass compiler ကို မြှင့်တင်ထားပြီး၊ တန်ဖိုးများစွာ လုပ်ဆောင်ချက်များအတွက် ပံ့ပိုးမှု၊ ပိုမိုကောင်းမွန်သော ယုံကြည်စိတ်ချရမှု၊ ခြွင်းချက် ကိုင်တွယ်မှုဘောင်များအတွက် ပံ့ပိုးမှု ပေါင်းထည့်ထားသည်။
  • WASI (WebAssembly System Interface) API ကို ပိုမိုကောင်းမွန်အောင် အကောင်အထည်ဖော်ခြင်း။ ဖိုင်စနစ်နှင့် လုပ်ဆောင်ရန်အတွက် WASI ဆော့ဖ်ဝဲကြားခံရှိ ပြဿနာများကို ဖြေရှင်းပြီးဖြစ်သည်။ အတွင်းပိုင်းအမျိုးအစားများကို WAI (WebAssembly Interfaces) ဖြင့် ပြန်လည်ဒီဇိုင်းထုတ်ထားပြီး အင်္ဂါရပ်အသစ်များကို အနာဂတ်တွင်အသုံးပြုနိုင်မည်ဖြစ်သည်။

source: opennet.ru

မှတ်ချက် Add