WebAssembly

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.

* Some parts of this feature may have varying levels of support.

Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Объект JavaScript WebAssembly действует как пространство имён для всего WebAssembly-связанной функциональности.

В отличие от большинства других глобальных объектов, WebAssembly не является конструктором (это не объект функции). Можно сравнить его с Math, который так же является пространством имён констант и функций, или Intl, который является пространством имён для конструкторов интернационализации и других языково-чувствительных функций.

Описание

Основное использование WebAssembly следующее:

Методы

WebAssembly.instantiate()

Основное API для компиляции и создания экземпляра кода WebAssembly, возвращающее Module и его первый Instance.

WebAssembly.compile()

Компилирует WebAssembly.Module из бинарного кода WebAssembly, оставляя создание экземпляра отдельным шагом.

WebAssembly.validate()

Проверяет представленный типизированный массив бинарного кода WebAssembly, возвращая в зависимости от того были ли байты кода WebAssembly валидны (true) или (false).

Конструкторы

WebAssembly.Module()

Создаёт новый объект WebAssembly Module.

WebAssembly.Instance()

Создаёт новый объект WebAssembly Instance.

WebAssembly.Memory()

Создаёт новый объект WebAssembly Memory.

WebAssembly.Table()

Создаёт новый объект WebAssembly Table.

WebAssembly.CompileError()

Создаёт новый объект WebAssembly CompileError.

WebAssembly.LinkError()

Создаёт новый объект WebAssembly LinkError.

WebAssembly.RuntimeError()

Создаёт новый объект WebAssembly RuntimeError.

Примеры

Смотрите пример instantiate-streaming.html на GitHub (демо).

js
const importObject = {
  my_namespace: { imported_func: (arg) => console.log(arg) },
};

WebAssembly.instantiateStreaming(fetch("simple.wasm"), importObject).then(
  (obj) => obj.instance.exports.exported_func(),
);

Потом осуществляется доступ к свойству .instance объекта ResultObject и вызывается содержащаяся в нём экспортированная функция.

Спецификации

Specification
WebAssembly JavaScript Interface
# webassembly-namespace

Совместимость с браузерами

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
api
CompileError
CompileError() constructor
Exception
Exception() constructor
options.traceStack parameter
Non-standard
Exception.getArg
Exception.is
Stack trace
Non-standard
Global
Global() constructor
Global.value
Global.valueOf
Instance
Instance() constructor
Instance.exports
LinkError
LinkError() constructor
Memory
Memory() constructor
shared flag
Memory.buffer
Memory.grow
Module
Module() constructor
compileOptions parameter
customSections() static method
exports() static method
imports() static method
RuntimeError
RuntimeError() constructor
Table
Table() constructor
Table.get
Table.grow
Table.length
Table.set
Tag
Tag() constructor
Tag.type
compileStreaming() static method
compileOptions parameter
compile() static method
compileOptions parameter
instantiateStreaming() static method
compileOptions parameter
instantiate() static method
compileOptions parameter
validate() static method
compileOptions parameter

Legend

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

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
See implementation notes.
User must explicitly enable this feature.

Смотрите также