WebAssembly
WebAssembly ist eine Art von Code, der in modernen Webbrowsern ausgeführt werden kann. Es handelt sich um eine niedrigstufige, assemblerähnliche Sprache mit einem kompakten Binärformat, das nahezu native Leistung bietet und Sprachen wie C/C++, C# und Rust ein Kompilierungsziel bietet, damit sie im Web ausgeführt werden können. Es ist auch dafür konzipiert, neben JavaScript ausgeführt zu werden, wodurch beide zusammenarbeiten können.
WebAssembly ist darauf ausgelegt, JavaScript zu ergänzen und daneben zu laufen — mit den WebAssembly-JavaScript-APIs können Sie WebAssembly-Module in eine JavaScript-App laden und Funktionalitäten zwischen beiden teilen. Dies ermöglicht es Ihnen, die Leistung und Stärke von WebAssembly sowie die Ausdruckskraft und Flexibilität von JavaScript in derselben App zu nutzen, selbst wenn Sie nicht wissen, wie man WebAssembly-Code schreibt.
WebAssembly hat große Auswirkungen auf die Webplattform, nicht nur weil es ermöglicht, dass Code in mehreren Sprachen im Web mit nahezu nativer Geschwindigkeit ausgeführt werden kann, sondern auch weil es Client-Apps ermöglicht, im Web ausgeführt zu werden, die zuvor nicht ausgeführt werden konnten.
Und das Beste ist, dass es als Webstandard über die W3C WebAssembly Working Group und die Community Group mit aktiver Beteiligung aller großen Browser-Anbieter entwickelt wird.
Leitfaden
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 WebAssembly ausgeführt wird.
- WebAssembly-Konzepte
-
Beginnen Sie mit dem Lesen der Konzepte auf hoher Ebene hinter WebAssembly — was es ist, warum es so nützlich ist, wie es in die Webplattform (und darüber hinaus) passt und wie es verwendet wird.
- Kompilierung eines neuen C/C++-Moduls zu WebAssembly
-
Wenn Sie Code in C/C++ geschrieben haben, können Sie ihn mit einem Tool wie Emscripten in Wasm kompilieren. Schauen wir uns an, wie das funktioniert.
- Kompilierung eines bestehenden C-Moduls zu WebAssembly
-
Ein Hauptanwendungsfall für WebAssembly ist es, das bestehende Ökosystem von C-Bibliotheken zu nutzen und Entwicklern zu ermöglichen, sie im Web zu verwenden.
- Kompilieren von Rust zu WebAssembly
-
Wenn Sie 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 zu Wasm zu kompilieren und in einer bestehenden Web-App zu verwenden.
- Laden und Ausführen von WebAssembly-Code
-
Nachdem Sie ein Wasm-Modul haben, behandelt dieser Artikel, wie man es abrufen, kompilieren und instanziieren kann, indem man die WebAssembly-JavaScript-API mit den Fetch- oder XHR-APIs kombiniert.
- Verwenden der WebAssembly-JavaScript-API
-
Sobald Sie ein Wasm-Modul geladen haben, möchten Sie es verwenden. In diesem Artikel zeigen wir Ihnen, wie man WebAssembly über die WebAssembly-JavaScript-API nutzt.
- Exportierte WebAssembly-Funktionen
-
Exportierte WebAssembly-Funktionen sind die JavaScript-Spiegelungen von WebAssembly-Funktionen, die das Aufrufen von WebAssembly-Code aus JavaScript ermöglichen. Dieser Artikel beschreibt, was sie sind.
- Verstehen des WebAssembly-Textformats
-
Dieser Artikel erklärt das Wasm-Textformat. Dies ist die niedrigstufige textuelle Darstellung eines Wasm-Moduls, die in den Entwickler-Tools des Browsers beim Debugging angezeigt wird.
- Konvertierung des WebAssembly-Textformats in Wasm
-
Dieser Artikel bietet eine Anleitung, 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-Schnittstelle
-
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 in/zwischen mehrerenWebAssembly.Module
-Instanzen importierbar/exportierbar ist. Dies ermöglicht das dynamische Verknüpfen 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 instanziiert werden kann. WebAssembly.Instance()
-
Ein
WebAssembly.Instance
-Objekt ist eine zustandsbehaftete, ausführbare Instanz einesModule
.Instance
-Objekte enthalten alle exportierten WebAssembly-Funktionen, die das Aufrufen von WebAssembly-Code aus JavaScript ermöglichen. WebAssembly.compile()
-
Die Funktion
WebAssembly.compile()
kompiliert WebAssembly-Binärcode in einWebAssembly.Module
-Objekt. WebAssembly.compileStreaming()
-
Die Funktion
WebAssembly.compileStreaming()
kompiliert einWebAssembly.Module
direkt aus einer gestreamten zugrunde liegenden Quelle. WebAssembly.instantiate()
-
Die Funktion
WebAssembly.instantiate()
ermöglicht es Ihnen, 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 einModule
als auch seine ersteInstance
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 anpassbaresArrayBuffer
, das die rohen Byte von Speicher enthält, auf die eineInstance
zugreift. WebAssembly.Table()
-
Ein
WebAssembly.Table
-Objekt ist ein anpassbares typisiertes Array von undurchsichtigen Werten, wie Funktionsreferenzen, die von einerInstance
zugegriffen werden. WebAssembly.Tag()
-
Das
WebAssembly.Tag
-Objekt definiert eine Art von WebAssembly-Ausnahme, die in/zur WebAssembly-Code geworfen werden kann. WebAssembly.Exception()
-
Das
WebAssembly.Exception
-Objekt stellt eine Laufzeitausnahme dar, die von WebAssembly zu JavaScript oder von JavaScript zu einem WebAssembly-Ausnahmehandler geworfen wird. 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 Repository für eine Reihe weiterer Beispiele an.