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

Morero oa Wasmer o lokolotse tokollo ea eona ea bobeli e kholo, e nts'etsapele nako ea ho sebetsa bakeng sa ho etsa 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 ho tsamaisa khoutu e sa tšepahaleng ka thoko. Khoutu ea projeke e ngotsoe ka Rust mme e ajoa tlasa laesense ea MIT.

Ho nkeha habonolo ho finyelloa ka ho bokella khoutu ea kopo ho khoutu ea boemo bo tlase ea WebAssembly, e ka sebetsang ho OS efe kapa efe 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 ho khoutu ea mochini oa sethala sa hajoale, e ts'ehetsa khokahano ea li-backend tse fapaneng tsa pokello (Singlepass, Cranelift, LLVM) le lienjine (tse sebelisang JIT kapa tlhahiso ea khoutu ea mochini).

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 le lifaele, li-sockets le mesebetsi e meng e fanoeng ke sistimi e sebetsang. 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 - bakeng sa ts'ebetso ka lisebelisoa tsohle (lifaele, li-directory, li-sockets, mehala ea sistimi, jj.), kopo e tlameha ho fuoa matla a loketseng).

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.

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.

Phetoho e kholo ea palo ea phetolelo ea Wasmer e amahanngoa le ho hlahisoa ha liphetoho tse sa lumellaneng le API ea ka hare, eo, ho ea ka bahlahisi, e ke keng ea ama 99% ea basebelisi ba sethaleng. Har'a liphetoho tse senyang ho lumellana, ho boetse ho na le phetoho ea sebopeho sa serialized Wasm modules (li-modules tse hlophisitsoeng ho Wasmer 1.0 li ke ke tsa khona ho sebelisoa ho Wasmer 2.0). Liphetoho tse ling:

  • Ts'ehetso bakeng sa litaelo tsa SIMD (Single Instruction, Multiple Data), e lumellang ho bapisa ts'ebetso ea data. Libaka tseo ho tsona ts'ebeliso ea SIMD e ka ntlafatsang ts'ebetso haholo li kenyelletsa ho ithuta ka mochini, khouto ea video le decoding, ts'ebetso ea litšoantšo, papiso ea ts'ebetso ea 'mele, le ho qhekella litšoantšo.
  • Ts'ehetso bakeng sa mefuta ea litšupiso, e lumellang li-module tsa Wasm ho fumana tlhahisoleseling ho li-module tse ling kapa tikolohong e ka tlase.
  • Lintlafatso tse kholo tsa ts'ebetso li entsoe. Lebelo la nako ea ho sebetsa ea LLVM e nang le lintlha tse phaphametseng e ekelitsoe ka hoo e ka bang 50%. Mehala ea ts'ebetso e potlakisitsoe haholo ka ho fokotsa maemo a hlokang ho fihlella kernel. Ts'ebetso ea jenereithara ea khoutu ea Cranelift e eketsehile ka 40%. Nako e fokotsehileng ea ho tlosoa ha data.
    Wasmer 2.0, sesebelisoa sa ho aha lits'ebetso tse thehiloeng ho WebAssembly, lia fumaneha
    Wasmer 2.0, sesebelisoa sa ho aha lits'ebetso tse thehiloeng ho WebAssembly, lia fumaneha
  • Ho bonts'a moelelo ka nepo, mabitso a lienjineri a fetotsoe: JIT → Universal, Native → Dylib (Dynamic Library), Object File → StaticLib (Static Library).

Source: opennet.ru

Eketsa ka tlhaloso