Een voorlopige versie van de WebAssembly 2.0 standaard is beschikbaar.

Het W3C-consortium heeft een conceptversie van de nieuwe specificatie gepubliceerd, die de tussenliggende code van WebAssembly 2.0 en de bijbehorende API standaardiseert, waarmee hoge prestaties kunnen worden geleverd voor applicaties die overdraagbaar zijn tussen browsers en hardwareplatforms. WebAssembly biedt een browser-onafhankelijke universele low-level tussenliggende code voor de uitvoering van applicaties, gecompileerd uit verschillende programmeertalen. Dankzij JIT voor WebAssembly kan men prestaties bereiken die dicht bij die van native code liggen.

De technologie van WebAssembly kan worden toegepast om in de browser taken uit te voeren die hoge prestaties vereisen, zoals videocodec, audioprocessing, grafische manipulatie en 3D, game-ontwikkeling, cryptografische operaties en wiskundige berekeningen door de uitvoering van code, geschreven in compileerbare talen zoals C/C++, in de browser te organiseren.

Onder de belangrijkste taken van WebAssembly valt het waarborgen van overdraagbaarheid, voorspelbaarheid van gedrag en de identiteit van de uitvoering van code op verschillende platforms. Recentelijk wordt WebAssembly ook gepromoot als een universeel platform voor veilige uitvoering van code in elke infrastructuur, besturingssysteem en apparaat, zonder zich te beperken tot browsers.

W3C heeft drie voorlopige specificaties voor WebAssembly 2.0 gepubliceerd:

  • WebAssembly Core — beschrijft de low-level virtuele machine voor het uitvoeren van de tussenliggende WebAssembly-code. De met WebAssembly verbonden bronnen worden geleverd in het .wasm-formaat, dat vergelijkbaar is met .class-bestanden in Java en statische gegevens en code-segmenten bevat die met deze gegevens werken.
  • WebAssembly JavaScript Interface — biedt een API voor integratie met JavaScript. Hiermee kunnen waarden worden opgehaald en parameters aan WebAssembly-functies worden doorgegeven. De uitvoering van WebAssembly volgt het beveiligingsmodel van JavaScript en alle interacties met het onderliggende systeem worden op een vergelijkbare manier uitgevoerd als de uitvoering van JavaScript-code.
  • WebAssembly Web API — definieert een programmeerinterface op basis van het Promise-mechanisme voor het aanvragen en uitvoeren van .wasm-bronnen. Het formaat van WebAssembly-bronnen is geoptimaliseerd voor een snelle uitvoering, zonder te wachten op de volledige bestandslading, wat de responsiviteit van webapplicaties verbetert.

Belangrijkste wijzigingen in WebAssembly 2.0 in vergelijking met de eerste versie van de standaard:

  • Ondersteuning voor het vector type v128 en de bijbehorende vector instructies, waarmee gelijktijdige bewerkingen op meerdere numerieke waarden kunnen worden uitgevoerd (SIMD, single instruction multiple data).
  • De mogelijkheid om veranderlijke (mutable) globale variabelen te importeren en exporteren, waarmee globale binding voor waarden zoals stack pointers in C++ kan worden toegepast.
  • Nieuwe instructies voor het omzetten van float naar int, die in plaats van een uitzondering te genereren bij een overflow van het resultaat, de minimaal of maximaal mogelijke waarde teruggeven (nodig voor SIMD).
  • Instructies voor het uitbreiden van het teken van gehele getallen (verhogen van het aantal cijfers met behoud van teken en waarde).
  • Ondersteuning voor het retourneren van meerdere waarden door blokken en functies (bovenop het doorgeven van meerdere argumenten aan functies).
  • Implementatie van JavaScript-functies BigInt64Array en BigUint64Array voor conversie tussen het JavaScript-type BigInt en de representatie van 64-bits gehele getallen in WebAssembly.
  • Ondersteuning voor referentietypen (funcref en externref) en de bijbehorende instructies (select, ref.null, ref.func en ref.is_null).
  • Instructies memory.copy, memory.fill, memory.init en data.drop voor het kopiĆ«ren van gegevens tussen geheugengebieden en het opschonen van geheugensectoren.
  • Instructies voor directe toegang en wijziging van tabellen (table.set, table.get, table.size, table.grow). Mogelijkheid om meerdere tabellen in ƩƩn module te creĆ«ren, te importeren en te exporteren. Functies voor het kopiĆ«ren/vullen van tabellen in batchmodus (table.copy, table.init en elem.drop).

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster