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-ä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 mehrere WebAssembly.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 eines Module. 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 ein WebAssembly.Module-Objekt.

WebAssembly.compileStreaming()

Die Funktion WebAssembly.compileStreaming() kompiliert ein WebAssembly.Module direkt 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 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 veränderbares ArrayBuffer, das die rohen Bytes des Speichers enthält, auf den eine Instance zugreift.

WebAssembly.Table()

Ein WebAssembly.Table-Objekt ist ein veränderbares typisiertes Array von undurchsichtigen Werten, wie Funktionsreferenzen, auf die eine Instance zugreift.

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

Spezifikationen

Spezifikation
WebAssembly JavaScript Interface
# webassembly-namespace
WebAssembly JavaScript Interface
# ref-for-syntax-numtype①⓪
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.non-trapping-float-to-int-conversions

webassembly.reference-types

webassembly.sign-extension-operations

webassembly.tail-calls

webassembly.threads-and-atomics

Siehe auch