Loaʻa ʻo Wasmer 2.0, kahi mea hana no ke kūkulu ʻana i nā noi e pili ana i ka WebAssembly

Ua hoʻokuʻu ka papahana Wasmer i kāna hoʻokuʻu nui ʻelua, e hoʻomohala ana i kahi runtime no ka hoʻokō ʻana i nā modules WebAssembly i hiki ke hoʻohana ʻia e hana i nā noi āpau e hiki ke holo ma nā ʻōnaehana hana like ʻole, a me ka holo ʻana i nā code hilinaʻi ʻole i kahi kaʻawale. Ua kākau ʻia ke code papahana ma Rust a ua māhele ʻia ma lalo o ka laikini MIT.

Loaʻa ka Portability ma ka hōʻuluʻulu ʻana i nā code noi i loko o ka pae haʻahaʻa WebAssembly intermediate code, hiki ke holo ma kekahi OS a i hoʻokomo ʻia i nā papahana ma nā ʻōlelo papahana ʻē aʻe. ʻO nā papahana nā ipu māmā e holo ana i ka pseudocode WebAssembly. ʻAʻole pili kēia mau pahu i ka ʻōnaehana hana a hiki ke hoʻokomo i nā code i kākau mua ʻia ma kekahi ʻōlelo papahana. Hiki ke hoʻohana ʻia ka pahu hana Emscripten e hōʻuluʻulu iā WebAssembly. No ka unuhi ʻana i ka WebAssembly i loko o ke code mīkini o ka paepae o kēia manawa, kākoʻo ia i ka pilina o nā ʻāpana hoʻohui like ʻole (Singlepass, Cranelift, LLVM) a me nā ʻenekini (me ka hoʻohana ʻana i ka JIT a i ʻole ka hana ʻana i nā code mīkini).

Hāʻawi ʻia ka mana ʻae a me ka launa pū ʻana me ka ʻōnaehana me ka WASI (WebAssembly System Interface) API, e hāʻawi ana i nā kikowaena papahana no ka hana ʻana me nā faila, nā kumu a me nā hana ʻē aʻe i hāʻawi ʻia e ka ʻōnaehana hana. Hoʻokaʻawale ʻia nā noi mai ka ʻōnaehana nui i loko o kahi kaona sandbox a loaʻa wale i ka hana i haʻi ʻia (kahi hana palekana e pili ana i ka hoʻokele hiki - no nā hana me kēlā me kēia kumu waiwai (faila, papa kuhikuhi, sockets, system calls, etc.), ka pono e hāʻawi ʻia ka noi i nā mana kūpono).

No ka hoʻomaka ʻana i kahi pahu WebAssembly, e hoʻokomo wale iā Wasmer i ka ʻōnaehana runtime, e hele mai me ka ʻole o nā hilinaʻi waho ("curl https://get.wasmer.io -sSfL | sh"), a holo i ka faila pono ("wasmer test.wasm" ). Hoʻokaʻawale ʻia nā papahana ma ke ʻano o nā modules WebAssembly maʻamau, hiki ke hoʻokele ʻia me ka hoʻohana ʻana i ka luna pūʻolo WAPM. Loaʻa ʻia ʻo Wasmer ma ke ʻano he waihona hiki ke hoʻohana ʻia e hoʻokomo i ka code WebAssembly i Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, a me nā polokalamu Java.

Hāʻawi ka paepae iā ʻoe e hoʻokō i ka hana hoʻokō noi kokoke i nā hui maoli. Ke hoʻohana nei i ka Native Object Engine no ka WebAssembly module, hiki iā ʻoe ke hoʻohua i ka code mīkini ("wasmer compile -native" e hoʻohua i nā faila precompiled .so, .dylib a me .dll object files), e koi ana i ka manawa holo liʻiliʻi e holo ai, akā mālama i ka hoʻokaʻawale ʻana i ka pahu one. hiʻona. Hiki ke hoʻolako i nā polokalamu precompiled me Wasmer i kūkulu ʻia. Hāʻawi ʻia ka Rust API a me Wasm-C-API no ka hana ʻana i nā mea hoʻohui a me nā hoʻonui.

ʻO kahi hoʻololi koʻikoʻi i ka helu helu o Wasmer e pili ana me ka hoʻokomo ʻana i nā loli like ʻole i ka API kūloko, ka mea, e like me nā mea hoʻomohala, ʻaʻole e pili i ka 99% o nā mea hoʻohana platform. Ma waena o nā hoʻololi e haki ana i ka hoʻohālikelike, aia kekahi hoʻololi i ke ʻano o nā modula Wasm serialized (ʻaʻole hiki ke hoʻohana ʻia nā modules serialized ma Wasmer 1.0 ma Wasmer 2.0). Nā hoʻololi ʻē aʻe:

  • Kākoʻo no nā ʻōlelo aʻoaʻo SIMD (Single Instruction, Multiple Data), e ʻae ana i ka parallelization o nā hana ʻikepili. ʻO nā wahi kahi e hiki ai i ka hoʻohana ʻana iā SIMD ke hoʻomaikaʻi nui i ka hana e pili ana i ka aʻo ʻana i ka mīkini, ka hoʻopili wikiō a me ka decoding, ka hoʻoili kiʻi ʻana, ka simulation kaʻina hana kino, a me ka manipulation kiʻi.
  • Kākoʻo no nā ʻano kuhikuhi, e ʻae ana i nā modula Wasm e kiʻi i ka ʻike i loko o nā modula ʻē aʻe a i ʻole i ke kaiapuni lalo.
  • Ua hana ʻia nā loiloi hana nui. Ua hoʻonui ʻia ka wikiwiki o ka manawa holo LLVM me nā helu lana ma kahi o 50%. Ua hoʻonui nui ʻia nā kelepona hana ma ka hōʻemi ʻana i nā kūlana e pono ai ke komo i ka kernel. Ua hoʻonui ʻia ka hana ʻo Cranelift code generator e 40%. Hoʻemi ʻia ka manawa deserialization ʻikepili.
    Loaʻa ʻo Wasmer 2.0, kahi mea hana no ke kūkulu ʻana i nā noi e pili ana i ka WebAssembly
    Loaʻa ʻo Wasmer 2.0, kahi mea hana no ke kūkulu ʻana i nā noi e pili ana i ka WebAssembly
  • No ka hōʻike pololei ʻana i ke ʻano, ua hoʻololi ʻia nā inoa o nā mīkini: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka