Inicio › Tecnología › WebAssembly
Formato binario portable y de bajo nivel diseñado para ejecutarse a velocidad cercana a la nativa dentro del navegador, y cada vez más también fuera de él, pensado como complemento de JavaScript y no como sustituto. Permite compilar código escrito en lenguajes como C, C++, Rust o Go a un módulo .wasm qué el navegador ejecuta en un entorno aislado con garantías de seguridad similares a las de JavaScript, pero con un rendimiento muy superior en tareas intensivas en cómputo, como edición de vídeo, simulaciones físicas, juegos o descompresión de archivos. Se ha extendido más allá del navegador gracias a runtimes independientes como Wasmtime o Wasmer, qué lo usan como formato ligero y portable para funciones serverless o plugins con aislamiento fuerte entre distintos módulos.
Es un formato qué permite ejecutar código muy rápido dentro del navegador, escrito originalmente en lenguajes como C++ o Rust en vez de JavaScript. Se usa para tareas pesadas qué JavaScript maneja peor, como editar vídeo o fotos directamente en la web, ejecutar videojuegos complejos, o adaptar programas de escritorio conocidos para qué funcionen en un navegador.
Una herramienta de edición de fotos qué antes requería instalar un programa de escritorio puede compilar su motor de procesamiento de imagen, escrito en C++, a WebAssembly y ejecutarlo directamente en el navegador con un rendimiento muy cercano al nativo, evitando subir cada imagen a un servidor para procesarla y devolverla, lo qué además mejora la privacidad al mantener el procesamiento en el propio dispositivo del usuario.
No, están pensados para complementarse: JavaScript sigue gestionando la interacción con la página y el DOM, mientras WebAssembly asume las partes de cómputo intensivo donde aporta una ventaja real de velocidad.
Los más habituales son C, C++ y Rust, aunque cada vez hay más soporte para compilar desde Go, C# o incluso Python a este formato mediante herramientas específicas de cada ecosistema.
Sí, corre dentro del mismo entorno aislado qué JavaScript, sin acceso directo al sistema de archivos ni a memoria fuera de su propio espacio asignado, salvo qué el propio navegador exponga una API explícita para ello.