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.

El objeto WebAssembly de JavaScript actua como un namespace para todas las funcionalidades realcionados con WebAssembly.

A diferencia de otros objetos globales, WebAssembly no tiene un constructor (no tiene una función para crear el objeto). Puedes ser comparado con el objeto Math, que también es un namespace, para funciones y constantes matemáticas, o también con Intl que es un namespace para internacionalización y otras funciones de idioma.

Descripción

Los usos primarios para el objeto WebAssembly son:

Métodos

WebAssembly.instantiate()

El API primaria para compilar e instanciar código WebAssembly, ambos regresan un Module y el primero Instance.

WebAssembly.instantiateStreaming()

Compila e instancia un módulo WebAssembly directamente desde un flujo de origen subyacente, ambos regresan un Module y el primero Instance.

WebAssembly.compile()

Compila un WebAssembly.Module desde el código binario de un WebAssembly, manteniendo la creación de la instancia como un objeto separado.

WebAssembly.compileStreaming()

compila un WebAssembly.Module directamente desde un flujo de origen subyacente, manteniendo la creación de la instancia como un objeto sepraado.

WebAssembly.validate()

Valida un arreglo con tipo de código binario de un WebAssembly, regresando si los bytes son código válido WebAssembly (true) o de lo contrario (false).

Constructores

WebAssembly.Module()

Crea un nuevo objeto WebAssembly Module.

WebAssembly.Instance()

Crear un nuevo objeto WebAssembly Instance.

WebAssembly.Memory()

Crear un nuevo objeto WebAssembly Memory.

WebAssembly.Table()

Crear un nuevo objeto WebAssembly Table.

WebAssembly.CompileError()

Crear un nuevo objeto WebAssembly CompileError.

WebAssembly.LinkError()

Crear un nuevo objeto WebAssembly LinkError.

WebAssembly.RuntimeError()

Crear un nuevo objeto WebAssembly RuntimeError.

Ejemplos

Después de obtener algún bytecode de WebAssembly usando la sentencia fetch, nosotros compilamos e instanciamos el módulo usando la función WebAssembly.instantiate() , importando una función de JavaScript en el WebAssembly Module en el proceso. Esta premisa resuelve a un objeto (result) que contenga un objeto Module compilado y un objeto Instance . Entonces tenemos una llamada a Exported WebAssembly function que es exportada por Instance.

js
var importObject = {
  imports: {
    imported_func: function (arg) {
      console.log(arg);
    },
  },
};

fetch("simple.wasm")
  .then((response) => response.arrayBuffer())
  .then((bytes) => WebAssembly.instantiate(bytes, importObject))
  .then((result) => result.instance.exports.exported_func());

Nota: Ver index.html en GitHub (view it live also) para un ejemplo que hace uso de la función fetchAndInstantiate().

Especificaciones

Specification
WebAssembly JavaScript Interface
# webassembly-namespace

Compatibilidad con navegadores

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.

Ver también