WebAssembly.Module.customSections()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.

Die statische Methode WebAssembly.Module.customSections() gibt eine Kopie des Inhalts aller benutzerdefinierten Abschnitte in dem angegebenen Modul mit dem angegebenen Stringnamen zurück.

Syntax

js
WebAssembly.Module.customSections(module, sectionName)

Parameter

module

Das WebAssembly.Module-Objekt, dessen benutzerdefinierte Abschnitte betrachtet werden.

sectionName

Der Stringname des gewünschten benutzerdefinierten Abschnitts.

Rückgabewert

Ein (möglicherweise leeres) Array, das ArrayBuffer-Kopien des Inhalts aller benutzerdefinierten Abschnitte enthält, die mit sectionName übereinstimmen.

Ausnahmen

Wenn module keine Instanz eines WebAssembly.Module-Objekts ist, wird ein TypeError ausgelöst.

Beschreibung

Ein Wasm-Modul besteht aus einer Folge von Abschnitten. Die meisten dieser Abschnitte sind vollständig durch die Wasm-Spezifikation spezifiziert und validiert, aber Module können auch benutzerdefinierte Abschnitte enthalten, die während der Validierung ignoriert und übersprungen werden. (Lesen Sie Struktur auf hoher Ebene für Informationen über Abschnittsstrukturen und wie normale Abschnitte ("bekannte Abschnitte") und benutzerdefinierte Abschnitte unterschieden werden.)

Dies bietet Entwicklern eine Möglichkeit, benutzerdefinierte Daten innerhalb von Wasm-Modulen zu anderen Zwecken einzubinden, beispielsweise der name custom section, die es Entwicklern ermöglicht, Namen für alle Funktionen und lokalen Variablen im Modul bereitzustellen (ähnlich wie "Symbole" in einem nativen Build).

Beachten Sie, dass das WebAssembly-Textformat derzeit keine Syntax für das Hinzufügen neuer benutzerdefinierter Abschnitte spezifiziert hat; Sie können jedoch während der Umwandlung vom Textformat nach Wasm einen Namensabschnitt hinzufügen. Der Befehl wast2wasm, der als Teil des wabt-Tools verfügbar ist, hat eine --debug-names-Option — geben Sie diese während der Umwandlung an, um ein Wasm mit einem benutzerdefinierten Namenabschnitt zu erhalten, zum Beispiel:

bash
wast2wasm simple-name-section.was -o simple-name-section.wasm --debug-names

Beispiele

Verwendung von customSections

Das folgende Beispiel verwendet WebAssembly.Module.customSections, um zu prüfen, ob eine geladene Modulsinstanz einen "name" benutzerdefinierten Abschnitt enthält. Ein Modul enthält einen "name" benutzerdefinierten Abschnitt, wenn WebAssembly.Module.customSections einen ArrayBuffer mit einer Länge größer als 0 zurückgibt.

Siehe den Quellcode von custom-section.html source code und das live example.

js
WebAssembly.compileStreaming(fetch("simple-name-section.wasm")).then((mod) => {
  const nameSections = WebAssembly.Module.customSections(mod, "name");
  if (nameSections.length !== 0) {
    console.log("Module contains a name section");
    console.log(nameSections[0]);
  }
});

Spezifikationen

Specification
WebAssembly JavaScript Interface
# dom-module-customsections

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
customSections() static method

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch