WASI un proiect Mozilla pentru a utiliza WebAssembly în afara browserului

WASI un proiect Mozilla pentru a utiliza WebAssembly în afara browserului

Dezvoltatorii Mozilla au prezentat proiectul WASI (WebAssembly System Interface), care lucrează la definirea interfețelor software care pot fi utilizate pentru a organiza interacțiunea aplicațiilor livrate în format WebAssembly cu sistemul de operare.

Scopul proiectului este de a oferi un API care extinde utilizarea WebAssembly și vă permite să creați programe pe bază obișnuită în această tehnologie care rulează în afara browserului, sunt portabile pe orice platformă și demonstrează un nivel ridicat de securitate.

Ce este WASI?

WASI permite mediului WebAssembly să acceseze funcțiile furnizate de sistemul de operare, cum ar fi fișiere, sistem de fișiere, prize de rețea, temporizatoare și generatoare de numere aleatorii.

WASI API este dezvoltat inițial ca independent de browser și independent. a JavaScript/Web API, dar oferind în același timp un nivel adecvat de izolare a sistemului main (aplicațiile rulează într-un sandbox) și vă permite să definiți în mod explicit autoritatea acordată aplicației în stilul CloudABI și Capsicum.

AM FOST utilizează un model de securitate bazat pe managementul permisiunilor, în cadrul căruia un program poate efectua numai în mod deliberat acțiuni autorizate.

Similar cu modul în care WebAssembly limitează accesul la nivelul funcției de import, WASI controlează accesul la capabilitățile sistemului.

Fișierele, directoarele, socketurile și alte resurse sunt asociate cu un tip special de descriptori de fișiere (capacitate) și aplicația trebuie să aibă permisiuni pentru a efectua o acțiune pe fiecare dintre resurse.

Permisiunile sunt gestionate ierarhic, adică accesul la director este deschis automat și accesul la toate fișierele din acesta.

dat fiind faptul că WebAssembly este o versiune independentă de platformă a limbajului de asamblare, folosind JIT poate atinge un nivel de performanță apropiat de codul nativ, menținând în același timp capacitatea de a rula pe diverse platforme hardware și sisteme de operare.

În prezent, proiectul oferă modulului wasi-core implementarea API-ului POSIX de bază (fișiere, socketuri etc.), care în prezent nu are suport pentru blocarea și I/O asincron.

În viitor, este planificat să se creeze module cu o implementare API pentru a efectua operațiuni criptografice, a lucra cu grafică 3D, interacționează cu senzori, operațiuni cu procese (apelul de furcă nu este încă acceptat) și procesează date multimedia.

Prototipuri componente

Wasmtime este un runtime care este responsabil pentru executarea aplicațiilor bazate pe WebAssembly. cu extensii WASI ca aplicații autonome obișnuite.

Se acceptă lansarea bytecode WebAssembly cu ajutorul unui utilitar special de linie de comandă și proiectarea fișierelor executabile gata de utilizare (wasmtime este încorporat în aplicație ca bibliotecă).

Pentru a atinge nivelul adecvat de performanță, se folosește un compilator JIT bazat pe generatorul de cod de ridicare.

Lucet este o altă versiune de rulare a proiectului Fastly (codul este planificat să fie publicat astăzi sau mâine).

WASI SDK- Instrumente pentru construirea de aplicații C/C++ în format de asamblare web folosind Clang 8.0.

O țintă de asamblare suportată de WASI pentru limbajul Rust, permițându-vă să compilați codul Rust într-un WebAssembly.

Wasi-sysroot este o implementare a bibliotecii standard libc pentru WASI, bazat pe codul Musl, precum și un strat de rulare pentru a traduce funcțiile furnizate de bibliotecă în apeluri de sistem ale diferitelor sisteme de operare pentru a obține posibilitatea de a rula o aplicație WASI pe diferite sisteme de operare.

Proiectul dezvoltă, de asemenea, biblioteca JavaScript polyfill cu o implementare WASI pentru a rula aplicații în browser, care permite ca modelul de control al accesului „capacități” să fie aplicat codului executat în browser.

Dintre planuri, se menționează crearea unui sistem de module bazat pe WASI pentru integrarea în aplicații a pluginurilor izolate cu funcționalitate suplimentară furnizată în format WebAssembly.

Una dintre sarcinile principale ale WebAssembly este de a asigura portabilitatea, predictibilitatea comportamentului și identitatea execuției codului pe diferite platforme.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.