Mozilla, Fastly, Intel un Red Hat reklamē WebAssembly kā platformu universālai lietošanai

Mozilla, Fastly, Intel un Red Hat vienoti savus centienus izstrādāt tehnoloģijas, kas palīdz padarīt WebAssembly par universālu platformu drošai koda izpildei jebkurā infrastruktūrā, operētājsistēmā vai ierīcē. Ir izveidota kopiena kopīgai izpildlaika un kompilatoru izstrādei, kas ļauj izmantot WebAssembly ne tikai tīmekļa pārlūkprogrammās Bytecode Alliance.

Lai izveidotu pārnēsājamas programmas, kas tiek piegādātas WebAssembly formātā un kuras var izpildīt ārpus pārlūkprogrammas, mēs iesakām izmantot API BIJU ES (WebAssembly System Interface), kas nodrošina programmatūras saskarnes tiešai mijiedarbībai ar operētājsistēmu (POSIX API darbam ar failiem, ligzdām utt.). Lietojumprogrammu, kurās izmanto WASI, izpildes modeļa atšķirīgā iezīme ir tā, ka tās darbojas smilškastes vidē, lai izolētu no galvenās sistēmas, un izmanto drošības mehānismu, kura pamatā ir spēju pārvaldība darbībām ar katru resursu (faili, direktoriji, ligzdas, sistēmas izsaukumi). u.c.) lietojumprogrammai ir jāpiešķir atbilstošas ​​atļaujas (tiek nodrošināta tikai piekļuve deklarētajai funkcionalitātei).

Viens no mērķi Izveidotā alianse ir risinājums mūsdienu moduļu lietojumprogrammu izplatīšanai ar lielu skaitu atkarību. Šādās lietojumprogrammās katra atkarība var būt potenciāls ievainojamību vai uzbrukumu avots. Kontroles pārņemšana pār atkarību ļauj iegūt kontroli pār visām ar to saistītajām lietojumprogrammām. Uzticēšanās lietojumprogrammai automātiski nozīmē uzticēšanos visām atkarībām, taču atkarības bieži izstrādā un uztur trešo pušu komandas, kuru darbības nevar kontrolēt. Bytecode Alliance dalībnieki plāno nodrošināt holistisku risinājumu drošai WebAssembly lietojumprogrammu izpildei, kas pēc savas būtības nav uzticamas.

Aizsardzībai tiek piedāvāts izmantot nanoprocesu jēdzienu, kurā katrs atkarības modulis tiek atdalīts atsevišķi izolētā WebAssembly modulī, kura jaudas ir iestatītas tikai attiecībā pret šo moduli (piemēram, virkņu apstrādes bibliotēka nedarbosies var atvērt tīkla ligzdu vai failu). Atšķirībā no procesu atdalīšanas, WebAssembly apstrādātāji ir viegli un gandrīz neprasa papildu resursus - mijiedarbība starp apstrādātājiem nav daudz lēnāka nekā parasto funkciju izsaukšana. Atdalīšanu var veikt ne tikai atsevišķu moduļu līmenī, bet arī moduļu grupu līmenī, kurām, piemēram, jādarbojas ar kopējām atmiņas zonām

Pieprasītās pilnvaras var noteikt gan pašu atkarību līmenī, gan deleģēt atkarībām ķēdē ar vecāku moduļiem (WASI resursi ir saistīti ar īpašu faila deskriptora veidu - iespēju). Piemēram, modulim var deleģēt iespēju piekļūt noteiktam direktorijam un sistēmas izsaukumiem, un, ja moduļa izstrādes infrastruktūra ir apdraudēta vai tiek konstatēta ievainojamība, uzbrukuma laikā piekļuve tiks ierobežota tikai šiem resursiem. Moduļu veidotāju resursu deklarācijas var liecināt par aizdomīgām darbībām, piemēram, kad teksta apstrādes modulis pieprasa atļauju atvērt tīkla savienojumu. Sākotnēji iestatītās atļaujas tiek pārbaudītas, un, ja tās mainās, atkarības ielāde tiek noraidīta, līdz tiek atjaunināts lokālā moduļa paraksts.

Kopīgai attīstībai Bytecode Alliance paspārnē tulkots vairākas saistītas ar WebAssembly projektiem, ko iepriekš atsevišķi izstrādājuši alianses dibinātāji:

  • bija laiks — izpildlaiks WebAssembly lietojumprogrammu palaišanai ar WASI paplašinājumiem kā parastas atsevišķas lietojumprogrammas. Tā atbalsta gan WebAssembly baitkoda palaišanu, izmantojot īpašu komandrindas utilītu, gan gatavu izpildāmo failu saistīšanu (wasmtime ir iebūvēts lietojumprogrammā kā bibliotēka). Wasmtime ir elastīga moduļu struktūra, kas ļauj mērogot izpildlaiku dažādām lietojumprogrammām, piemēram, varat izveidot attīrītu versiju ierīcēm ar ierobežotiem resursiem;
  • Lucet — kompilators un izpildlaiks programmu izpildei WebAssembly formātā. Īpatnējs iezīme Lucet ir pilnvērtīgas paredzamās kompilācijas (AOT, pirms laika) izmantošana JIT vietā mašīnkodā, kas piemērots tiešai izpildei. Projektu izstrādāja Fastly, un tas ir optimizēts, lai patērētu minimālus resursus un ļoti ātri palaistu jaunas instances (Fastly izmanto Lucet mākoņa malas skaitļošanas dzinējā, kas izmanto WebAssembly apstrādātājiem, kas tiek palaisti pēc katra pieprasījuma). Kopīgā projekta ietvaros plānots Lucet kompilatoru pārveidot, lai par pamatu izmantotu Wasmtime;
  • WAMR (WebAssembly Micro Runtime) ir vēl viens WebAssembly izpildes laiks, ko sākotnēji izstrādāja Intel izmantošanai lietu interneta ierīcēs. WAMR ir optimizēts minimālam resursu patēriņam, un to var izmantot ierīcēs ar nelielu operatīvās atmiņas apjomu. Projektā ietilpst tulks un virtuālā mašīna WebAssembly baitkoda izpildei, API (Libc apakškopa) un rīki dinamiskai lietojumprogrammu pārvaldībai;
  • Celtņa pacēlājs — koda ģenerators, kas no aparatūras arhitektūras neatkarīgu starpposma attēlojumu pārvērš izpildāmā mašīnkodā, kas optimizēts konkrētām aparatūras platformām. Cranelift atbalsta funkciju kompilācijas paralēlizāciju ļoti ātrai rezultātu ģenerēšanai, kas ļauj to izmantot JIT kompilatoru izveidei (Wasmtime virtuālajā mašīnā tiek izmantots uz Cranelift balstīts JIT);
  • WASI izplatīta — atsevišķa WASI (WebAssembly System Interface) API ieviešana mijiedarbības ar operētājsistēmu organizēšanai;
  • kravas-wasi — Cargo pakotņu pārvaldnieka modulis, kas ievieš komandu Rust koda kompilēšanai WebAssembly baitkodā, izmantojot WASI interfeisu WebAssembly lietošanai ārpus pārlūkprogrammas;
  • wat и wasmparser — parsētāji teksta (WAT, WAST) un WebAssembly baitkoda bināro attēlojumu parsēšanai.

Rezumējot, WebAssembly ir ļoti līdzīgs Asm.js, bet atšķirīgs jo tas ir binārs formāts, kas nav saistīts ar JavaScript un ļauj pārlūkprogrammā izpildīt zema līmeņa starpposma kodu, kas kompilēts no dažādām programmēšanas valodām. WebAssembly nav nepieciešams atkritumu savācējs, jo tas izmanto skaidru atmiņas pārvaldību. Izmantojot JIT for WebAssembly, varat sasniegt veiktspējas līmeni, kas ir tuvu vietējam kodam. Viens no galvenajiem WebAssembly mērķiem ir nodrošināt pārnesamību, paredzamu uzvedību un identisku kodu izpildi dažādās platformās.

Avots: opennet.ru

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster