--- title: WebAssembly slug: WebAssembly tags: - Aterrizaje - WebAssembly - wasm translation_of: WebAssembly ---
WebAssembly es un nuevo tipo de código que puede ser ejecutado en navegadores modernos — es un lenguaje de bajo nivel, similar al lenguaje ensamblador, con un formato binario compacto que se ejecuta con rendimiento casi nativo y provee un objetivo de compilación para lenguajes como C/C++ y Rust que les permite correr en la web. También está diseñado para correr a la par de JavaScript, permitiendo que ambos trabajen juntos.
WebAssembly tiene grandes implicaciones para la plataforma web — provee una forma de correr código escrito en múltiples lenguajes en la web a una velocidad casi nativa, con aplicaciones cliente corriendo en la web que anteriormente no podrían haberlo hecho.
WebAssembly esta diseñado para complementar y correr a la par de JavaScript — usando las APIs WebAssembly de JavaScript, puedes cargar módulos de WebAssembly en una aplicación JavaScript y compartir funcionalidad entre ambos. Esto te permite aprovechar el rendimiento y poder de WebAssembly y la expresividad y flexibilidad de JavaScript en las mismas aplicaciones, incluso si no sabes cómo escribir código WebAssembly.
Y lo mejor es que está siendo desarrollado como un estándar web a través del grupo de trabajo de WebAssembly del W3C y su grupo comunitario con las participación activa de todos los principales fabricantes de navegadores.
WebAssembly.Global representa una instancia variable global, accesible desde JavaScript e importable/exportable a través de una o más instancias de {{jsxref("WebAssembly.Module")}}. Esto permite el enlace dinámico de varios módulos.WebAssembly.Module contiene código WebAssembly sin estado que ha sido ya compilado por el navegador y puede ser compartido con workers e instanciado varias veces.WebAssembly.Instance es una instancia ejecutable y con estado de un Module. Los objetos Instance contienen todas las funciones exportadas de WebAssembly que permiten llamar a código WebAssembly desde JavaScript.WebAssembly.instantiateStreaming() es la principal API para compilar e instanciar código WebAssembly, retornando tanto un Module como su primera Instance.WebAssembly.Memory es un {{jsxref("Global_objects/ArrayBuffer", "ArrayBuffer")}} redimensionable que contiene los bytes de memoria accedidos por una Instance.WebAssembly.Table es un arreglo tipado redimensionable de valores opacos, como referencias a funciones, que son accedidos por una Instance.CompileError de WebAssembly.LinkError de WebAssembly.RuntimeError de WebAssembly.| Especificación | Estado | Comentarios |
|---|---|---|
| {{SpecName('WebAssembly JS')}} | {{Spec2('WebAssembly JS')}} | Borrador inicial de la definición de la API de JavaScript. |
{{Compat("javascript.builtins.WebAssembly")}}