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

Hoʻokomo ʻia ke kolu o ka hoʻokuʻu nui ʻana o ka papahana Wasmer, kahi e hoʻomohala ai 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 hoʻokō ʻ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.

Hāʻawi ʻia ka hiki ke holo i hoʻokahi noi ma nā paepae like ʻole ma o ka hoʻopili ʻana i nā code i loko o ka code intermediate WebAssembly haʻahaʻa, 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).

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). 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.

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.

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.

ʻO nā hoʻololi nui ma Wasmer 3.0:

  • Hoʻohui i ka hiki ke hana i nā faila hoʻokō maoli no kēlā me kēia kahua. Ua hoʻolālā hou ʻia ke kauoha "wasmer create-exe" e hoʻohuli i kahi faila code intermediate WebAssembly i nā mea hoʻokō ponoʻī no Linux, Windows, a me macOS hiki ke holo me ka ʻole o ka hoʻokomo ʻana iā Wasmer ponoʻī.
  • Hiki ke hoʻomaka i nā pūʻolo WAPM aia ma ka papa kuhikuhi wapm.io me ka hoʻohana ʻana i ke kauoha "wasmer run". No ka laʻana, ʻo ka holo ʻana i ka "wasmer run python/python" e hoʻoiho i ka pūʻolo python mai ka waihona wapm.io a holo ia.
  • Ua hoʻolālā hou ʻia ka Wasmer Rust API, e hoʻololi i ke ʻano o ka hana ʻana me ka hoʻomanaʻo a hāʻawi i ka hiki ke hoʻopakele palekana i nā mea Wasm i ka hale kūʻai. Ua manaʻo ʻia kahi hanana MemoryView hou e hiki ai i ka heluhelu a me ke kākau ʻana i ka ʻikepili i kahi wahi hoʻomanaʻo laina.
  • Ua hoʻokō ʻia kahi ʻāpana wasmer-js e holo iā Wasmer ma kahi polokalamu kele pūnaewele a e launa pū me ia mai JavaScript me ka hoʻohana ʻana i ka waihona wasm-bindgen. Ma kona mau hiki, ua like ka wasmer-js i nā mea wasmer-sys i hoʻolālā ʻia e holo iā Wasmer ma nā ʻōnaehana hana maʻamau.
  • Ua maʻalahi nā ʻenekini. Ma kahi o nā ʻenekini ʻokoʻa no JIT, dynamic a me static linking (Universal, Dylib, StaticLib), hoʻokahi mīkini maʻamau i kēia manawa ke hāʻawi ʻia, a mālama ʻia ka hoʻouka ʻana a me ka mālama ʻana i nā code ma ke kiʻekiʻe o ka hoʻonohonoho ʻana.
  • No ka deserialize artifacts, hoʻohana ʻia ka rkyv framework, ka mea e hōʻoia i ka hana ma ke ʻano kope kope, ʻo ia. ʻaʻole pono ka hoʻokaʻawale hoʻomanaʻo hou a hana i ka deserialization me ka hoʻohana ʻana i ka buffer i hāʻawi mua ʻia. Ua hoʻonui nui ka hoʻohana ʻana iā rkyv i ka wikiwiki hoʻomaka.
  • Ua hoʻomaikaʻi ʻia ka Singlepass single-pass compiler, hoʻohui i ke kākoʻo no nā hana waiwai nui, hoʻomaikaʻi i ka hilinaʻi, a hoʻohui i ke kākoʻo no ka mālama ʻana i nā papa.
  • Hoʻomaikaʻi ʻia ka hoʻokō ʻana o ka WASI (WebAssembly System Interface) API. Ua hoʻoholo ʻia nā pilikia ma ka polokalamu polokalamu WASI no ka hana ʻana me ka ʻōnaehana faila. Ua hoʻolālā hou ʻia nā ʻano kūloko me ka hoʻohana ʻana i ka WAI (WebAssembly Interfaces), kahi e hiki ai i ke ʻano o nā hiʻohiʻona hou i ka wā e hiki mai ana.

Source: opennet.ru

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