NetWasm es una cadena de herramientas independiente diseñada para compilar C# y el Common Intermediate Language (CIL) de .NET directamente en componentes de WebAssembly (Wasm) y WebAssembly System Interface (WASI). A diferencia de las implementaciones estándar de .NET WebAssembly, NetWasm no incluye el Common Language Runtime (CLR) de escritorio, Mono o DLLs de aplicaciones grandes en el artefacto de producción. En su lugar, utiliza un modelo de compilación de 'mundo cerrado' donde el compilador identifica el código alcanzable y enlaza solo el soporte de tiempo de ejecución específico requerido para la aplicación. Este enfoque le permite producir componentes WASI Preview 2 independientes que incluyen un tiempo de ejecución integrado y un recolector de basura Compact preciso.
En una prueba de rendimiento específica que compara una carga de trabajo de 'imprimir 42', NetWasm produjo un componente Wasm puro de 47,895 bytes. Esto superó a un binario de Rust 1.95.0 compilado con un perfil orientado al tamaño, que midió 53,635 bytes. Cuando se comprimió utilizando Brotli-11, el artefacto de NetWasm bajó a 13,660 bytes, mientras que el binario de Rust permaneció más grande con 16,963 bytes. El proyecto logra estos resultados mediante la especialización de genéricos, el uso de contratos conocidos para JSON e inyección de dependencias en lugar de descubrimiento en tiempo de ejecución, y la exclusión de funciones de tiempo de ejecución amplias como la carga dinámica de ensamblados o la palabra clave 'dynamic' del perfil.
Este gráfico visualiza los resultados específicos de la prueba de rendimiento donde NetWasm superó a Rust tanto en tamaños de binarios brutos como comprimidos.
Sin embargo, estos resultados representan una carga de trabajo específica y medida en lugar de una clasificación general de todo el lenguaje. El perfil de NetWasm está deliberadamente restringido; no admite APIs de sistema completas como sockets crudos o subprocesos, y excluye muchas funciones estándar de .NET como la globalización de cultura con nombre y el hilo gestionado. Además, aunque NetWasm reduce significativamente la huella en comparación con el estándar Blazor WebAssembly —que puede superar los 15 megabytes para cargas de trabajo similares— sigue siendo una plataforma especializada. El proyecto se encuentra actualmente en un estado previo a la versión 1.0, con una hoja de ruta centrada en expandir la cobertura de WASI Preview 2 y mejorar el ciclo de desarrollo incremental antes de alcanzar un lanzamiento estable de la versión 1.0.
Esta figura ilustra la reducción masiva de tamaño lograda por NetWasm en comparación con la implementación estándar de Blazor WebAssembly de .NET.