
WebAssembly in Action
Gerard Gallant
- Editorial
- Manning
- Año
- 2019
- Páginas
- ~448
- Nivel
- Básico
De qué trata
Introducción completa a WebAssembly en la que Gerard Gallant, que participó en el grupo comunitario de WebAssembly del W3C, explica qué es la tecnología, cómo funciona por dentro y cómo usarla para llevar código C y C++ al navegador con rendimiento casi nativo. Los ejemplos usan C++ y el kit de herramientas Emscripten en la versión de WebAssembly MVP vigente en 2019. Está pensado para desarrolladores que ya tienen nociones básicas de C o C++, JavaScript y HTML. No hace falta experiencia previa con compiladores ni con WebAssembly.
El libro se divide en cuatro partes. La primera presenta WebAssembly, la estructura interna de un módulo (secciones, importaciones y exportaciones, memoria lineal) y la creación del primer módulo con Emscripten, tanto con el JavaScript de apoyo que este genera como con la API JavaScript de WebAssembly directamente, usando Promises. La segunda muestra cómo reutilizar código C++ existente y cómo comunicar el módulo con JavaScript en ambas direcciones: llamadas a JavaScript desde C++ y uso de punteros a funciones. En la parte avanzada se tratan el enlazado dinámico de módulos en tiempo de ejecución (dlopen, dynamicLibraries y side modules), los hilos con web workers y pthreads, y la ejecución de módulos en Node.js. La última parte se dedica al formato de texto de WebAssembly (WAT), a la depuración en el navegador y a las pruebas automatizadas. Los apéndices cubren la instalación de herramientas, ccall, cwrap y las macros de Emscripten.
Es un libro muy práctico: cada capítulo construye ejemplos que se pueden ejecutar y termina con ejercicios, cuyas soluciones están en un apéndice. Su punto fuerte es explicar con calma la frontera entre JavaScript y WebAssembly: el manejo de memoria, el paso de cadenas y las llamadas en ambos sentidos. Esa parte suele ser la más confusa para quien empieza. Conviene saber que se centra en C++ y Emscripten, así que no enseña Rust ni AssemblyScript, y que es anterior a WASI, al component model y a extensiones como el GC o las excepciones nativas. Algunas opciones de Emscripten han cambiado desde entonces, pero los fundamentos siguen siendo válidos.
- WebAssembly
- C++
- Emscripten
- API JavaScript de WebAssembly
- Interoperabilidad con JavaScript
- Enlazado dinámico
- Web workers
- pthreads
- Node.js
- Formato de texto WAT
- Depuración
- Pruebas
¿Cómo enseña?
Teoría + práctica
- ✓ Incluye ejercicios
- ✓ Incluye proyectos
Proyectos
Validación de formularios con código C++ reutilizado
Una lógica de validación escrita en C++ se compila a WebAssembly con Emscripten y se usa desde la página web mediante JavaScript, para mostrar cómo aprovechar código nativo existente en el navegador.
Juego programado en formato de texto WebAssembly
En la parte de depuración se construye a mano un pequeño juego en formato de texto (WAT), que luego se integra con JavaScript y HTML y sirve para practicar la depuración de módulos.

