Standardentwurf für WebAssembly 2.0 veröffentlicht 

Der W3C enthüllt Kürzlich durch einen Beitrag ein Entwurf einer neuen Spezifikation das standardisiert den Vorbereitungscode von WebAssembly 2.0 und zugehörige API um die Erstellung von Hochleistungsanwendungen zu ermöglichen, die über Browser und Hardwareplattformen hinweg portierbar sind.

Für diejenigen, die neu bei WebAssembly sind, sollten Sie das wissen dies stellt eine generische Middleware bereit, niedriges Niveau und browserunabhängig, um kompilierte Anwendungen auszuführen aus verschiedenen Programmiersprachen. Durch die Verwendung von JIT für WebAssembly können Sie ein Leistungsniveau erreichen, das dem nativen Code nahe kommt.

Über WebAssembly

WebAssembly kann verwendet werden, um hochperformante Aufgaben im Browser auszuführenB. Videocodierung, Audioverarbeitung, 3D- und Grafikmanipulation, Spieleentwicklung, kryptografische Operationen und mathematische Berechnungen, indem Code ausgeführt wird, der in kompilierten Sprachen wie C/C++ geschrieben ist.

Zu den Hauptaufgaben von WebAssembly gehört die Bereitstellung von Portabilität, Vorhersagbarkeit des Verhaltens und Identität der Codeausführung auf verschiedenen Plattformen. Kürzlich wurde WebAssembly auch als universelle Plattform für die sichere Codeausführung auf jeder Infrastruktur, jedem Betriebssystem und jedem Gerät beworben, nicht nur auf Browser beschränkt.

Über den WebAssembly 2.0-Entwurf

Seitens der Änderungen, die seit WebAssembly vorgenommen wurden, sind die fertigen Vorschläge für WebAssembly 2.0 SIMD mit fester Breite, Massenspeicheroperationen, Referenztypen, JavaScript BigInt-Unterstützung für WebAssembly i64, Unterstützung für mehrere Rückgabewerte und Import/Export von änderbaren globale Variablen.

Das W3C hat drei Entwürfe für WebAssembly 2.0-Spezifikationen veröffentlicht:

  1. Web-Assembly-Kern: beschreibt einen virtuellen Computer auf niedriger Ebene zum Ausführen von WebAssembly-Zwischencode. Ressourcen, die sich auf WebAssembly beziehen, haben ein „.wasm“-Format, ähnlich wie Java „.class“-Dateien, die statische Daten und Codesegmente enthalten, um mit diesen Daten zu arbeiten.
  2. WebAssembly JavaScript-Oberfläche: bietet eine API für die Integration mit JavaScript. Ermöglicht das Abrufen von Werten und das Übergeben von Parametern an WebAssembly-Funktionen. Die WebAssembly-Ausführung folgt dem JavaScript-Sicherheitsmodell, und die gesamte Interaktion mit dem Host erfolgt ähnlich wie beim Ausführen von JavaScript-Code.
  3. WebAssembly-Web-API: definiert eine auf dem Promise-Mechanismus basierende API zum Anfordern und Ausführen von „.wasm“-Ressourcen. Das WebAssembly-Ressourcenformat ist optimiert, um die Ausführung zu starten, ohne auf den vollständigen Download der Datei warten zu müssen, wodurch die Reaktionsfähigkeit von Webanwendungen verbessert wird.

Unterschiede zwischen WebAssembly und WebAssembly 2.0

Außerdem sollte beachtet werden, dass es einige wichtige Änderungen in WebAssembly 2.0 im Vergleich zur ersten Version des Standards gibt:

  • Unterstützung für v128-Vektortypen und zugehörige Vektorbefehle, mit denen Sie Operationen an mehreren numerischen Werten parallel ausführen können (SIMD, einzelne Anweisung, mehrere Daten).
  • Möglichkeit zum Importieren und Exportieren veränderlicher globaler Variablen, die eine globale Bindung für Werte als Stapelzeiger in C++ ermöglicht.
  • Neue Anweisungen zum Konvertieren von Float in Int, die, anstatt eine Ausnahme bei einem Ergebnisüberlauf auszulösen, den minimal oder maximal möglichen Wert zurückgibt (erforderlich für SIMD).
  • Anleitung zum Erweitern des Vorzeichens ganzer Zahlen (erhöhen Sie die Bittiefe einer Zahl, wobei das Vorzeichen und der Wert beibehalten werden).
  • Unterstützung für die Rückgabe mehrerer Werte durch Blöcke und Funktionen (sowie das Übergeben mehrerer Parameter an Funktionen).
  • Implementieren Sie die JavaScript-Funktionen BigInt64Array und BigUint64Array um zwischen dem JavaScript-Typ BigInt und der WebAssembly-Darstellung von 64-Bit-Ganzzahlen zu konvertieren.
  • Unterstützung für Referenztypen (funcref und externref) und ihre zugehörigen Anweisungen (select, ref.null, ref.func und ref.is_null).
  • memory.copy-, memory.fill-, memory.init- und data.drop-Anweisungen um Daten zwischen Speicherregionen zu kopieren und Speicherregionen zu löschen.
  • Anweisungen für den direkten Zugriff und die Änderung von Tabellen (table.set, table.get, table.size, table.grow).
  • Möglichkeit, mehrere Tabellen in einem Modul zu erstellen, zu importieren und zu exportieren. Funktionen zum Kopieren/Füllen von Tabellen im Batch-Modus (table.copy, table.init und elem.drop).

Wenn Sie mehr darüber erfahren möchten, können Sie die Details einsehen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.