WebAssembly - Introducción
WebAssembly también se llama WASM y se introdujo por primera vez en el año 2017. Las grandes empresas de tecnología detrás del origen de WebAssembly son Google, Apple, Microsoft, Mozilla y W3C.
El rumor es que WebAssembly reemplazará a Javascript debido a su ejecución más rápida, pero ese no es el caso. WebAssembly y Javascript están destinados a trabajar juntos para resolver los problemas complejos.
Necesidad de WebAssembly
Hasta ahora, solo tenemos Javascript que puede funcionar correctamente dentro del navegador. Hay tareas muy pesadas que son difíciles de realizar en los navegadores que utilizan javascript.
Por nombrar algunos son reconocimiento de imágenes, aplicaciones de diseño asistido por computadora (CAD), aumento de video en vivo, realidad virtual y aumentada, aplicaciones de música, visualización y simulación científica, juegos, edición de imágenes / videos, etc.
WebAssembly es un nuevo lenguaje con instrucción binaria que puede cargarse y ejecutarse más rápido. La tarea mencionada anteriormente se puede realizar fácilmente en lenguajes de alto nivel como C, C ++, Rust, etc. Necesitamos una forma de que el código que tenemos en C, C ++, Rust se pueda compilar y usar en navegadores web. Lo mismo se puede lograr con WebAssembly.
Cuando el código de WebAssembly se carga dentro del navegador. Luego, el navegador se encarga de convertir a un formato de máquina que pueda ser entendido por los procesadores.
Para javascript, el código debe descargarse, analizarse y convertirse a formato de máquina. Se dedica mucho tiempo y las tareas pesadas como las que mencionamos anteriormente pueden ser muy lentas.
Trabajo de WebAssembly
Los lenguajes de alto nivel como C, C ++ y Rust se compilan en formato binario, es decir, .wasm y formato de texto .wat.
El código fuente escrito en C, C ++ y Rust se compila para .wasmusando un compilador. Puede utilizar el SDK de Emscripten para compilar C / C ++ para.wasm.
El flujo es el siguiente:
El código C / C ++ se puede compilar para .wasmutilizando Emscripten SDK. Más tarde, el.wasm El código se puede usar con la ayuda de javascript en su archivo html para mostrar la salida.
Conceptos clave de WebAssembly
Los conceptos clave se explican a continuación:
Módulo
Un módulo es un objeto compilado por el navegador en un código de máquina ejecutable. Se dice que un módulo no tiene estado y se puede compartir entre Windows y trabajadores web.
Memoria
Memory in WebAssembly, es una arraybufferque contiene los datos. Puede asignar memoria utilizando la API de Javascript WebAssembly.memory ().
Mesa
La tabla en WebAssembly es una matriz con tipo, es decir, fuera de la memoria de WebAssembly y en su mayoría tiene una referencia a funciones. Almacena la dirección de memoria de las funciones.
Ejemplo
La instancia es un objeto que tendrá todas las funciones exportadas que se pueden llamar desde javascript para ejecutarse dentro del navegador.