Wasmer 2.0, ngwa ọrụ maka iwulite ngwa dabere na WebAssembly, dị

Ọrụ Wasmer ewepụtala ntọhapụ ya nke abụọ, na-emepe oge ịgba ọsọ maka imezu modul WebAssembly nke enwere ike iji mepụta ngwa zuru ụwa ọnụ nke nwere ike ịgba ọsọ na sistemụ arụmọrụ dị iche iche, yana ịgba ọsọ koodu enweghị ntụkwasị obi na iche. Edere koodu oru ngo na Rust ma kesaa ya n'okpuru ikike MIT.

A na-enweta ikike ikike site na ịnakọta koodu ngwa n'ime koodu etiti WebAssembly dị ala, nke nwere ike ịgba ọsọ na OS ọ bụla ma ọ bụ tinye ya na mmemme n'asụsụ mmemme ndị ọzọ. Mmemme bụ igbe dị fechaa na-agba WebAssembly pseudocode. Ejikọghị akpa ndị a na sistemụ arụmọrụ ma nwee ike ịgụnye koodu edeburu n'asụsụ mmemme ọ bụla. Enwere ike iji ngwa Emscripten chịkọta na WebAssembly. Iji sụgharịa WebAssembly n'ime koodu igwe nke ikpo okwu dị ugbu a, ọ na-akwado njikọ nke nkwado ndabere dị iche iche (Singlepass, Cranelift, LLVM) na injin (iji JIT ma ọ bụ ọgbọ koodu igwe).

A na-enye njikwa ohere na mmekọrịta ya na sistemụ site na iji WASI (WebAssembly System Interface) API, nke na-enye oghere mmemme maka ịrụ ọrụ na faịlụ, oghere na ọrụ ndị ọzọ nke sistemụ arụmọrụ nyere. Ngwa dịpụrụ adịpụ na sistemụ bụ isi na gburugburu igbe igbe ma nwee ike nweta naanị ọrụ ekwuputara (usoro nchekwa dabere na njikwa ikike - maka omume na akụrụngwa ọ bụla (faịlụ, akwụkwọ ndekọ aha, sọks, oku sistemụ, wdg), a ghaghị inye ngwa ngwa ike kwesịrị ekwesị).

Iji malite akpa WebAssembly, ọ ga-ezuru iji wụnye Wasmer oge ojiri gaa na sistemụ, nke na-abịa na-enweghị ịdabere na mpụga (“curl https://get.wasmer.io -sSfL | sh”), wee mee faịlụ dị mkpa (“wasmer test). .wasm"). A na-ekesa mmemme n'ụdị modul WebAssembly nkịtị, nke enwere ike ijikwa njikwa ngwugwu WAPM. Wasmer dịkwa ka ọbá akwụkwọ nke enwere ike iji tinye koodu WebAssembly na Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, na Java.

Ikpo okwu na-enye gị ohere ịrụ ọrụ mmezu ngwa dị nso na nke ọgbakọ obodo. Iji Native Object Engine for a WebAssembly modul, ị nwere ike ịmepụta koodu obodo ("wasmer compile -native" maka ịmepụta precompiled .so, .dylib na .dll ihe faịlụ), nke na-achọ obere oge iji na-agba ọsọ, ma na-ejigide atụmatụ niile nke. mwepu sandbox. Ọ ga-ekwe omume ịnye mmemme achịkọtara na Wasmer arụnyere n'ime ya. A na-enye Rust API na Wasm-C-API maka ịmepụta mgbakwunye na mgbakwunye.

Mgbanwe dị ịrịba ama na ọnụọgụ ụdị nke Wasmer jikọtara ya na iwebata mgbanwe na-ekwekọghị na API dị n'ime, nke, dị ka ndị mmepe si kwuo, agaghị emetụta 99% nke ndị ọrụ ikpo okwu. N'ime mgbanwe ndị na-emebi ndakọrịta, enwekwara mgbanwe n'ụdị modul Wasm serialized (modul nke etinyere na Wasmer 1.0 agaghị enwe ike iji ya na Wasmer 2.0). Mgbanwe ndị ọzọ:

  • Nkwado maka SIMD (Ntuziaka Otu, Otutu Data) ntuziaka, na-enye ohere ịmekọrịta data arụmọrụ. Ebe iji SIMD nwere ike imeziwanye arụmọrụ gụnyere mmụta igwe, ntinye vidiyo na ngbanwe, nhazi onyonyo, ịme anwansị usoro anụ ahụ, na iji eserese eserese.
  • Nkwado maka ụdị ntụaka, na-ekwe ka modul Wasm nweta ozi na modul ndị ọzọ ma ọ bụ na gburugburu ebe obibi.
  • Emeela nkwalite arụmọrụ dị mkpa. Ọsọ nke oge ọsọ LLVM nwere ọnụ ọgụgụ isi n'elu mmiri amụbaala ihe dịka 50%. Emeela ka oku ọrụ dị ngwa ngwa site na ibelata ọnọdụ chọrọ ịnweta kernel. Arụ ọrụ generator code Craelift ejirila 40% abawanyela. Ebelatala oge mkpochapụ data.
    Wasmer 2.0, ngwa ọrụ maka iwulite ngwa dabere na WebAssembly, dị
    Wasmer 2.0, ngwa ọrụ maka iwulite ngwa dabere na WebAssembly, dị
  • Iji gosi nke ọma n'ụzọ ziri ezi, aha nke engines agbanweela: JIT → Universal, Native → Dylib (Dynamic Library), Ihe File → StaticLib (Static Library).

isi: opennet.ru

Tinye a comment