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 mehrereWebAssembly.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 einesModule.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 einWebAssembly.Module-Objekt. WebAssembly.compileStreaming()-
Die Funktion
WebAssembly.compileStreaming()kompiliert einWebAssembly.Moduledirekt 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 einModuleals auch seine ersteInstancezurück. WebAssembly.validate()-
Die Funktion
WebAssembly.validate()validiert ein gegebenes typisiertes Array von WebAssembly-Binärcode. WebAssembly.Memory()-
Ein
WebAssembly.Memory-Objekt ist ein anpassbarerArrayBuffer, der die rohen Bytes des Speichers enthält, die von einerInstanceangesprochen werden. WebAssembly.Table()-
Ein
WebAssembly.Table-Objekt ist ein anpassbares typisiertes Array aus undurchsichtigen Werten, wie Funktionsreferenzen, die von einerInstanceangesprochen 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
- WASMSobel
- Sehen Sie sich unser webassembly-examples-Repo für eine Reihe weiterer Beispiele an.