Wasmer 3.0, sesebelisoa sa ho aha lits'ebetso tse thehiloeng ho WebAssembly, lia fumaneha

Ena ke tokollo ea boraro e kholo ea morero oa Wasmer, o hlahisang nako ea ho sebetsa bakeng sa ho phethahatsa li-module tsa WebAssembly tse ka sebelisoang ho theha lits'ebetso tsa bokahohleng tse ka sebetsang lits'ebetsong tse fapaneng tsa ts'ebetso, hammoho le ts'ebetso ea sandbox ea khoutu e sa tšepahaleng. Khoutu ea projeke e ngotsoe ka Rust mme e ajoa tlasa laesense ea MIT.

Bokhoni ba ho tsamaisa ts'ebeliso e ts'oanang ho li-platform tse fapaneng bo fanoa ka ho bokella khoutu ho khoutu ea mahareng ea boemo bo tlase ea WebAssembly e ka sebetsang ho sistimi efe kapa efe ea ts'ebetso kapa ea kenngoa mananeong a lipuo tse ling tsa lenaneo. Mananeo ke lijana tse bobebe tse tsamaisang WebAssembly pseudocode. Lits'oants'o tsena ha lia tlamelloa ho sistimi ea ts'ebetso mme li ka kenyelletsa khoutu e ngotsoeng qalong ka puo efe kapa efe ea lenaneo. The Emscripten toolkit e ka sebelisoa ho bokella ho WebAssembly. Ho fetolela WebAssembly ka har'a khoutu ea mochini oa sethala sa hajoale, e tšehetsoa ho hokahanya li-backend tse fapaneng tsa pokello (Singlepass, Cranelift, LLVM) le lienjineri (ho sebelisa JIT kapa khoutu ea mochini o hlahisang).

Likopo li qheletsoe ka thoko ho sistimi e kholo tikolohong ea sandbox mme li na le phihlello ea ts'ebetso e phatlalalitsoeng (mokhoa oa ts'ireletso o ipapisitseng le bokhoni - bakeng sa ts'ebetso ka lisebelisoa tsohle (lifaele, li-directory, li-sockets, li-call tsa sistimi, joalo-joalo), kopo e tlameha ho etsoa. ho fuwa bolaodi bo nepahetseng). Taolo ea phihlello le tšebelisano le sistimi e fanoa ho sebelisoa WASI (WebAssembly System Interface) API, e fanang ka li-interface tsa mananeo bakeng sa ho sebetsa ka lifaele, li-sockets le mesebetsi e meng e fanoeng ke sistimi e sebetsang.

Sethala se u lumella ho fihlela ts'ebetso ea ts'ebetso e haufi le ea likopano tsa matsoalloa. U sebelisa Native Object Engine bakeng sa mojule oa WebAssembly, u ka hlahisa khoutu ea tlhaho ("wasmer compile -native" bakeng sa ho hlahisa lifaele tse entsoeng esale pele .so, .dylib le .dll), e hlokang nako e fokolang ea ho sebetsa, empa e boloka likarolo tsohle tsa ho itšehla thajana ka lebokose la lehlabathe. Hoa khoneha ho fana ka mananeo a hlophisitsoeng esale pele ka Wasmer e hahiloeng. Rust API le Wasm-C-API li fanoa bakeng sa ho theha li-add-on le li-add-on.

Ho qala setshelo sa WebAssembly, ho lekane ho kenya Wasmer runtime tsamaisong, e tlang ntle le ho itšetleha ka ntle ("curl https://get.wasmer.io -sSfL | sh"), 'me u tsamaise faele e hlokahalang ("teko ea wasmer). .wasm”). Mananeo a ajoa ka mokhoa oa li-module tse tloaelehileng tsa WebAssembly, tse ka laoloang ho sebelisoa mookameli oa sephutheloana sa WAPM. Wasmer e fumaneha hape e le laebrari e ka sebelisoang ho kenya khoutu ea WebAssembly ho Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir, le mananeo a Java.

Liphetoho tse kholo ho Wasmer 3.0:

  • E kenyellelitse bokhoni ba ho theha lifaele tsa tlhaho tse ka phethisoang bakeng sa sethala sefe kapa sefe. Taelo ea "wasmer create-exe" e hlophisitsoe bocha ho fetolela faele ea khoutu ea WebAssembly ea mahareng hore e be lisebelisoa tse ikemetseng bakeng sa li-platform tsa Linux, Windows le macOS tse ka sebetsang ntle le ho kenya Wasmer ka boeona.
  • Bokhoni ba ho tsamaisa liphutheloana tsa WAPM tse bukeng ea wapm.io ho sebelisa taelo ea "wasmer run" bo fanoe. Mohlala, ho etsa "wasmer run python/python" ho tla khoasolla sephutheloana sa python sebakeng sa polokelo ea wapm.io ebe o se tsamaisa.
  • Wasmer Rust API e fetotsoe ka ho feletseng, moo mokhoa oa ho sebetsa ka mohopolo o fetotsoeng 'me bokhoni ba ho boloka lintho tsa Wasm ka mokhoa o sireletsehileng mohahong oa Store bo fanoe. Ho hlahisoa sebopeho se secha sa MemoryView se lumellang ho bala le ho ngola lintlha sebakeng sa mohopolo o lekanang.
  • Sehlopha sa likarolo tsa wamer-js se kentsoe ts'ebetsong ho tsamaisa Wasmer ho sebatli sa marang-rang le ho sebelisana le eona ho tsoa ho JavaScript ho sebelisa laeborari ea wasm-bindgen. Wasmer-js e ts'oana ka ts'ebetso ho likarolo tsa wamer-sys tse etselitsoeng ho tsamaisa Wasmer lits'ebetsong tse tloaelehileng tsa ts'ebetso.
  • Lienjineri tse nolofalitsoeng. Sebakeng sa lienjineri tse arohaneng tsa JIT, khokahano e matla le e tsitsitseng (Universal, Dylib, StaticLib), enjene e le 'ngoe e tloaelehileng e se e fanoa mme e kenya le ho boloka khoutu eo ho eona e laoloang maemong a maemo a paramente.
  • Ho senya lintho tsa khale, ho sebelisoa moralo oa rkyv, o fanang ka ts'ebetso ea zero-copy, i.e. e sa hlokeng kabo ea tlatsetso ea memori le ho etsa deerialization o sebelisa feela buffer e fanoeng qalong. Tšebeliso ea rkyv e ekelitse lebelo la ho qala haholo.
  • Singlepass compiler e ntlafalitsoe ho ts'ehetsa lits'ebetso tsa boleng bo bongata, ho ntlafatsa ts'epahalo, le ho eketsa ts'ehetso bakeng sa liforeimi tse ts'oaroang tse ikhethileng.
  • Ntlafatso ea ts'ebetso ea WASI (WebAssembly System Interface) API. Lintlha tse tsitsitseng ho WASI API bakeng sa ho sebetsa le tsamaiso ea lifaele. Mefuta ea ka hare e hlophisitsoe bocha ho sebelisoa WAI (WebAssembly Interfaces), e tla lumella letoto la likarolo tse ncha ho kengoa ts'ebetsong nakong e tlang.

Source: opennet.ru

Eketsa ka tlhaloso