Mozilla, Fastly, Intel og Red Hat kynna WebAssembly sem vettvang fyrir alhliða notkun

Mozilla, Fastly, Intel og Red Hat sameinuð viðleitni þess við að þróa tækni sem hjálpar til við að gera WebAssembly að alhliða vettvangi fyrir örugga keyrslu kóða yfir hvaða innviði, stýrikerfi eða tæki sem er. Samfélag hefur verið stofnað fyrir sameiginlega þróun á keyrslutíma og þýðendum sem leyfa notkun WebAssembly ekki aðeins í vöfrum Bytecode Alliance.

Til að búa til færanleg forrit afhent á WebAssembly sniði sem hægt er að keyra utan vafrans, mælum við með því að nota API VAR ÉG (WebAssembly System Interface), sem veitir hugbúnaðarviðmót fyrir bein samskipti við stýrikerfið (POSIX API til að vinna með skrár, fals osfrv.). Einkennandi eiginleiki framkvæmdarlíkans forrita sem nota WASI er að þau keyra í sandkassaumhverfi til einangrunar frá aðalkerfinu og nota öryggiskerfi sem byggir á getustjórnun fyrir aðgerðir með hverri auðlindinni (skrár, möppur, fals, kerfiskall o.s.frv.) Forritið verður að fá viðeigandi heimildir (aðeins aðgangur að uppgefinni virkni er veittur).

Einn af markmið Hið stofnaða bandalag er lausn á vandamálinu við að dreifa nútíma einingaforritum með miklum fjölda ósjálfstæðra. Í slíkum forritum getur sérhver ósjálfstæði verið hugsanleg uppspretta veikleika eða árása. Að taka stjórn á ósjálfstæði gerir þér kleift að ná stjórn á öllum forritum sem tengjast því. Traust á forritinu felur sjálfkrafa í sér traust á öllum ósjálfstæðum, en ósjálfstæði eru oft þróuð og viðhaldið af teymum þriðja aðila sem ekki er hægt að stjórna starfsemi þeirra. Meðlimir Bytecode Alliance ætla að bjóða upp á heildræna lausn fyrir örugga framkvæmd WebAssembly forrita sem eru í eðli sínu ekki áreiðanleg.

Til verndar er lagt til að nota hugtakið nanóferli, þar sem hver ósjálfstæðiseining er aðskilin í séreinangraða WebAssembly einingu, þar sem kraftarnir eru aðeins stilltir í tengslum við þessa einingu (til dæmis mun bókasafn fyrir vinnslu strengja ekki geta opnað nettengi eða skrá). Ólíkt ferli aðskilnaði eru WebAssembly meðhöndlarar léttir og þurfa nánast engin viðbótarúrræði - samskipti milli meðhöndlunaraðila eru ekki mikið hægari en að kalla á venjulegar aðgerðir. Aðskilnaður er ekki aðeins hægt að gera á stigi einstakra eininga, heldur einnig á stigi einingahópa sem þurfa til dæmis að vinna með sameiginlegum minnissvæðum

Umbeðin vald er hægt að ákvarða bæði á stigi ósjálfstæðanna sjálfra og framselt til ósjálfstæðis meðfram keðjunni með yfireiningum (tilföng í WASI eru tengd sérstakri gerð skráarlýsingar - getu). Til dæmis er hægt að framselja einingu möguleikann á að fá aðgang að tiltekinni möppu og kerfissímtöl, og ef þróunarinnviði einingarinnar er í hættu eða varnarleysi er auðkennt, meðan á árás stendur, takmarkast aðgangur aðeins við þessar auðlindir. Tilfangayfirlýsingar frá höfundum eininga geta verið vísbending um grunsamlega virkni, svo sem þegar textavinnslueining biður um leyfi til að opna nettengingu. Upphaflega settar heimildir eru athugaðar og ef þær breytast er hleðslu ósjálfstæðis hafnað þar til undirskrift staðareiningarinnar er uppfærð.

Fyrir sameiginlega þróun undir væng Bytecode Alliance þýtt nokkrir tengdir WebAssembly verkefni, áður sérstaklega þróað af stofnfélögum bandalagsins:

  • var tíma — keyrslutími til að keyra WebAssembly forrit með WASI viðbótum sem venjuleg sjálfstæð forrit. Það styður bæði að ræsa WebAssembly bækakóða með því að nota sérstakt skipanalínuforrit og tengja tilbúnar keyrsluskrár (wasmtime er innbyggt í forritið sem bókasafn). Wasmtime er með sveigjanlega einingauppbyggingu sem gerir þér kleift að skala keyrslutímann fyrir ýmis forrit, til dæmis geturðu búið til niðurrifna útgáfu fyrir tæki með takmarkað fjármagn;
  • Það skín — þýðanda og keyrslutími til að keyra forrit á WebAssembly sniði. Sérkennilegur lögun Lucet er notkun á fullri væntanlegri samantekt (AOT, fyrirfram) í stað JIT í vélkóða sem hentar fyrir beina framkvæmd. Verkefnið var þróað af Fastly og er fínstillt til að neyta lágmarks fjármagns og setja ný tilvik mjög fljótt af stað (Fastly notar Lucet í skýjabrún tölvuvél sem notar WebAssembly fyrir meðhöndlara sem hleypt er af stokkunum við hverja beiðni). Sem hluti af samstarfsverkefninu er fyrirhugað að breyta Lucet þýðandanum til að nota Wasmtime sem grunn;
  • WAMR (WebAssembly Micro Runtime) er annar keyrslutími til að framkvæma WebAssembly, upphaflega þróað af Intel til notkunar í Internet of Things tæki. WAMR er fínstillt fyrir lágmarks auðlindanotkun og hægt er að nota það á tækjum með lítið magn af vinnsluminni. Verkefnið felur í sér túlk og sýndarvél til að framkvæma WebAssembly bætikóða, API (undirmengi af Libc) og verkfæri fyrir kraftmikla forritastjórnun;
  • Kranalyfta — kóðarafall sem þýðir milliframsetningu óháð vélbúnaðararkitektúr yfir í keyranlegan vélkóða sem er fínstilltur fyrir tiltekna vélbúnaðarvettvang. Cranelift styður samhliða samsetningu aðgerða til að búa til mjög hratt niðurstöður, sem gerir það kleift að nota það til að búa til JIT þýðendur (Cranelift-undirstaða JIT er notað í Wasmtime sýndarvélinni);
  • WASI algengt — sérstaka útfærslu á WASI (WebAssembly System Interface) API til að skipuleggja samskipti við stýrikerfið;
  • farm-wasi — eining fyrir farmpakkastjórann sem útfærir skipun til að setja saman Ryðkóða inn í WebAssembly bækikóða með því að nota WASI viðmótið til að nota WebAssembly utan vafrans;
  • Wat и wasmparser — þátttakendur fyrir þáttun texta (WAT, WAST) og tvöfalda framsetningu WebAssembly bækakóða.

Til að rifja upp, WebAssembly er mjög svipað Asm.js, en öðruvísi að því leyti að það er tvíundarsnið sem er ekki bundið við JavaScript og gerir kleift að keyra lágstigs millikóða sem tekinn er saman úr ýmsum forritunarmálum í vafranum. WebAssembly krefst ekki sorphirðu vegna þess að það notar skýra minnisstjórnun. Með því að nota JIT fyrir WebAssembly geturðu náð frammistöðustigi nálægt innfæddum kóða. Meðal meginmarkmiða WebAssembly er að tryggja færanleika, fyrirsjáanlega hegðun og eins keyrslu kóða á mismunandi kerfum.

Heimild: opennet.ru

Bæta við athugasemd