W3C Consortium over het verkrijgen van de status van aanbevolen standaard voor WebAssembly-technologie. WebAssembly biedt een browser-onafhankelijke universele laag niveau tussenliggende code voor het uitvoeren van toepassingen, gecompileerd vanuit verschillende programmeertalen. WebAssembly wordt gepositioneerd als een veelbelovende en tussen browsers overdraagbare technologie voor het creƫren van krachtige webtoepassingen. WebAssembly kan worden gebruikt voor taken die hoge prestaties vereisen, zoals video-encoding, audioprocessing, grafische manipulatie en 3D, game-ontwikkeling, cryptografische operaties, wiskundige berekeningen en het creƫren van draagbare implementaties van programmeertalen.
WebAssembly lijkt veel op Asm.js, maar verschilt doordat het een binaire indeling is die niet afhankelijk is van JavaScript. In WebAssembly is het gebruik van een garbage collector niet nodig, aangezien er expliciete geheugensbesturing wordt toegepast. Door het gebruik van JIT voor WebAssembly kan een prestatieniveau worden bereikt dat dicht bij native code ligt. Belangrijke taken van WebAssembly zijn onder andere het waarborgen van overdraagbaarheid, de voorspelbaarheid van gedrag en de identiteit van code-uitvoering op verschillende platforms. Onlangs wordt WebAssembly ook als een universeel platform voor het veilig uitvoeren van code op elke infrastructuur, besturingssystemen en apparaten, zonder beperkt te zijn tot browsers.
W3C heeft drie specificaties genormeerd die verband houden met WebAssembly:
- beschrijft een laag niveau virtuele machine voor het uitvoeren van de tussenliggende code van WebAssembly. De met WebAssembly gerelateerde bronnen worden geleverd in het formaat '.wasm', dat lijkt op het '.class' bestand in Java en statische gegevens en code-segmenten bevat voor het werken met deze gegevens.
- definieert een programmatische interface op basis van een belofte-mechanisme voor het aanvragen en uitvoeren van '.wasm' bronnen. Het formaat van WebAssembly-resources is geoptimaliseerd voor uitvoering zonder te wachten op volledige bestandscargering, wat de reactietijd van webtoepassingen verhoogt.
- ā biedt een API voor integratie met JavaScript. Hiermee kunnen waarden worden opgehaald en parameters worden doorgegeven aan WebAssembly-functies. De uitvoering van WebAssembly voldoet aan het beveiligingsmodel van JavaScript en alle interactie met het besturingssysteem gebeurt op dezelfde manier als bij het uitvoeren van JavaScript-code.
In de toekomst zullen specificaties worden voorbereid voor dergelijke mogelijkheden van WebAssembly, zoals:
- Meerdere threads met gedeeld geheugen en atomische toegang tot geheugen;
- Vectorbewerkingen op basis van SIMD, waarmee de uitvoering van lussen kan worden parallel gesplitst;
- Referentietypen voor directe verwijzingen naar objecten vanuit WebAssembly-code;
- De mogelijkheid om functies aan te roepen zonder extra stackruimte te gebruiken;
- Integratie met ECMAScript-modules - de mogelijkheid om WebAssembly-code vanuit JavaScript als modules te laden, in overeenstemming met de ECMAScript 6-specificatie;
- Werknmodus met een garbage collector;
- Debugginginterfaces;
- (WebAssembly System Interface) - API voor directe interactie met het besturingssysteem (POSIX API voor werken met bestanden, sockets, enz.).
Bron: opennet.ru
