AIO APEX

WebAssembly escapó del navegador. Aquí es donde realmente se está ejecutando en 2026.

Compartir:
WebAssembly escapó del navegador. Aquí es donde realmente se está ejecutando en 2026.

WebAssembly se introdujo en 2017 como una forma de ejecutar código compilado en navegadores a velocidades cercanas al nativo. En 2026, esa historia de origen es casi una nota al pie. La historia más interesante es lo que ha ocurrido fuera del navegador — Wasm se está ejecutando en funciones serverless, nodos de edge, sistemas de plugins y extensiones de bases de datos. El Component Model de Wasm y WASI 0.2 formalizaron esto en 2024, y el ecosistema ya se ha puesto completamente al día.

Un breve repaso: qué es realmente Wasm

WebAssembly es un formato de instrucciones binarias diseñado para ejecutarse en una máquina virtual aislada. Puede compilarse desde C, C++, Rust, Go, Swift, Kotlin y una lista cada vez mayor de otros lenguajes. Tres propiedades lo hacen singular:

  • Ejecución determinista — el mismo binario produce la misma salida en cada plataforma, cada vez.
  • Aislamiento de memoria — un módulo Wasm no tiene acceso directo al sistema operativo host, al sistema de archivos ni a la red a menos que se le otorgue explícitamente a través de una interfaz.
  • Portabilidad de arquitectura — el mismo binario .wasm se ejecuta en x86, ARM y RISC-V sin necesidad de recompilación.

En cuanto a tamaño, un módulo Wasm típico es de 10 a 100 veces más pequeño que una imagen de contenedor Docker equivalente. En cuanto al arranque, los runtimes de Wasm se inicializan en microsegundos — en comparación con los cientos de milisegundos o segundos que tardan los contenedores. Estas no son ventajas marginales; cambian lo que es económicamente viable en el edge.

WASI 0.2 y el Component Model — por qué importan

WASI (WebAssembly System Interface) es la API estandarizada que permite a los módulos Wasm interactuar con el mundo exterior — E/S de archivos, redes, relojes, aleatoriedad. WASI 0.1 era mínimo por diseño. WASI 0.2, ratificado en enero de 2024, añadió solicitudes y respuestas HTTP, sockets, primitivas criptográficas y, de forma crucial, el Component Model.

El Component Model define cómo se componen los módulos Wasm entre sí. Un componente en Rust puede llamar a un componente en Python usando una interfaz tipificada definida en WIT (Wasm Interface Types), con cero sobrecarga de FFI y fuertes garantías de tipos cruzando la frontera. Antes de esto, los módulos Wasm eran unidades aisladas — útiles, pero no componibles. El Component Model es lo que convierte a Wasm en una plataforma real y no solo en un destino de compilación.

El resultado práctico: ahora puedes construir una aplicación Wasm componiendo componentes desarrollados de forma independiente, escritos en diferentes lenguajes, enlazados a nivel de interfaz en lugar de a nivel binario. Sin memoria compartida, sin pesadillas de compatibilidad de ABI.

Runtimes del lado del servidor: Wasmtime, Wasmer, WasmEdge

Tres runtimes se han consolidado como las opciones serias para Wasm en producción del lado del servidor:

  • Wasmtime (Bytecode Alliance, escrito en Rust): listo para producción, totalmente compatible con WASI 0.2, utilizado en producción por Fastly y Shopify. La implementación de referencia de la especificación Wasm.
  • Wasmer: soporta WASIX — un WASI extendido con syscalls de estilo POSIX que permite ejecutar más programas de estilo Unix sin modificaciones. También aloja imágenes Wasm compatibles con Docker a través del registro de Wasmer.
  • WasmEdge: un proyecto sandbox de la CNCF optimizado para cargas de trabajo de inferencia de IA. Ejecuta GGML y llama.cpp compilados a Wasm, lo que lo convierte en el runtime preferido para despliegues de IA en el edge donde Docker resulta demasiado pesado.

Más allá de los runtimes, Spin de Fermyon es un framework de microservicios construido de forma nativa sobre Wasm — esencialmente AWS Lambda pero con semántica de ejecución Wasm, componentes WASI 0.2 y sin problema de arranque en frío.

Edge compute: el caso de uso estrella

Si quieres entender por qué los proveedores de edge adoptaron Wasm antes que nadie, considera la economía: en el edge, ejecutas miles de funciones de clientes sobre infraestructura compartida, y necesitas aislamiento, arranque rápido y baja sobrecarga de memoria simultáneamente. Los contenedores resuelven el aislamiento pero fallan en tiempo de arranque y sobrecarga por función. Las VMs son peores. Wasm resuelve los tres problemas.

  • Cloudflare Workers usa V8 isolates con soporte completo de Wasm. Las funciones arrancan en menos de 1ms. Más de 2 millones de desarrolladores han desplegado código en Workers.
  • Fastly Compute utiliza Wasmtime con compilación AOT (ahead-of-time). El tiempo de arranque en frío es literalmente 0ms — el módulo ya es código nativo compilado cuando llega la solicitud. Una función en Rust compilada a Wasm se ejecuta dentro del 5–10% de la velocidad de ejecución nativa.
  • Vercel Edge Functions soporta módulos Wasm como ciudadanos de primera clase junto a JavaScript.

El modelo de sandbox es fundamental aquí: código no confiable proporcionado por el usuario se ejecuta sobre infraestructura de edge compartida sin la sobrecarga de contenedores porque las garantías de aislamiento de Wasm se aplican a nivel de máquina virtual, no a nivel de sistema operativo. No necesitas un espacio de nombres de kernel separado por cada inquilino.

Sistemas de plugins: extender sin compromisos

El problema tradicional de los plugins: quieres permitir que los usuarios extiendan tu plataforma, pero ejecutar código arbitrario del usuario dentro de tu proceso es un desastre de seguridad. Las opciones históricamente han sido: aislamiento mediante subprocesos (lento, complejo), un lenguaje de scripting personalizado (limitado), o simplemente aceptar el riesgo (malo). Wasm resuelve esto.

  • Extism es un sistema de plugins de código abierto construido sobre Wasm. Distribuyes un archivo .wasm como plugin; el host lo carga de forma segura en un entorno aislado con solo las interfaces que expones explícitamente. HashiCorp lo usa para plugins de Vault, Grafana para plugins de fuentes de datos, y varios motores de videojuegos lo usan para sistemas de mods.
  • Las Checkout UI Extensions de Shopify se ejecutan como módulos Wasm. El código proporcionado por los comerciantes se ejecuta dentro de la infraestructura de Shopify sin capacidad de exfiltrar datos ni acceder a sistemas fuera de la interfaz definida. Esto solo es viable porque el sandboxing de Wasm lo hace seguro por defecto.
  • Zed (el editor de código basado en Rust) usa Wasm para extensiones. No requiere runtime de Node.js, ni cadenas de dependencias de npm, ni gestión de procesos de extensión. Las extensiones se ejecutan aisladas en Wasm con una interfaz de host bien definida.

El patrón se generaliza: cualquier plataforma que acepte código proporcionado por el usuario puede reemplazar "riesgo de ejecución arbitraria de código" por "ejecución Wasm en una interfaz definida" y obtener seguridad, portabilidad y flexibilidad de lenguaje simultáneamente.

Extensiones de bases de datos

La extensión experimental pg_wasm de PostgreSQL permite funciones definidas por el usuario (UDFs) escritas en cualquier lenguaje que compile a Wasm. SingleStore soporta UDFs en Wasm en producción. La propuesta de valor es directa: escribe una UDF crítica de rendimiento en Rust, compílala a Wasm, despliégala sin recompilar el binario de la base de datos y sin necesidad de instalar una herramienta de Rust en el servidor de base de datos. El sandbox de Wasm también significa que una UDF con errores no puede corromper la memoria de la base de datos — se ejecuta en su propio espacio de memoria lineal.

Para cargas de trabajo analíticas, esto abre la puerta a agregaciones y transformaciones personalizadas de alto rendimiento que antes requerían extensiones en C o se escribían en un lento PL/pgSQL.

Inferencia de IA en Wasm

WasmEdge combinado con llama.cpp compilado a Wasm puede ejecutar inferencia de LLM en cualquier host WasmEdge. La sobrecarga comparada con la ejecución nativa es de aproximadamente un 15–25% — significativa, pero aceptable para muchos casos de uso. La recompensa es la portabilidad: el mismo binario Wasm se ejecuta en un servidor cloud x86, un nodo edge ARM o un dispositivo IoT RISC-V sin necesidad de recompilación.

Esto importa en contextos de IoT y IA en el edge embebido donde ejecutar Docker no es práctico debido a limitaciones de almacenamiento y memoria. Un modelo 7B cuantizado a 4 bits ejecutándose a través de WasmEdge en un dispositivo de edge es un patrón de despliegue real en 2026, no una demo.

Lo que Wasm todavía no puede hacer bien

Las limitaciones de Wasm son reales y vale la pena nombrarlas:

  • La ejecución multihilo está mejorando — la propuesta de threads y la memoria compartida están en la especificación — pero escribir Wasm multihilo correcto sigue siendo más difícil que la programación nativa con hilos, y el soporte de los runtimes varía.
  • Los lenguajes con recolección de basura (Go, Python, JavaScript) producen binarios Wasm más grandes porque el runtime del GC debe compilarse dentro. Un binario Wasm de Go típicamente ocupa entre 5 y 15MB. Esto está disminuyendo a medida que la integración del GC madura, pero es una realidad hoy.
  • La depuración en producción es más difícil que con código nativo. Los source maps ayudan, pero las trazas de pila en Wasm siguen siendo menos ergonómicas que la depuración nativa.
  • Las toolchains de Java y .NET siguen madurando. Java tiene backends experimentales de Wasm, y .NET tiene Blazor para Wasm en navegador, pero el .NET-to-Wasm del lado del servidor para casos de uso generales aún no está listo para producción.

Dónde desemboca todo esto

El origen de Wasm en el navegador fue una casualidad histórica — un host conveniente que proporcionaba sandboxing, una capa de interoperabilidad con JS y un entorno estandarizado. Lo que el navegador construyó realmente fue una unidad de ejecución universal, portable y aislada que resulta que también funciona en servidores, nodos de edge, bases de datos y hosts de plugins.

El Component Model finalmente le da a Wasm la semántica de composición para funcionar como una plataforma de software real — módulos con interfaces tipificadas, componibles sin memoria compartida ni complejidad de FFI. WASI 0.2 le dio el modelo de acceso al sistema para ser útil en contextos no relacionados con el navegador. Los runtimes y las herramientas se han puesto al día.

La pregunta ahora no es si Wasm será importante. Ya se está ejecutando en tu CDN, posiblemente en las extensiones de tu IDE, y cada vez más en tu base de datos. La pregunta es qué caso de uso lo hace imprescindible para tu stack — y para la mayoría de los equipos, ese momento está más cerca de lo que esperan.

Compartir:
WebAssembly escapó del navegador. Aquí es donde realmente se está ejecutando en 2026. | AIO APEX