Repolode
zion-sati

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. 1

    Instala .NET SDK 10.0.303 o una versión posterior

  2. 2

    Instala las plantillas de proyecto de NetWasm

    dotnet new install NetWasm.Templates
  3. 3

    Crea una nueva aplicación de NetWasm y ejecútala

    dotnet new netwasm-app -n HelloNetWasm
  4. 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