Eine Vorabversion des WebAssembly 2.0 Standards ist verfügbar.

Das W3C-Konsortium hat einen Entwurf der neuen Spezifikation veröffentlicht, die den Zwischencode von WebAssembly 2.0 und die zugehörige API standardisiert. Diese ermöglicht die Erstellung leistungsstarker Anwendungen, die zwischen Browsern und Hardware-Plattformen portierbar sind. WebAssembly bietet einen plattformunabhängigen, universellen nieder-level Zwischencode zur Ausführung von Anwendungen, die aus verschiedenen Programmiersprachen kompiliert wurden. Durch den Einsatz von JIT kann WebAssembly eine Leistung erreichen, die nahe an jener von nativem Code liegt.

Die Technologie WebAssembly kann für die Ausführung von Aufgaben im Browser verwendet werden, die hohe Leistung erfordern, wie z.B. Videokodierung, Audioverarbeitung, Grafik- und 3D-Manipulation, Spieleentwicklung, kryptografische Operationen und mathematische Berechnungen, indem sie die Ausführung von in kompilierbaren Sprachen wie C/C++ geschriebenem Code im Browser organisiert.

Eine der Hauptaufgaben von WebAssembly besteht darin, Portabilität, Vorhersagbarkeit des Verhaltens und Identität der Ausführung von Code auf verschiedenen Plattformen zu gewährleisten. In letzter Zeit wird WebAssembly auch als universelle Plattform für die sichere Ausführung von Code in beliebigen Infrastrukturen, Betriebssystemen und Geräten gefördert, wobei nicht nur Browser berücksichtigt werden.

Das W3C hat drei erste Spezifikationen von WebAssembly 2.0 veröffentlicht:

  • WebAssembly Core — beschreibt die niedrigstufige virtuelle Maschine zur Ausführung von Zwischencode für WebAssembly. Die mit WebAssembly verbundenen Ressourcen werden im Format „.wasm“ bereitgestellt, das ähnlich wie „.class“-Dateien in Java ist und statische Daten sowie Code-Segmente zur Verarbeitung dieser Daten enthält.
  • WebAssembly JavaScript Interface – bietet eine API zur Integration mit JavaScript. Sie ermöglicht den Zugriff auf Werte und die Übergabe von Parametern an WebAssembly-Funktionen. Die Ausführung von WebAssembly entspricht dem Sicherheitsmodell von JavaScript und alle Interaktionen mit dem zugrunde liegenden System erfolgen analog zur Ausführung von JavaScript-Code.
  • WebAssembly Web API — definiert eine Programmierschnittstelle basierend auf dem Promise-Mechanismus zur Anforderung und Ausführung von „.wasm“-Ressourcen. Das Format der WebAssembly-Ressourcen ist optimiert, um die Ausführung zu beginnen, ohne auf das vollständige Laden der Datei zu warten, was die Reaktionsfähigkeit von Webanwendungen erhöht.

Die wesentlichen Änderungen in WebAssembly 2.0 im Vergleich zur ersten Version des Standards sind:

  • Unterstützung des Vektortyps v128 und der zugehörigen Vektoroperationen, die die gleichzeitige Ausführung von Operationen an mehreren numerischen Werten (SIMD, Single Instruction Multiple Data) ermöglichen.
  • Die Möglichkeit zum Import und Export von veränderbaren (mutable) globalen Variablen, die die globale Bindung für Werte wie Stackzeiger in C++ ermöglichen.
  • Neue Anweisungen zur Umwandlung von float in int, die anstelle einer Ausnahme bei einer Überlauf des Ergebnisses den minimal möglichen oder maximalen Wert zurückgeben (notwendig für SIMD).
  • Anweisungen zur Erweiterung des Vorzeichens von Ganzzahlen (Erhöhung der Bitbreite der Zahl unter Beibehaltung des Vorzeichens und Wertes).
  • Unterstützung für die Rückgabe mehrerer Werte in Blöcken und Funktionen (neben der Übergabe mehrerer Parameter an Funktionen).
  • Umsetzung der JavaScript-Funktionen BigInt64Array und BigUint64Array zur Konvertierung zwischen dem JavaScript-Typ BigInt und der Darstellung von 64-Bit-Ganzzahlen in WebAssembly.
  • Unterstützung von Referenztypen (funcref und externref) und den damit verbundenen Anweisungen (select, ref.null, ref.func und ref.is_null).
  • Anweisungen memory.copy, memory.fill, memory.init und data.drop zum Kopieren von Daten zwischen Speicherbereichen und zum Bereinigen von Speicherregionen.
  • Anweisungen für den direkten Zugriff auf und die Modifizierung von Tabellen (table.set, table.get, table.size, table.grow). Möglichkeit zur Erstellung, zum Import und Export mehrerer Tabellen in einem Modul. Funktionen zum Kopieren/füllen von Tabellen im Batch-Modus (table.copy, table.init und elem.drop).

Quelle: opennet.ru

Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server 🔥 Zuverlässiges Hosting für Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster