Ho lokollotsoe tokollo ea boraro e kholo ea projeke ea Wasmer. E hlahisa nako ea ho sebetsa bakeng sa ho phethahatsa li-module tsa WebAssembly, tse ka sebelisoang ho theha lisebelisoa tsa bokahohleng tse ka sebetsang lits'ebetsong tse ngata tsa ts'ebetso, hammoho le ts'ebetsong e ikemetseng ea khoutu e sa tšepahaleng. Khoutu ea morero e ngotsoe ka Rust mme e ajoa tlasa laesense ea MIT.
Bokhoni ba ho tsamaisa ts'ebeliso e le 'ngoe ho pholletsa le li-platform tse ngata bo finyelloa ka ho bokella khoutu ka har'a khoutu e bohareng ea WebAssembly, e ka sebetsang ho OS leha e le efe kapa ea kenngoa mananeong a ngotsoeng ka lipuo tse ling. Mananeo ana ke lijana tse bobebe tse sebelisang pseudocode ea WebAssembly. Likotlolo tsena ha lia tlamelloa ho sistimi efe kapa efe ea ts'ebetso mme li ka kenyelletsa khoutu e ngotsoeng qalong ka puo efe kapa efe ea lenaneo. The Emscripten toolchain e ka sebelisoa ho bokella ho WebAssembly. Li-backend tse fapaneng tsa pokello (Singlepass, Cranelift, LLVM) le lienjine (tse sebelisang JIT kapa khoutu ea mochini o hlahisang) li tšehelitsoe bakeng sa ho fetolela WebAssembly ho likhoutu tsa lehae sethaleng sa hajoale.
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 taolo ea bokhoni-ho fihlella mohloli o mong le o mong (lifaele, li-directory, sockets, mehala ea sistimi, joalo-joalo), kopo e tlameha ho fuoa tumello e nepahetseng). Taolo ea phihlello le tšebelisano le sistimi e netefatsoa 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 tsa bohlokoa ho Wasmer 3.0:
- Bokhoni ba ho theha mananeo a sebetsang a tlhaho bakeng sa sethala sefe kapa sefe bo ekelitsoe. Taelo ea "wasmer create-exe" e hlophisitsoe bocha ka botlalo, e u lumellang ho fetola faele e nang le khoutu e mahareng ea WebAssembly hore e be mananeo a sebetsang a ikemetseng bakeng sa liforomo tse itseng. Linux, Windows и macOS, e ka sebetsang ntle le ho kenya Wasmer ka boeona.
- Joale o ka tsamaisa liphutheloana tsa WAPM tse bukeng ea wapm.io u sebelisa taelo ea "wasmer run". Mohlala, ho matha "wasmer run python/python" ho tla khoasolla le ho tsamaisa sephutheloana sa python ho tloha polokelong ea wapm.io.
- Wasmer Rust API e hlophisitsoe bocha ka botlalo, ka mokhoa o mocha oa taolo ea memori le bokhoni ba ho boloka lintho tsa Wasm ka mokhoa o bolokehileng ka har'a Lebenkele. Ho se ho tsebisitsoe sebopeho se secha sa MemoryView, se lumellang ho bala le ho ngola lintlha sebakeng sa mohopolo o lekanang.
- Sehlopha sa likarolo tsa wasmer-js se kentsoe tšebetsong bakeng sa ho tsamaisa Wasmer ho sebatli sa marang-rang le ho sebelisana le eona ho tsoa ho JavaScript, ho sebelisoa laeborari ea wasm-bindgen. Mabapi le bokhoni, wamer-js e tsamaisana le likarolo tsa wamer-sys tse etselitsoeng ho tsamaisa Wasmer lits'ebetsong tse tloaelehileng tsa ts'ebetso.
- Lienjine li nolofalitsoe. Sebakeng sa lienjineri tse arohaneng tsa JIT, khokahano e matla le e tsitsitseng (Universal, Dylib, StaticLib), ho se ho fanoa ka enjine e le 'ngoe e kopaneng, e nang le khoutu ea ho kenya le ho boloka e laoloang maemong a paramethara.
- Moralo oa rkyv o sebelisetsoa ho tlosa lintho tsa khale. E sebetsa ka mokhoa oa zero-copy, ho bolelang hore ha e hloke kabo ea memori e eketsehileng mme e sebelisa feela buffer e fanoeng qalong bakeng sa deserialization. Ho sebelisa rkyv ho ntlafalitse haholo lebelo la ho qala.
- 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.
- Ts'ebetsong ea WASI (WebAssembly System Interface) API e ntlafalitsoe. Mathata a tsamaiso ea faele ea WASI API a rarollotsoe. Mefuta ea ka hare e entsoe bocha ho sebelisoa WAI (WebAssembly Interfaces), e tla nolofalletsa likarolo tse ngata tse ncha nakong e tlang.
Source: opennet.ru
