Mozilla, Fastly, Intel le Red Hat li khothalletsa WebAssembly e le sethala sa tšebeliso ea bokahohle

Mozilla, Fastly, Intel le Red Hat kopanetsoe boikitlaetso ba eona ba ho nts'etsapele mahlale a thusang ho etsa WebAssembly sethala sa lefats'e sa ts'ebetso ea khoutu e bolokehileng ho pholletsa le meaho efe kapa efe, sistimi e sebetsang kapa sesebelisoa. Ho theiloe sechaba bakeng sa nts'etsopele e kopaneng ea nako ea ho sebetsa le li-compilers tse lumellang tšebeliso ea WebAssembly eseng ho libatli tsa marang-rang feela. Selekane sa Bytecode.

Ho theha mananeo a nkehang habobebe a fanoang ka mokhoa oa WebAssembly a ka etsoang kantle ho sebatli, re khothaletsa ho sebelisa API. WASI (WebAssembly System Interface), e fanang ka li-interface tsa software bakeng sa ho sebelisana ka ho toba le mokhoa oa ho sebetsa (POSIX API bakeng sa ho sebetsa ka lifaele, li-sockets, joalo-joalo). Karolo e ikhethileng ea mohlala oa ts'ebetso ea lits'ebetso tse sebelisang WASI ke hore li sebetsa tikolohong ea sandbox bakeng sa ho itšehla thajana ho tsoa ho sistimi e kholo mme li sebelisa mokhoa oa ts'ireletso o ipapisitseng le ts'ebetso ea ts'ebetso bakeng sa ts'ebetso e 'ngoe le e' ngoe ea lisebelisoa (lifaele, li-directory, li-sockets, li-call tsa sistimi. , joalo-joalo) kopo e tlameha ho fuoa litumello tse nepahetseng (ho fanoa feela ka phihlello ea tšebetso e phatlalalitsoeng).

E 'ngoe ea lipakane Selekane se entsoeng ke tharollo bothateng ba ho aba lits'ebetso tsa sejoale-joale tsa modular ka palo e kholo ea litšepeho. Lits'ebetsong tse joalo, boits'epo bo bong le bo bong e ka ba mohloli oa bofokoli kapa litlhaselo. Ho nka taolo ea ho itšetleha ho u lumella ho fumana taolo ea lits'ebetso tsohle tse amanang le eona. Ho tšepa ts'ebetsong ho bolela ho tšepa batho bohle ba itšetlehileng ka bona, empa hangata ho itšetleha ho etsoa le ho hlokomeloa ke lihlopha tsa batho ba bang bao mesebetsi ea bona e ke keng ea laoloa. Litho tsa Bytecode Alliance li ikemiselitse ho fana ka tharollo e akaretsang bakeng sa ts'ebetso e sireletsehileng ea lits'ebetso tsa WebAssembly tseo ka tlhaho li sa tšepahaleng.

Bakeng sa ts'ireletso, ho khothaletsoa ho sebelisa mohopolo oa nanoprocesses, moo mojule e 'ngoe le e' ngoe ea ho itšetleha e arohanngoa ka module ea WebAssembly e arohaneng, matla a eona a behiloeng mabapi le mojule ona feela (mohlala, laeborari ea likhoele tsa ts'ebetso e ke ke ea hlola e e-ba teng. khona ho bula sokete ea netweke kapa faele). Ho fapana le karohano ea ts'ebetso, bahlokomeli ba WebAssembly ba bobebe 'me ha ba hloke lisebelisoa tse eketsehileng - tšebelisano pakeng tsa ba sebetsang ha e lieha ho feta ho bitsa mesebetsi e tloaelehileng. Karohano e ka etsoa eseng feela boemong ba li-module tsa motho ka mong, empa hape le boemong ba lihlopha tsa li-module tseo, ka mohlala, li hlokang ho sebetsa le libaka tse tloaelehileng tsa memori.

Matla a kopiloeng a ka khethoa ka bobeli boemong ba ba itšetlehileng ka bona, 'me a abeloa ho ba itšetlehileng ka ketane ka li-module tsa motsoali (lisebelisoa tse ho WASI li amahanngoa le mofuta o khethehileng oa tlhaloso ea faele - bokhoni). Ka mohlala, mojule o ka abeloa bokhoni ba ho fihlella lenane le itseng la li-call le li-call tsa tsamaiso, 'me haeba lisebelisoa tsa ntlafatso ea module li senyehile kapa ho khetholloa ho ba kotsing, nakong ea tlhaselo, ho fihlella ho tla lekanyetsoa feela ho lisebelisoa tsena. Liphatlalatso tsa lisebelisoa tse entsoeng ke baetsi ba module e ka ba sesupo sa ts'ebetso e belaetsang, joalo ka ha mochini oa mongolo o kopa tumello ea ho bula khokahano ea marang-rang. Litumello tse behiloeng qalong lia hlahlojoa 'me haeba li fetoha, ho laeloa ho itšetleha ho haneloa ho fihlela signature ea moduli ea lehae e nchafatsoa.

Bakeng sa nts'etsopele e kopanetsoeng tlas'a lepheo la Bytecode Alliance fetoletsoe tse 'maloa tse amanang le WebAssembly merero, e neng e entsoe ka thoko ke lik'hamphani tse thehileng selekane:

  • Nako ea nako - nako ea ho sebetsa bakeng sa ho tsamaisa lits'ebetso tsa WebAssembly ka likeketso tsa WASI joalo ka lits'ebetso tse tloaelehileng tse ikemetseng. E ts'ehetsa ka bobeli ho qala WebAssembly bytecode ho sebelisa mohala o khethehileng oa taelo le ho hokahanya lifaele tse lokiselitsoeng ho phethisoa (wasmtime e hahiloe ts'ebelisong joalo ka laeborari). Wasmtime e na le sebopeho sa modular se feto-fetohang se u lumellang hore u lekanye nako ea ho sebetsa bakeng sa lits'ebetso tse fapaneng, mohlala, o ka etsa mofuta o hlakotsoeng oa lisebelisoa tse nang le lisebelisoa tse fokolang;
  • Lucet — mokgoboketsi le nako ya ho sebetsa bakeng sa ho etsa mananeo ka sebopeho sa WebAssembly. E ikhethang tšobotsi Lucet ke ts'ebeliso ea pokello e felletseng ea tebello (AOT, pele ho nako) sebakeng sa JIT ho khoutu ea mochini e loketseng ho etsoa ka kotloloho. Morero ona o ntlafalitsoe ke Fastly mme o ntlafalitsoe ho sebelisa lisebelisoa tse fokolang le ho qala linyeoe tse ncha kapele haholo (Ka potlako e sebelisa Lucet ka har'a enjine ea komporo ea leru e sebelisang WebAssembly bakeng sa ba sebetsang kopo e ngoe le e ngoe). E le karolo ea morero o kopanetsoeng, moqapi oa Lucet o reretsoe ho fetoloa ho sebelisa Wasmtime e le motheo;
  • WAMR (WebAssembly Micro Runtime) ke nako e 'ngoe ea ho sebetsa ea WebAssembly, e qapiloeng ke Intel bakeng sa tšebeliso ea lisebelisoa tsa Inthanete tsa Lintho. WAMR e ntlafalitsoe bakeng sa tšebeliso e fokolang ea lisebelisoa 'me e ka sebelisoa ho lisebelisoa tse nang le RAM e nyane. Morero o kenyelletsa mofetoleli le mochine oa sebele oa ho phethahatsa WebAssembly bytecode, API (sehlopha sa Libc) le lisebelisoa bakeng sa tsamaiso e matla ea kopo;
  • phahamisoa ka crane - jenereithara ea khoutu e fetolelang boemeli ba mahareng bo ikemetseng ka har'a meralo ea lisebelisoa ka har'a khoutu ea mochini e sebetsang e ntlafalitsoeng bakeng sa sethala se ikhethileng sa Hardware. Cranelift e ts'ehetsa parallelization ea ho hlophisoa ha ts'ebetso bakeng sa tlhahiso e potlakileng ea sephetho, e e lumellang hore e sebelisoe ho theha li-compilers tsa JIT (JIT e thehiloeng ho Cranelift e sebelisoa mochining oa sebele oa Wasmtime);
  • WASI tloaelehileng - ts'ebetsong e fapaneng ea WASI (WebAssembly System Interface) API bakeng sa ho hlophisa tšebelisano le mokhoa oa ho sebetsa;
  • cargo-wasi - mojule bakeng sa mookameli oa sephutheloana sa Cargo o sebelisang taelo ea ho bokella Rust code ho WebAssembly bytecode ho sebelisa sebopeho sa WASI bakeng sa ho sebelisa WebAssembly kantle ho sebatli;
  • Wat и wasmparser - likarolo tsa ho arola mongolo (WAT, WAST) le litšoantšiso tsa binary tsa WebAssembly bytecode.

Ho pheta-pheta, WebAssembly e tšoana haholo le Asm.js, empa fapaneng ka hore ke sebopeho sa binary se sa hokahaneng le JavaScript mme se lumella khoutu ea boemo bo tlase e hlophisitsoeng ho tsoa lipuong tse fapaneng tsa lenaneo hore e etsoe ho sebatli. WebAssembly ha e hloke pokello ea lithōle hobane e sebelisa tsamaiso e hlakileng ea memori. Ka ho sebelisa JIT bakeng sa WebAssembly, o ka fihlela maemo a ts'ebetso haufi le khoutu ea lehae. Har'a lipheo tsa mantlha tsa WebAssembly ke ho netefatsa hore o khona ho nkeha, boitšoaro bo ka lebelloang esale pele le ts'ebetso e ts'oanang ea khoutu lipolaneteng tse fapaneng.

Source: opennet.ru

Eketsa ka tlhaloso