Repolode
zion-sati

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

    Instale o .NET SDK 10.0.303 ou superior

  2. 2

    Instale os modelos de projeto do NetWasm

    dotnet new install NetWasm.Templates
  3. 3

    Crie um novo app NetWasm e execute-o

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