WebAssembly
WebAssembly ist eine Art von Code, der in modernen Webbrowsern ausgeführt werden kann. Es handelt sich um eine Low-Level-ähnliche Assemblersprache mit einem kompakten binären Format, das nahezu native Leistung bietet und Sprachen wie C/C++, C# und Rust ein Kompilierungsziel bietet, sodass sie im Web ausgeführt werden können.
WebAssembly ist so konzipiert, dass es JavaScript ergänzt und parallel dazu läuft — mit den WebAssembly JavaScript-APIs können Sie WebAssembly-Module in eine JavaScript-Anwendung laden und Funktionalitäten zwischen beiden teilen. Dadurch können Sie die Leistung und Leistungsfähigkeit von WebAssembly sowie die Ausdruckskraft und Flexibilität von JavaScript in derselben Anwendung nutzen, auch 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, der in mehreren Sprachen geschrieben wurde, mit nahezu nativer Geschwindigkeit im Web läuft, sondern auch weil es ermöglicht, dass Client-Anwendungen, die bisher nicht im Web laufen konnten, nun im Web ausgeführt werden.
Und was noch besser ist: Es wird als Webstandard durch die W3C WebAssembly Working Group und die Community Group mit aktiver Teilnahme aller großen Browseranbieter entwickelt.
Leitfäden
Die WebAssembly-Leitfäden behandeln Themen wie hochrangige Konzepte, das Kompilieren aus verschiedenen Sprachen, die textuelle Darstellung des Wasm-Binärformats und wie WebAssembly ausgeführt wird.
- WebAssembly-Konzepte
-
Beginnen Sie, indem Sie die hochrangigen Konzepte hinter WebAssembly lesen — was es ist, warum es so nützlich ist, wie es in die Webplattform (und darüber hinaus) passt und wie man es verwendet.
- Ein neues C/C++-Modul in WebAssembly kompilieren
-
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.
- Ein bestehendes C-Modul in WebAssembly kompilieren
-
Ein zentrales Anwendungsgebiet von WebAssembly besteht darin, das bestehende Ökosystem von C-Bibliotheken zu nutzen und Entwicklern zu ermöglichen, sie im Web zu verwenden.
- Von Rust zu WebAssembly kompilieren
-
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 in Wasm zu kompilieren und es in einer bestehenden Webanwendung zu verwenden.
- WebAssembly-Code laden und ausführen
-
Nachdem Sie ein Wasm-Modul haben, behandelt dieser Artikel, wie man es abruft, kompiliert und instanziiert, indem man die WebAssembly JavaScript-API mit den Fetch- oder XHR-APIs kombiniert.
- Die WebAssembly JavaScript-API verwenden
-
Sobald Sie ein Wasm-Modul geladen haben, möchten Sie es verwenden. In diesem Artikel zeigen wir Ihnen, wie Sie WebAssembly über die WebAssembly JavaScript-API verwenden.
- Exportierte WebAssembly-Funktionen
-
Exportierte WebAssembly-Funktionen sind die JavaScript-Entsprechungen von WebAssembly-Funktionen, die es ermöglichen, WebAssembly-Code von JavaScript aus aufzurufen. Dieser Artikel beschreibt, was sie sind.
- Das WebAssembly-Textformat verstehen
-
Dieser Artikel erklärt das Wasm-Textformat. Dies ist die niedrigstufige textuelle Darstellung eines Wasm-Moduls, die in Entwicklertools des Browsers beim Debuggen angezeigt wird.
- Das WebAssembly-Textformat in Wasm umwandeln
-
Dieser Artikel bietet eine Anleitung, wie man ein in Textformat geschriebenes WebAssembly-Modul in ein Wasm-Binärformat umwandelt.
API-Referenz
- WebAssembly-Befehlsreferenz
-
Referenzdokumentation mit interaktiven Beispielen für die Reihe von WebAssembly-Operatoren.
- WebAssembly JavaScript-Schnittstelle
-
Dieses Objekt fungiert als Namensraum für alle WebAssembly-bezogenen Funktionalitäten.
WebAssembly.Global()-
Ein
WebAssembly.Global-Objekt stellt eine globale Variable dar, auf die sowohl von JavaScript aus zugegriffen werden kann als auch die über mehrereWebAssembly.Module-Instanzen hinweg importiert/exportiert werden kann. 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 instanziiert 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, WebAssembly-Code von JavaScript aus aufzurufen. 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 Quellbasis. WebAssembly.instantiate()-
Die Funktion
WebAssembly.instantiate()ermöglicht das Kompilieren und Instanziieren von WebAssembly-Code. WebAssembly.instantiateStreaming()-
Die Funktion
WebAssembly.instantiateStreaming()ist die primäre API für das 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 veränderbaresArrayBuffer, das die rohen Bytes des Speichers enthält, auf den eineInstancezugreift. WebAssembly.Table()-
Ein
WebAssembly.Table-Objekt ist ein veränderbares typisiertes Array von undurchsichtigen Werten, wie Funktionsreferenzen, auf die eineInstancezugreift. WebAssembly.Tag()-
Das
WebAssembly.Tag-Objekt definiert eine Art von WebAssembly-Ausnahme, die von/zu WebAssembly-Code ausgelöst werden kann. WebAssembly.Exception()-
Das
WebAssembly.Exception-Objekt stellt eine Laufzeitausnahme dar, die von WebAssembly zu JavaScript geworfen wird 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 weitere Beispiele an.