Runtime independiente de WebAssembly basado en el generador de código Cranelift, con compatibilidad con WASI e integración en varios lenguajes.
zion-sati/NetWasm
Compilador de C# y .NET CIL a WebAssembly, con CoreLib, runtime y SDK propios, que genera componentes WASI Preview 2 pequeños y autónomos.
- Estrellas
- 233
- Forks
- 7
- Issues abiertos
- 6
- Último commit
- hace 2 horas
¿Qué es?
NetWasm compila C# y .NET CIL directamente a WebAssembly con su propio compilador, CoreLib, runtime y SDK, sin incluir el CLR de escritorio, Mono ni archivos DLL de la aplicación. El compilador parte del código alcanzable del programa y enlaza solo el soporte del runtime que necesita, por lo que el resultado es un componente WASI Preview 2 autónomo que ejecuta un host de Wasm como Wasmtime; para la compilación se usa el CLI habitual de dotnet.
El proyecto está dirigido a desarrolladores que quieren binarios de C# pequeños y aislados, por ejemplo, para funciones serverless o módulos de navegador. Ofrece tres estrategias de recolección de basura (Compact de forma predeterminada, NetWasmGC y Bump), publica las exportaciones de C# como módulos JavaScript tipados que pueden ejecutarse en un Web Worker y genera bindings de C# a partir de WIT. La compatibilidad abarca un subconjunto definido de .NET: no incluye reflexión en runtime, dynamic, carga de ensamblados en runtime ni threading administrado, y el proyecto aún es anterior a la versión 1.0.
Funciones clave
- 01Compila C# y .NET CIL directamente en componentes WASI Preview 2 autónomos.
- 02Enlaza solo el código alcanzable y el soporte de runtime necesario para mantener los binarios pequeños.
- 03Ofrece las estrategias de recolección de basura Compact, NetWasmGC y Bump.
- 04Publica las exportaciones de C# como módulos JavaScript tipados, también para su uso en Web Workers.
- 05Genera bindings de C# a partir de WIT y admite interoperabilidad nativa con archivos .a estáticos.
- 06Compila y ejecuta pruebas mediante el CLI estándar de dotnet.
Casos de uso
- Distribuir funciones de C# pequeñas para ejecutarlas en un host de WebAssembly o un runtime serverless.
- Ejecutar lógica de C# en una página del navegador o en un Web Worker como módulo JavaScript tipado.
- Crear bibliotecas portátiles de C# dirigidas tanto a NetWasm como a .NET de escritorio.
- Evaluar C# como alternativa compacta en Wasm frente a compilaciones más grandes de Blazor WebAssembly.
Inicio rápido
- 1
Instala .NET SDK 10.0.303 o una versión posterior
- 2
Instala las plantillas de proyecto de NetWasm
dotnet new install NetWasm.Templates - 3
Crea una nueva aplicación de NetWasm y ejecútala
dotnet new netwasm-app -n HelloNetWasm - 4
Publica la aplicación como un componente WASI independiente
dotnet publish -c Release -o publish/local
Antes de usarlo
- NetWasm aún es anterior a la versión 1.0, por lo que los contratos de código fuente, paquetes y ABI pueden cambiar entre versiones menores.
- No se admiten la reflexión en tiempo de ejecución, dynamic, la carga de ensamblados en tiempo de ejecución ni los subprocesos administrados.
- Las API generales para archivos, directorios, sockets y subprocesos secundarios aún no están implementadas.
- Para ejecutar el componente publicado se necesita un host de WebAssembly, como Wasmtime.
Temas
Preguntas frecuentes
- ¿Qué es NetWasm?
- Compilador de C# y .NET CIL a WebAssembly, con CoreLib, runtime y SDK propios, que genera componentes WASI Preview 2 pequeños y autónomos. NetWasm compila C# y .NET CIL directamente a WebAssembly con su propio compilador, CoreLib, runtime y SDK, sin incluir el CLR de escritorio, Mono ni archivos DLL de la aplicación. El compilador parte del código alcanzable del programa y enlaza solo el soporte del runtime que necesita, por lo que el resultado es un componente WASI Preview 2 autónomo que ejecuta un host de Wasm como Wasmtime; para la compilación se usa el CLI habitual de dotnet.
- ¿NetWasm es gratuito? ¿Qué licencia tiene?
- NetWasm es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿NetWasm sigue mantenido?
- Mantenimiento activo. El último commit de NetWasm fue el 22 oct 2026.
- ¿Para qué puedo usar NetWasm?
- Distribuir funciones de C# pequeñas para ejecutarlas en un host de WebAssembly o un runtime serverless. Ejecutar lógica de C# en una página del navegador o en un Web Worker como módulo JavaScript tipado. Crear bibliotecas portátiles de C# dirigidas tanto a NetWasm como a .NET de escritorio. Evaluar C# como alternativa compacta en Wasm frente a compilaciones más grandes de Blazor WebAssembly.
- ¿Cómo se instala NetWasm?
- Instala .NET SDK 10.0.303 o una versión posterior Instala las plantillas de proyecto de NetWasm: dotnet new install NetWasm.Templates Crea una nueva aplicación de NetWasm y ejecútala: dotnet new netwasm-app -n HelloNetWasm Publica la aplicación como un componente WASI independiente: dotnet publish -c Release -o publish/local
- ¿Dónde consigo NetWasm?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/zion-sati/NetWasm
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.
Un compilador experimental de TypeScript y JavaScript que convierte programas en ejecutables nativos o WebAssembly, sin necesitar Node.js en tiempo de ejecución.
Un runtime de WebAssembly y CLI para ejecutar aplicaciones y código de agentes de IA en entornos rápidos, ligeros y aislados.
Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.
Lenguaje similar a TypeScript y compilador que convierte un subconjunto tipado de TypeScript en módulos WebAssembly.