Concept WebAssembly 2.0-standaard vrijgegeven 

De W3C onthuld Onlangs via een bericht een concept van een nieuwe specificatie dat standaardiseert de voorbereidingscode van WebAssembly 2.0 en bijbehorende API om de creatie van krachtige applicaties mogelijk te maken die draagbaar zijn tussen browsers en hardwareplatforms.

Voor degenen die nieuw zijn bij WebAssembly, moet u weten dat: dit biedt een generieke middleware, laag niveau en browser-onafhankelijk, om gecompileerde applicaties uit te voeren uit verschillende programmeertalen. Door JIT voor WebAssembly te gebruiken, kunt u een prestatieniveau bereiken dat dicht bij native code ligt.

Over WebAssembly

WebAssembly kan worden gebruikt om krachtige taken in de browser uit te voeren, zoals videocodering, audioverwerking, 3D- en grafische manipulatie, game-ontwikkeling, cryptografische bewerkingen en wiskundige berekeningen, door code uit te voeren die is geschreven in gecompileerde talen zoals C/C++.

Een van de belangrijkste taken van WebAssembly is het bieden van portabiliteit, voorspelbaarheid van gedrag en identiteit van code-uitvoering op verschillende platforms. Onlangs is WebAssembly ook gepromoot als een universeel platform voor veilige code-uitvoering op elke infrastructuur, besturingssysteem en apparaat, niet beperkt tot browsers.

Over het WebAssembly 2.0-concept

Aan de kant van de wijzigingen die zijn aangebracht sinds WebAssembly zijn de voltooide voorstellen voor WebAssembly 2.0 een SIMD met vaste breedte, massageheugenbewerkingen, referentietypen, JavaScript BigInt-ondersteuning voor WebAssembly i64, ondersteuning voor meerdere retourwaarden en import/export van veranderlijke globale variabelen.

Het W3C heeft drie conceptspecificaties voor WebAssembly 2.0 gepubliceerd:

  1. Web Assemblage Kern: beschrijft een virtuele machine op laag niveau voor het uitvoeren van intermediaire WebAssembly-code. Bronnen met betrekking tot WebAssembly hebben een ".wasm"-indeling, vergelijkbaar met Java ".class"-bestanden, die statische gegevens en codesegmenten bevatten om met die gegevens te werken.
  2. WebAssembly JavaScript-interface: biedt een API voor integratie met JavaScript. Hiermee kunt u waarden ophalen en parameters doorgeven aan WebAssembly-functies. De uitvoering van WebAssembly volgt het JavaScript-beveiligingsmodel en alle interactie met de host wordt op dezelfde manier uitgevoerd als het uitvoeren van JavaScript-code.
  3. WebAssembly-web-API: definieert een API op basis van het Promise-mechanisme voor het aanvragen en uitvoeren van ".wasm"-bronnen. Het WebAssembly-bronformaat is geoptimaliseerd om de uitvoering te starten zonder te wachten tot het bestand volledig is gedownload, wat de responsiviteit van webapplicaties verbetert.

Verschillen tussen WebAssembly en WebAssembly 2.0

Ook moet worden opgemerkt dat er enkele belangrijke wijzigingen zijn in WebAssembly 2.0 ten opzichte van de eerste versie van de standaard:

  • v128 vectortype ondersteuning en gerelateerde vectorinstructies waarmee u bewerkingen op meerdere numerieke waarden parallel kunt uitvoeren (SIMD, enkele instructie, meerdere gegevens).
  • Mogelijkheid om veranderlijke globale variabelen te importeren en exporteren, waarmee globale binding voor waarden als stackpointers in C++ mogelijk is.
  • Nieuwe instructies om float naar int . te converteren, die in plaats van een uitzondering op resultaatoverloop te genereren, de minimaal of maximaal mogelijke waarde retourneert (vereist voor SIMD).
  • Instructies voor het uitbreiden van het teken van gehele getallen (verhoog de bitdiepte van een getal met behoud van het teken en de waarde).
  • Ondersteuning voor het retourneren van meerdere waarden door blokken en functies (evenals het doorgeven van meerdere parameters aan functies).
  • Implementeer de JavaScript-functies BigInt64Array en BigUint64Array om te converteren tussen het JavaScript-type BigInt en de WebAssembly-representatie van 64-bits gehele getallen.
  • Ondersteuning voor referentietypes (funcref en externref) en de bijbehorende instructies (select, ref.null, ref.func en ref.is_null).
  • memory.copy, memory.fill, memory.init en data.drop instructies om gegevens tussen geheugengebieden te kopiëren en geheugengebieden te wissen.
  • Instructies voor directe toegang en wijziging van tabellen (tafel.set, tafel.get, tafel.maat, tafel.grow).
  • Mogelijkheid om meerdere tabellen in één module te maken, importeren en exporteren. Functies om tabellen te kopiëren/vullen in batchmodus (table.copy, table.init en elem.drop).

Ten slotte, als u geïnteresseerd bent om er meer over te weten, kunt u de details raadplegen In de volgende link.


Laat je reactie achter

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

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  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.