Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
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.
In this article
En pocas palabras
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 delgrupo de trabajo de WebAssembly del W3C y sugrupo comunitario con las participación activa de todos los principales fabricantes de navegadores.
Guías
- Conceptos de WebAssembly
Empieza leyendo los conceptos de alto nivel detrás de WebAssembly — qué es, por qué es tan útil, cómo encaja en la plataforma web (y más allá), y cómo usarlo.
- Compilar un nuevo módulo de C/C++ a WebAssembly
Al escribir código en C/C++, puedes compilarlo a .wasm usando una herramienta comoEmscripten. Veamos cómo funciona.
- Compilar un módulo existente de C a WebAssembly
Uno de los principales casos de uso para WebAssembly es tomar las librerías existentes del ecosistema de C y permitir que los desarrolladores los usen en la web.
- Compilar de Rust a WebAssembly
Si has escrito algo en Rust, ¡puedes compilarlo a WebAssembly! Este tutorial te enseña todo lo que necesitas saber para compilar un proyecto de Rust a wasm y usarlo en una aplicación web existente.
- Cargar y ejecutar código WebAssembly
Una vez que tengas un .wasm, este artículo cubre cómo recuperarlo, compilarlo e instanciarlo, combinando la API deWebAssembly de JavaScript con las APIsFetch oXHR.
- Usar la API WebAssembly de JavaScript
Una vez cargado el módulo .wasm, querrás usarlo. En este artículo te mostramos cómo usar WebAssembly mediante la API WebAssembly de JavaScript.
- Funciones exportadas de WebAssembly
Las funciones exportadas de WebAssembly son el reflejo en JavaScript de las funciones de WebAssembly que te permiten llamar código WebAssembly desde JavaScript. Este artículo las describe.
- Entendiendo el formato de texto WebAssembly
Este artículo explica el formato de texto wasm. Esta es la representación textual de bajo nivel de un módulo .wasm, mostrada en las herramientas de desarrollador del navegador al depurar.
- Convertir el formato de texto WebAssembly a wasm
Este artículo provee una guía para convertir un módulo de WebAssembly escrito en su formato de texto a un binario .wasm.
Referencia de la API
WebAssemblyEste objeto sirve como espacio de nombres para toda funcionalidad relacionada a WebAssembly.
WebAssembly.Global()El objeto
WebAssembly.Globalrepresenta una instancia variable global, accesible desde JavaScript e importable/exportable a través de una o más instancias deWebAssembly.Module. Esto permite el enlace dinámico de varios módulos.WebAssembly.Module()El objeto
WebAssembly.Modulecontiene código WebAssembly sin estado que ha sido ya compilado por el navegador y puede sercompartido con workers e instanciado varias veces.WebAssembly.Instance()Un objeto
WebAssembly.Instancees una instancia ejecutable y con estado de unModule. Los objetosInstancecontienen todas lasfunciones exportadas de WebAssembly que permiten llamar a código WebAssembly desde JavaScript.WebAssembly.instantiateStreaming()La función
WebAssembly.instantiateStreaming()es la principal API para compilar e instanciar código WebAssembly, retornando tanto unModulecomo su primeraInstance.WebAssembly.Memory()Un objeto
WebAssembly.Memoryes unArrayBufferredimensionable que contiene los bytes de memoria accedidos por unaInstance.WebAssembly.Table()Un objeto
WebAssembly.Tablees un arreglo tipado redimensionable de valores opacos, como referencias a funciones, que son accedidos por unaInstance.WebAssembly.CompileError()Crea un nuevo objeto
CompileErrorde WebAssembly.WebAssembly.LinkError()Crea un nuevo objeto
LinkErrorde WebAssembly.WebAssembly.RuntimeError()Crea un nuevo objeto
RuntimeErrorde WebAssembly.
Ejemplos
- WASMSobel
- Consulta nuestro repositoriowebassembly-examples para ver otros ejemplos.