Der Standard WebAssembly 3.0 wurde veröffentlicht

Das W3C-Konsortium hat die Fertigstellung der Spezifikation bekannt gegeben, die den Zwischencode WebAssembly 3.0 und die damit verbundene API standardisiert, die die Erstellung von hochleistungsfähigen Anwendungen ermöglicht, die zwischen Browsern und Hardwareplattformen portierbar sind. WebAssembly bietet einen universellen, browserunabhängigen, niedrigstufigen Zwischencode zur Ausführung von Anwendungen, die aus verschiedenen Programmiersprachen kompiliert wurden.

Die WebAssembly-Technologie kann verwendet werden, um im Browser Aufgaben auszuführen, die hohe Leistungen erfordern, wie zum Beispiel Videos kodieren, Audios verarbeiten, Grafik- und 3D-Manipulation, Spieleentwicklung, kryptografische Operationen und mathematische Berechnungen, indem die Ausführung von im Browser geschriebenem, kompilierbarem Code organisiert wird, wie C/C++. Durch den Einsatz von JIT für WebAssembly kann eine Leistung erreicht werden, die nah am nativen Code liegt.

Zu den Hauptzielen von WebAssembly gehört die Gewährleistung von Portabilität, Vorhersehbarkeit des Verhaltens und Identität der Ausführung von Code auf verschiedenen Plattformen. WebAssembly ist nicht auf Browser beschränkt und wird auch als universelle Plattform für die sichere Ausführung von Code in jeder Infrastruktur, auf Betriebssystemen und Geräten vorangetrieben.

Die folgenden Spezifikationen sind verfügbar:

  • 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 API — bietet eine API zur Integration mit JavaScript. Erlaubt das Abrufen von Werten und das Übergeben von Parametern an WebAssembly-Funktionen. Die Ausführung von WebAssembly entspricht dem Sicherheitsmodell von JavaScript und alle Interaktionen mit dem zugrunde liegenden System werden ähnlich wie bei der Ausführung von JavaScript-Code durchgeführt.
  • 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.
  • WASI API — definiert eine modulare Systemschnittstelle zum Ausführen von WebAssembly außerhalb von Browsern und zum Bereitstellen von Zugriff auf Ressourcen wie Dateien, Netzwerkverbindungen, Zufallszahlengeneratoren und Systemuhren.

Es wird festgestellt, dass in der neuen Version des Standards die Unterstützung für die Kompilierung hochgradiger Sprachen in WebAssembly erheblich verbessert wurde. Beispielsweise wurde die Möglichkeit zur Kompilierung von Projekten in WebAssembly in den Sprachen Java, OCaml, Scala, Kotlin, Scheme und Dart implementiert. Die wichtigsten Änderungen in WebAssembly 3.0 im Vergleich zur zweiten Version des Standards sind:

  • Es wurde Unterstützung für 64-Bit-Adressräume implementiert. Für die Adressierung des Speichers kann jetzt der Typ i64 verwendet werden, nicht nur i32, was den für Anwendungen verfügbaren Adressraum von 4 GB auf 16 EB erweitert (bei Ausführung im Browser ist eine Begrenzung auf 16 GB gesetzt).
  • Es wurde die Möglichkeit bereitgestellt, mehrere Speicherobjekte in einem WebAssembly-Modul gleichzeitig zu verwenden und mit verschiedenen Adressräumen zu arbeiten. Unter anderem ist es möglich, Daten zwischen verschiedenen Instanzen von Speicherobjekten, die in unterschiedlichen Adressräumen platziert sind, zu kopieren.
  • Die Unterstützung für Garbage Collection wurde hinzugefügt. Neben dem zuvor verfügbaren linearen Speicher wurde ein separater Speichertype vorgeschlagen, der automatisch durch einen Garbage Collector verwaltet wird. Der Compiler kann jetzt separate Datenstrukturen, Arrays und Variablen verwenden, für die WebAssembly die Speicherzuweisung und das Lebenszyklusmanagement übernimmt.
  • Es wurde die Unterstützung für typisierte Referenzen hinzugefügt, die die genaue Struktur des Wertes beschreiben können, auf den die Referenz zeigt, was zusätzliche Prüfungen zur Laufzeit vermeidet. Unterstützt werden Subtypen, Typrekursion und die sichere Verwendung von Funktionsreferenzen, die keine Typ- und Bereichsprüfungen zur Laufzeit erfordern.
  • Die Unterstützung für Tail-Calls wurde hinzugefügt, wobei die aktuelle Funktion die Ausführung sofort nach dem Aufruf einer anderen Funktion beendet, ohne Platz im Stack zu verbrauchen.
  • Die Unterstützung für die Behandlung von Ausnahmen wurde hinzugefügt.
  • Die Unterstützung für "entschlossene" (relaxed) Vektor-SIMD-Befehle wurde hinzugefügt, die eine höhere Leistung durch den Verzicht auf strenge Einhaltung der Semantik auf allen Hardware-Plattformen gewährleisten.
  • Die Unterstützung für ein deterministisches Ausführungsprofil wurde hinzugefügt, das ein plattformunabhängiges Verhalten für Anweisungen definiert, deren Ausführungsergebnisse auf verschiedenen Plattformen variieren können (Gleitkommaoperationen, Rückgabe von NaN, abgeschwächte Vektor-Anweisungen). Wenn dieses Profil ausgewählt ist, gewährleistet Wasm deterministisches Verhalten, Reproduzierbarkeit und Portabilität.
  • Eine Syntax wurde hinzugefügt, um benutzerdefinierte Annotationen zu erstellen, die es ermöglichen, zusätzliche Informationen an WebAssembly-Code anzuhängen. Zuvor gab es im binären WebAssembly-Format Unterstützung für benutzerdefinierte Abschnitte, die beliebige Informationen speichern, aber im Textformat fehlte diese. Jetzt gibt es die Möglichkeit, diese Informationen in lesbarer und bearbeitbarer Form hinzuzufügen.
  • Im JavaScript-API wurden integrierte Funktionen zur Bearbeitung von Strings hinzugefügt. Früher konnten JavaScript-Strings nur als externe Verknüpfungen an WebAssembly übergeben werden, jetzt kann direkt auf Strings zugegriffen und innerhalb von WebAssembly damit gearbeitet werden.

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