NetWasm es un compilador de .NET, biblioteca central, runtime y SDK independientes que compila C# y .NET CIL directamente a WebAssembly. A diferencia de otros enfoques, no lleva el CLR de escritorio, Mono, dotnet.js ni las DLL de aplicación a producción, por lo que los módulos resultantes son pequeños e independientes.
En una comparación medida con la misma carga de trabajo print-42, NetWasm con su recolector de basura preciso Compact produjo un componente WASI Preview 2 de 47.895 bytes. Una compilación de Rust 1.95.0 optimizada para tamaño alcanzó los 53.635 bytes. Eso supone un 10,7 % menos en bruto y un 19,5 % menos con Brotli-11. La cifra de NetWasm refleja su publicación Release predeterminada, mientras que la compilación de Rust añadió la configuración de tamaño documentada de Cargo. El wasm-opt de Binaryen se ejecuta dentro del pipeline de NetWasm sin necesidad de instalar nada más.
En benchmarks de asignación y recolección de basura, NetWasm también funcionó más rápido que Mono AOT, compilado desde el mismo código C# y ejecutado con Wasmtime. El tiempo total de transacciones bajó un 26 %, el tiempo del grafo de objetos retenidos un 38 % y el tiempo de rotación de la interfaz de usuario un 40 %. Las cifras son medianas de 15 ejecuciones en un Apple M1 Max, y cada ejecución se verificó frente al resultado de .NET de escritorio.
La línea base de 46,7 KiB no es un límite. NetWasm admite C# 15, módulos de JavaScript, Web Workers, interoperación estática con .a, WIT y componentes WASI P2, árboles de expresiones, las bibliotecas HTTP, JSON, XML y Regex, y wasm64. Puede compilar, ejecutar, publicar y probar proyectos mediante la CLI habitual de dotnet.
Fuente: Hacker News · Resumido por HeadlinesBriefing