Runtime independente de WebAssembly baseado no gerador de código Cranelift, com suporte a WASI e integração com aplicações em várias linguagens.
zion-sati/NetWasm
Compilador de C# e .NET CIL para WebAssembly, com CoreLib, runtime e SDK próprios, que gera componentes WASI Preview 2 autônomos e compactos.
- Estrelas
- 233
- Forks
- 7
- Issues abertas
- 6
- Último commit
- há 2 horas
O que é?
O NetWasm compila C# e .NET CIL diretamente para WebAssembly, usando seu próprio compilador, CoreLib, runtime e SDK, em vez de distribuir o CLR desktop, o Mono ou DLLs da aplicação. O compilador parte do código alcançável pelo programa e vincula apenas o suporte de runtime necessário. Assim, a saída é um componente WASI Preview 2 autossuficiente, executado por um host Wasm como o Wasmtime, enquanto o build usa a CLI padrão do dotnet.
O projeto é voltado a desenvolvedores que querem binários C# pequenos e isolados, por exemplo, para funções serverless ou módulos de navegador. Ele oferece três estratégias de garbage collector (Compact, padrão, NetWasmGC e Bump), publica exports de C# como módulos JavaScript tipados que podem ser executados em um Web Worker e gera bindings C# a partir de WIT. O suporte abrange um subconjunto definido do .NET: reflection em runtime, dynamic, carregamento de assemblies em runtime e threading gerenciado não são incluídos, e o projeto ainda está na versão pré-1.0.
Recursos principais
- 01Compila C# e .NET CIL diretamente em componentes WASI Preview 2 autônomos.
- 02Vincula apenas o código alcançável e o suporte de runtime necessário para manter os binários compactos.
- 03Oferece as estratégias de garbage collector Compact, NetWasmGC e Bump.
- 04Publica exports de C# como módulos JavaScript tipados, inclusive para uso em Web Workers.
- 05Gera bindings C# a partir de WIT e oferece suporte à interoperabilidade nativa com arquivos .a estáticos.
- 06Faz build e testes pela CLI padrão do dotnet.
Casos de uso
- Distribuir funções C# pequenas para um host WebAssembly ou runtime serverless.
- Executar lógica C# em uma página de navegador ou Web Worker como módulo JavaScript tipado.
- Criar bibliotecas C# portáveis que tenham como alvo tanto o NetWasm quanto o .NET desktop.
- Avaliar C# como uma alternativa Wasm compacta a builds maiores com Blazor WebAssembly.
Início rápido
- 1
Instale o .NET SDK 10.0.303 ou superior
- 2
Instale os modelos de projeto do NetWasm
dotnet new install NetWasm.Templates - 3
Crie um novo app NetWasm e execute-o
dotnet new netwasm-app -n HelloNetWasm - 4
Publique o app como um componente WASI independente
dotnet publish -c Release -o publish/local
Antes de usar
- O NetWasm ainda é anterior à versão 1.0, então os contratos de código-fonte, pacote e ABI podem mudar entre versões secundárias.
- Reflexão em tempo de execução, dynamic, carregamento de assemblies em tempo de execução e threading gerenciado não são compatíveis.
- As APIs gerais de arquivos, diretórios, sockets e subprocessos ainda não foram implementadas.
- O componente publicado precisa de um host WebAssembly, como o Wasmtime, para ser executado.
Tópicos
Perguntas frequentes
- O que é NetWasm?
- Compilador de C# e .NET CIL para WebAssembly, com CoreLib, runtime e SDK próprios, que gera componentes WASI Preview 2 autônomos e compactos. O NetWasm compila C# e .NET CIL diretamente para WebAssembly, usando seu próprio compilador, CoreLib, runtime e SDK, em vez de distribuir o CLR desktop, o Mono ou DLLs da aplicação. O compilador parte do código alcançável pelo programa e vincula apenas o suporte de runtime necessário. Assim, a saída é um componente WASI Preview 2 autossuficiente, executado por um host Wasm como o Wasmtime, enquanto o build usa a CLI padrão do dotnet.
- NetWasm é gratuito? Qual é a licença?
- NetWasm é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- NetWasm ainda é mantido?
- Manutenção ativa. O último commit de NetWasm foi em 22 de out. de 2026.
- Para que posso usar NetWasm?
- Distribuir funções C# pequenas para um host WebAssembly ou runtime serverless. Executar lógica C# em uma página de navegador ou Web Worker como módulo JavaScript tipado. Criar bibliotecas C# portáveis que tenham como alvo tanto o NetWasm quanto o .NET desktop. Avaliar C# como uma alternativa Wasm compacta a builds maiores com Blazor WebAssembly.
- Como instalar NetWasm?
- Instale o .NET SDK 10.0.303 ou superior Instale os modelos de projeto do NetWasm: dotnet new install NetWasm.Templates Crie um novo app NetWasm e execute-o: dotnet new netwasm-app -n HelloNetWasm Publique o app como um componente WASI independente: dotnet publish -c Release -o publish/local
- Onde consigo NetWasm?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/zion-sati/NetWasm
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando.
Um compilador experimental de TypeScript e JavaScript que transforma programas em executáveis nativos ou WebAssembly, sem exigir Node.js em tempo de execução.
Runtime WebAssembly e CLI para executar apps e código de agentes de IA em ambientes rápidos, leves e isolados.
Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.
Uma linguagem e um compilador semelhantes a TypeScript que transformam um subconjunto tipado de TypeScript em módulos WebAssembly.