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.

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

Объект 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

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

BCD tables only load in the browser

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