WASM GC (WebAssembly Garbage Collection) es una propuesta de extensión para WebAssembly (WASM) que añade soporte nativo para tipos de referencia y recolección de basura directamente en el conjunto de instrucciones de WASM. Tradicionalmente, lenguajes como Java, C# o Go que dependen de un Garbage Collector (GC) para la gestión de memoria debían compilar su propio runtime de GC dentro del módulo WASM, lo que resultaba en binarios más grandes y un rendimiento subóptimo. WASM GC estandariza la gestión de memoria para estos lenguajes, proporcionando un mecanismo de GC eficiente y compartido por el host, reduciendo la sobrecarga y mejorando la interoperabilidad.

La implementación de WASM GC está en progreso y ya se está viendo adopción en entornos experimentales y de desarrollo. Google Chrome, por ejemplo, ha habilitado WASM GC por defecto, permitiendo a los desarrolladores experimentar con la compilación de lenguajes como Dart, Kotlin/Wasm y Java (a través de herramientas como TeaVM o JWebAssembly) directamente a WASM con un GC nativo. Esto abre la puerta a ejecutar aplicaciones complejas de estos lenguajes en el navegador o en entornos server-side (como Wasmtime o Wasmer) con un rendimiento y tamaño de binario significativamente mejorados, sin la necesidad de un runtime de GC duplicado.

Para un arquitecto de sistemas, WASM GC es crucial porque amplía drásticamente el abanico de lenguajes que pueden ser eficientemente utilizados en el ecosistema WebAssembly. Permite la reutilización de código base existente en lenguajes como Java o C# en contextos WASM, facilitando la migración de aplicaciones empresariales o la creación de microservicios ligeros. La decisión de adoptar WASM GC implica evaluar el trade-off entre la madurez de la herramienta y los beneficios en tamaño de binario, rendimiento y la capacidad de aprovechar ecosistemas de lenguajes ricos. Reduce la complejidad de la gestión de memoria para lenguajes con GC, permitiendo a los equipos enfocarse más en la lógica de negocio y menos en optimizaciones de runtime, lo que es vital para arquitecturas de 'edge computing', serverless y aplicaciones web de alto rendimiento.