Mozilla, Yara, Intel ati Pupa Hat ṣe igbega WebAssembly gẹgẹbi pẹpẹ fun lilo gbogbo agbaye

Mozilla, Yara, Intel ati Pupa Hat apapọ awọn akitiyan rẹ ni idagbasoke awọn imọ-ẹrọ ti o ṣe iranlọwọ lati jẹ ki WebAssembly jẹ pẹpẹ ti gbogbo agbaye fun ipaniyan koodu to ni aabo kọja eyikeyi amayederun, ẹrọ ṣiṣe, tabi ẹrọ. A ti ṣẹda agbegbe kan fun idagbasoke apapọ ti akoko asiko ati awọn olupilẹṣẹ ti o gba laaye lilo WebAssembly kii ṣe ni awọn aṣawakiri wẹẹbu nikan Bytecode Alliance.

Lati ṣẹda awọn eto gbigbe ti a firanṣẹ ni ọna kika WebAssembly ti o le ṣe ni ita ẹrọ aṣawakiri, a daba ni lilo API WASI (Interface System WebAssembly), eyiti o pese awọn atọkun sọfitiwia fun ibaraenisepo taara pẹlu ẹrọ iṣẹ (POSIX API fun ṣiṣẹ pẹlu awọn faili, awọn iho, ati bẹbẹ lọ). Ẹya iyasọtọ ti awoṣe ipaniyan ti awọn ohun elo nipa lilo WASI ni pe wọn ṣiṣẹ ni agbegbe apoti iyanrin fun ipinya lati eto akọkọ ati lo ẹrọ aabo ti o da lori iṣakoso agbara fun awọn iṣe pẹlu awọn orisun kọọkan (awọn faili, awọn ilana, awọn iho, awọn ipe eto. , ati bẹbẹ lọ) ohun elo naa gbọdọ fun ni awọn igbanilaaye ti o yẹ (iwọle si iṣẹ ti a kede nikan ni a pese).

Ọkan ninu afojusun Ijọṣepọ ti a ṣẹda jẹ ojutu si iṣoro ti pinpin awọn ohun elo apọjuwọn igbalode pẹlu nọmba nla ti awọn igbẹkẹle. Ninu iru awọn ohun elo, gbogbo igbẹkẹle le jẹ orisun ti o pọju ti awọn ailagbara tabi awọn ikọlu. Gbigba iṣakoso ti igbẹkẹle gba ọ laaye lati ni iṣakoso gbogbo awọn ohun elo ti o ni nkan ṣe pẹlu rẹ. Igbẹkẹle ohun elo laifọwọyi tumọ si igbẹkẹle gbogbo awọn igbẹkẹle, ṣugbọn awọn igbẹkẹle nigbagbogbo ni idagbasoke ati itọju nipasẹ awọn ẹgbẹ ẹnikẹta ti awọn iṣẹ ṣiṣe ko le ṣakoso. Awọn ọmọ ẹgbẹ Bytecode Alliance pinnu lati pese ojutu pipe fun ipaniyan aabo ti awọn ohun elo WebAssembly ti kii ṣe igbẹkẹle lainidii.

Fun aabo, o ti wa ni dabaa lati lo awọn Erongba ti nanoprocesses, ninu eyi ti kọọkan gbára module ti wa ni niya si lọtọ lọtọ WebAssembly module, awọn agbara ti o ti ṣeto ni ibatan si yi module nikan (fun apẹẹrẹ, a ìkàwé fun processing awọn gbolohun ọrọ yoo ko). ni anfani lati ṣii iho nẹtiwọki tabi faili). Ko dabi iyapa ilana, awọn olutọju WebAssembly jẹ iwuwo fẹẹrẹ ati pe ko nilo awọn orisun afikun - ibaraenisepo laarin awọn oluṣakoso ko lọra pupọ ju pipe awọn iṣẹ lasan lọ. Iyapa le ṣee ṣe kii ṣe ni ipele ti awọn modulu kọọkan, ṣugbọn tun ni ipele ti awọn ẹgbẹ ti awọn modulu ti, fun apẹẹrẹ, nilo lati ṣiṣẹ pẹlu awọn agbegbe iranti ti o wọpọ.

Awọn agbara ti o beere ni a le pinnu mejeeji ni ipele ti awọn igbẹkẹle funrararẹ, ati fi ranṣẹ si awọn igbẹkẹle lẹgbẹẹ pq nipasẹ awọn modulu obi (awọn orisun ni WASI ni nkan ṣe pẹlu oriṣi pataki ti apejuwe faili - agbara). Fun apẹẹrẹ, module kan le ṣe aṣoju agbara lati wọle si itọsọna kan pato ati awọn ipe eto, ati pe ti awọn amayederun idagbasoke ti module naa ba ni ipalara tabi ailagbara ti a mọ, lakoko ikọlu, iwọle yoo ni opin si awọn orisun wọnyi nikan. Awọn ikede orisun nipasẹ awọn olupilẹṣẹ module le jẹ afihan iṣẹ ṣiṣe ifura, gẹgẹbi nigbati module ṣiṣatunṣe ọrọ kan beere igbanilaaye lati ṣii asopọ nẹtiwọọki kan. Awọn igbanilaaye ti a ṣeto ni ibẹrẹ ti ṣayẹwo ati pe ti wọn ba yipada, ikojọpọ igbẹkẹle jẹ kọ titi ti ibuwọlu module agbegbe ti ni imudojuiwọn.

Fun idagbasoke apapọ labẹ apakan ti Alliance Bytecode túmọ orisirisi jẹmọ si WebAssembly awọn iṣẹ akanṣe, ni iṣaaju lọtọ ni idagbasoke nipasẹ awọn ile-iṣẹ idasile ti Alliance:

  • Akoko - akoko ṣiṣe fun ṣiṣe awọn ohun elo WebAssembly pẹlu awọn amugbooro WASI gẹgẹbi awọn ohun elo imurasilẹ-nikan deede. O ṣe atilẹyin mejeeji ifilọlẹ WebAssembly bytecode nipa lilo ohun elo laini aṣẹ pataki kan ati sisopọ awọn faili ṣiṣe ṣiṣe ti o ti ṣetan (akoko akoko ti a ṣe sinu ohun elo bi ile-ikawe). Wasmtime ni eto apọjuwọn to rọ ti o fun ọ laaye lati ṣe iwọn asiko asiko fun ọpọlọpọ awọn ohun elo, fun apẹẹrẹ, o le ṣẹda ẹya ti o ya kuro fun awọn ẹrọ pẹlu awọn orisun to lopin;
  • Lucet - alakojo ati asiko isise fun ṣiṣe awọn eto ni WebAssembly kika. Iyatọ ẹya-ara Lucet jẹ lilo akojọpọ ifojusọna ti o ni kikun (AOT, iwaju-akoko) dipo JIT sinu koodu ẹrọ ti o dara fun ipaniyan taara. Ise agbese na ni idagbasoke nipasẹ Fastly ati pe o jẹ iṣapeye lati jẹ awọn orisun to kere julọ ati ṣe ifilọlẹ awọn iṣẹlẹ tuntun ni iyara (Layara nlo Lucet ni ẹrọ iširo eti awọsanma ti o nlo WebAssembly fun awọn oluṣakoso ti ṣe ifilọlẹ lori ibeere kọọkan). Gẹgẹbi apakan ti iṣẹ akanṣe apapọ, olupilẹṣẹ Lucet ti gbero lati yipada lati lo Wasmtime gẹgẹbi ipilẹ;
  • WAMR (WebAssembly Micro Runtime) jẹ asiko asiko miiran fun ṣiṣe WebAssembly, ni ipilẹṣẹ nipasẹ Intel fun lilo ninu Intanẹẹti ti awọn ẹrọ Ohun. WAMR jẹ iṣapeye fun lilo awọn orisun to kere ati pe o le ṣee lo lori awọn ẹrọ pẹlu iye Ramu kekere kan. Ise agbese na pẹlu onitumọ ati ẹrọ foju fun ṣiṣe WebAssembly bytecode, API kan (apapọ ti Libc) ati awọn irinṣẹ fun iṣakoso ohun elo ti o lagbara;
  • Kireni gbe soke - olupilẹṣẹ koodu kan ti o tumọ aṣoju agbedemeji ominira ti awọn ile ayaworan ohun elo sinu koodu ẹrọ ṣiṣe iṣapeye fun awọn iru ẹrọ ohun elo kan pato. Cranelift ṣe atilẹyin parallelization ti akopọ iṣẹ fun iran abajade iyara pupọ, eyiti o fun laaye laaye lati lo lati ṣẹda awọn olupilẹṣẹ JIT (JIT ti o da lori Cranelift ni a lo ninu ẹrọ foju Wasmtime);
  • WASI wọpọ - imuse lọtọ ti WASI (Interface System WebAssembly) API fun siseto ibaraenisepo pẹlu ẹrọ ṣiṣe;
  • eru-wasi - module kan fun oluṣakoso package ẹru ti o ṣe aṣẹ kan fun ikojọpọ koodu Rust sinu WebAssembly bytecode nipa lilo wiwo WASI fun lilo WebAssembly ni ita ẹrọ aṣawakiri;
  • wat и afarawe - parsers fun sisọ ọrọ (WAT, WAST) ati awọn aṣoju alakomeji ti WebAssembly bytecode.

Lati tun ṣe, WebAssembly jẹ pupọ bi Asm.js, ṣugbọn yatọ ni pe o jẹ ọna kika alakomeji ti ko ni asopọ si JavaScript ati gba laaye koodu agbedemeji ipele kekere ti o ṣajọ lati awọn ede siseto lọpọlọpọ lati ṣiṣẹ ni ẹrọ aṣawakiri. WebAssembly ko nilo agbo-idọti nitori pe o nlo iṣakoso iranti fojuhan. Nipa lilo JIT fun WebAssembly, o le ṣaṣeyọri awọn ipele iṣẹ ṣiṣe ti o sunmọ koodu abinibi. Lara awọn ibi-afẹde akọkọ ti WebAssembly ni idaniloju gbigbe, ihuwasi asọtẹlẹ ati ipaniyan koodu kanna lori awọn iru ẹrọ oriṣiriṣi.

orisun: opennet.ru

Fi ọrọìwòye kun