Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

WebAssembly

WebAssembly ist eine Art von Code, der in modernen Webbrowsern ausgeführt werden kann. Es handelt sich um eine low-level, assemblerähnliche Sprache mit einem kompakten Binärformat, das mit nahezu nativer Leistung ausgeführt wird und Sprachen wie C/C++, C# und Rust ein Kompilierungsziel bietet, damit sie im Web laufen können.

WebAssembly ist so konzipiert, dass es JavaScript ergänzt und daneben ausgeführt wird – mit den WebAssembly JavaScript-APIs können Sie WebAssembly-Module in eine JavaScript-Anwendung laden und Funktionen zwischen beiden teilen. Dies ermöglicht, die Leistung und Power von WebAssembly sowie die Ausdruckskraft und Flexibilität von JavaScript in derselben Anwendung zu nutzen, selbst wenn Sie nicht wissen, wie man WebAssembly-Code schreibt.

WebAssembly hat große Auswirkungen auf die Web-Plattform, nicht nur weil es ermöglicht, dass Code, der in mehreren Sprachen geschrieben wurde, mit annähernd nativer Geschwindigkeit im Web laufen kann, sondern auch weil es Clientanwendungen ermöglicht, im Web ausgeführt zu werden, die vorher nicht laufen konnten.

Und was noch besser ist, es wird als Webstandard von der W3C WebAssembly Working Group und der Community Group entwickelt, mit aktiver Teilnahme aller großen Browseranbieter.

Leitfäden

Die WebAssembly-Leitfäden behandeln Themen wie Konzepte auf hoher Ebene, das Kompilieren aus verschiedenen Sprachen, die textuelle Darstellung des Wasm-Binärformats und wie man WebAssembly ausführt.

WebAssembly-Konzepte

Fangen Sie an, indem Sie die Konzepte auf hoher Ebene hinter WebAssembly lesen – was es ist, warum es so nützlich ist, wie es in die Web-Plattform passt (und darüber hinaus) und wie man es verwendet.

Ein neues C/C++-Modul nach WebAssembly kompilieren

Wenn Sie Code in C/C++ geschrieben haben, können Sie ihn mit einem Tool wie Emscripten in Wasm kompilieren. Lassen Sie uns schauen, wie das funktioniert.

Ein vorhandenes C-Modul nach WebAssembly kompilieren

Ein zentraler Anwendungsfall für WebAssembly ist es, das bestehende Ökosystem von C-Bibliotheken zu nutzen und Entwicklern zu ermöglichen, diese im Web zu nutzen.

Kompilieren von Rust nach WebAssembly

Wenn Sie etwas Rust-Code geschrieben haben, können Sie ihn in WebAssembly kompilieren! Dieses Tutorial führt Sie durch alles, was Sie wissen müssen, um ein Rust-Projekt in Wasm zu kompilieren und in einer vorhandenen Webanwendung zu verwenden.

Laden und Ausführen von WebAssembly-Code

Nachdem Sie ein Wasm-Modul haben, behandelt dieser Artikel, wie man es abruft, kompiliert und instanziiert und die WebAssembly JavaScript-API mit der Fetch-oder XHR-API kombiniert.

Verwenden der WebAssembly JavaScript API

Sobald Sie ein Wasm-Modul geladen haben, möchten Sie es nutzen. In diesem Artikel zeigen wir Ihnen, wie Sie WebAssembly über die WebAssembly JavaScript API verwenden.

Exportierte WebAssembly-Funktionen

Exportierte WebAssembly-Funktionen sind die JavaScript-Reflexionen von WebAssembly-Funktionen, die es ermöglichen, WebAssembly-Code aus JavaScript aufzurufen. Dieser Artikel beschreibt, was sie sind.

Verstehen des WebAssembly-Textformats

Dieser Artikel erklärt das Wasm-Textformat. Dies ist die low-level, textuelle Darstellung eines Wasm-Moduls, die in den Entwickler-Tools des Browsers beim Debuggen angezeigt wird.

Konvertieren des WebAssembly-Textformats in Wasm

Dieser Artikel bietet einen Leitfaden, wie man ein in Textformat geschriebenes WebAssembly-Modul in ein Wasm-Binärformat konvertiert.

API-Referenz

WebAssembly-Instruktionsreferenz

Referenzdokumentation mit interaktiven Beispielen für die Menge der WebAssembly-Operatoren.

WebAssembly-JavaScript-Interface

Dieses Objekt fungiert als Namensraum für alle WebAssembly-bezogenen Funktionen.

WebAssembly.Global()

Ein WebAssembly.Global-Objekt stellt eine globale Variableninstanz dar, die sowohl von JavaScript aus zugänglich als auch über eine oder mehrere WebAssembly.Module-Instanzen importierbar/exportierbar ist. Dies ermöglicht dynamisches Verlinken mehrerer Module.

WebAssembly.Module()

Ein WebAssembly.Module-Objekt enthält zustandslosen WebAssembly-Code, der bereits vom Browser kompiliert wurde und effizient mit Workern geteilt und mehrfach instantiiert werden kann.

WebAssembly.Instance()

Ein WebAssembly.Instance-Objekt ist eine zustandsbehaftete, ausführbare Instanz eines Module. Instance-Objekte enthalten alle exportierten WebAssembly-Funktionen, die es ermöglichen, aus JavaScript heraus in WebAssembly-Code zu gelangen.

WebAssembly.compile()

Die Funktion WebAssembly.compile() kompiliert WebAssembly-Binärcode in ein WebAssembly.Module-Objekt.

WebAssembly.compileStreaming()

Die Funktion WebAssembly.compileStreaming() kompiliert ein WebAssembly.Module direkt aus einer gestreamten zugrunde liegenden Quelle.

WebAssembly.instantiate()

Die Funktion WebAssembly.instantiate() ermöglicht es, WebAssembly-Code zu kompilieren und zu instanziieren.

WebAssembly.instantiateStreaming()

Die Funktion WebAssembly.instantiateStreaming() ist die primäre API zum Kompilieren und Instanziieren von WebAssembly-Code und gibt sowohl ein Module als auch seine erste Instance zurück.

WebAssembly.validate()

Die Funktion WebAssembly.validate() validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode.

WebAssembly.Memory()

Ein WebAssembly.Memory-Objekt ist ein anpassbarer ArrayBuffer, der die rohen Bytes des Speichers enthält, die von einer Instance angesprochen werden.

WebAssembly.Table()

Ein WebAssembly.Table-Objekt ist ein anpassbares typisiertes Array aus undurchsichtigen Werten, wie Funktionsreferenzen, die von einer Instance angesprochen werden.

WebAssembly.Tag()

Das WebAssembly.Tag-Objekt definiert einen Typ von WebAssembly-Ausnahme, die zu/von WebAssembly-Code geworfen werden kann.

WebAssembly.Exception()

Das WebAssembly.Exception-Objekt stellt eine zur Laufzeit von WebAssembly an JavaScript, oder von JavaScript zu einem WebAssembly-Ausnahme-Handler geworfene Ausnahme dar.

WebAssembly.CompileError()

Erstellt ein neues WebAssembly-CompileError-Objekt.

WebAssembly.LinkError()

Erstellt ein neues WebAssembly-LinkError-Objekt.

WebAssembly.RuntimeError()

Erstellt ein neues WebAssembly-RuntimeError-Objekt.

Beispielprojekte

Spezifikationen

Specification
WebAssembly JavaScript Interface
# webassembly-namespace
WebAssembly JavaScript Interface
# ref-for-syntax-numtype①⓪
WebAssembly JavaScript Interface
# dom-globaldescriptor-mutable
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
Unknown specification
WebAssembly Core: Garbage Collection
# garbage-collection①

Browser-Kompatibilität

webassembly.api

webassembly.BigInt-to-i64-integration

webassembly.bulk-memory-operations

webassembly.exception-handling

webassembly.extended-constant-expressions

webassembly.fixed-width-SIMD

webassembly.garbage-collection

webassembly.multiMemory

webassembly.multi-value

webassembly.mutable-globals

webassembly.non-trapping-float-to-int-conversions

webassembly.reference-types

webassembly.sign-extension-operations

webassembly.tail-calls

webassembly.threads-and-atomics

Siehe auch