O NetWasm é um compilador .NET independente, com biblioteca central, runtime e SDK, que compila C# e CIL do .NET diretamente para WebAssembly. Diferentemente de outras abordagens, ele não leva o CLR de desktop, o Mono, o dotnet.js nem as DLLs da aplicação para a produção, por isso os módulos resultantes são pequenos e independentes.
Em uma comparação medida com a mesma carga de trabalho print-42, o NetWasm com seu coletor de lixo preciso Compact produziu um componente WASI Preview 2 de 47.895 bytes. Uma build do Rust 1.95.0 otimizada para tamanho ficou em 53.635 bytes. Isso representa 10,7% a menos no tamanho bruto e 19,5% a menos com Brotli-11. O número do NetWasm reflete sua publicação Release padrão, enquanto a build do Rust acrescentou as configurações de tamanho documentadas do Cargo. O wasm-opt do Binaryen roda dentro do pipeline do NetWasm sem nada extra para instalar.
Em benchmarks de alocação e coleta de lixo, o NetWasm também rodou mais rápido que o Mono AOT, compilado a partir do mesmo código C# e executado no Wasmtime. O tempo total de transações caiu 26%, o tempo do grafo de objetos retidos caiu 38% e o tempo de churn da interface caiu 40%. Os valores são medianas de 15 execuções em um Apple M1 Max, e cada execução foi conferida com o resultado do .NET de desktop.
A linha de base de 46,7 KiB não é um limite. O NetWasm oferece suporte a C# 15, módulos JavaScript, Web Workers, interop estática com arquivos .a, componentes WIT e WASI P2, árvores de expressão, bibliotecas HTTP, JSON, XML e Regex, além de wasm64. Ele pode compilar, executar, publicar e testar projetos pela CLI comum do dotnet.
Fonte: Hacker News · Resumido por HeadlinesBriefing