WASI een Mozilla-project om WebAssembly buiten de browser te gebruiken

WASI een Mozilla-project om WebAssembly buiten de browser te gebruiken

Mozilla-ontwikkelaars introduceerden het WASI-project (WebAssembly System Interface), dat werkt aan het definiëren van software-interfaces die kunnen worden gebruikt om de interactie van applicaties die in WebAssembly-indeling worden geleverd met het besturingssysteem te orkestreren.

Het doel van het project is om een ​​API te bieden die het gebruik van WebAssembly uitbreidt en waarmee u programma's kunt maken regelmatig gebaseerd in deze technologie die buiten de browser draaien, zijn overdraagbaar naar elk platform en bieden een hoog beveiligingsniveau.

Wat is WASI?

WASI geeft de WebAssembly-omgeving toegang tot de functies van het besturingssysteemzoals bestanden, bestandssysteem, netwerksockets, timers en generatoren van willekeurige getallen.

WASI API is in eerste instantie ontwikkeld als niet-browser gebonden en onafhankelijk van de JavaScript/Web API, maar terwijl een adequaat niveau van systeemisolatie wordt geboden principal (applicaties die in een sandbox draaien) en stelt u in staat om expliciet de autoriteit te definiëren die aan de applicatie wordt verleend in de stijl van CloudABI en Capsicum .

WAS IK maakt gebruik van een beveiligingsmodel op basis van rechtenbeheer, waarbinnen een programma alleen geautoriseerde acties kan uitvoeren.

Net zoals WebAssembly de toegang beperkt op het niveau van importfuncties, controleert WASI de toegang tot systeemmogelijkheden.

Bestanden, mappen, sockets en andere bronnen zijn gekoppeld aan een speciaal type bestandsdescriptors (capaciteit) en de toepassing moet machtigingen hebben om een ​​actie op elk van de bronnen uit te voeren.

Machtigingen worden hiërarchisch afgehandeld, dat wil zeggen dat de toegang tot de map automatisch wordt geopend en toegang tot alle bestanden erin.

Aangezien WebAssembly is een platformonafhankelijke versie van assembler, het gebruik van JIT kan een prestatieniveau bereiken dat in de buurt komt van native code, met behoud van de mogelijkheid om op verschillende hardwareplatforms en besturingssystemen te draaien.

Het project voorziet momenteel de wasi-core module van de implementatie van de basis POSIX API (bestanden, sockets, enz.), die momenteel geen ondersteuning biedt voor sloten en asynchrone I/O.

In de toekomst het is de bedoeling om modules te maken met een API-implementatie voor het uitvoeren van cryptografische bewerkingen, werkend met 3D-graphics, interactie met sensoren, bewerkingen met processen (de fork-oproep wordt nog niet ondersteund) en multimediagegevens verwerken.

Component prototypen

Wasmtime is een runtime die verantwoordelijk is voor het uitvoeren van applicaties op basis van WebAssembly met WASI-extensies zoals gewone stand-alone applicaties.

Se ondersteunt het starten van WebAssembly bytecode met behulp van een speciaal opdrachtregelprogramma en het ontwerp van kant-en-klare uitvoerbare bestanden (wasmtime is als bibliotheek in de applicatie ingebouwd).

Om het juiste prestatieniveau te bereiken, wordt een JIT-compiler gebruikt die is gebaseerd op de hoogtecodegenerator.

Lucet is een andere runtime-versie van het Fastly-project (de code wordt vandaag of morgen gepubliceerd).

WASI-SDK: tools voor het compileren van C / C ++ - applicaties in webmount - formaat met behulp van Clang 8.0 .

Een assemblagedoel met WASI-ondersteuning voor de Rust-taal, waarmee u Rust-code in een WebAssembly kunt compileren.

wasi-sysroot is een implementatie van de standaard libc-bibliotheek voor WASI, gebaseerd op Musl-code, evenals een runtime-laag om de functies van de bibliotheek te vertalen naar systeemaanroepen van verschillende besturingssystemen om de mogelijkheid te bieden een WASI-toepassing op verschillende besturingssystemen uit te voeren.

Het project ontwikkelt ook de polyfill JavaScript-bibliotheek met een WASI-implementatie voor het uitvoeren van applicaties in de browser., waarmee het toegangscontrolemodel "mogelijkheden" kan worden toegepast op code die in de browser wordt uitgevoerd.

Van de plannen wordt de creatie genoemd van een op WASI gebaseerd modulesysteem voor integratie in applicaties van geïsoleerde plug-ins met extra functionaliteit in het WebAssembly-formaat.

Een van de belangrijkste taken van WebAssembly is het waarborgen van overdraagbaarheid, voorspelbaarheid van gedrag en identiteit van code-uitvoering op verschillende platforms.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.