HeadlinesBriefing HeadlinesBriefing.com

NetWasm : du C# vers un Wasm autonome et léger avec WASI

Hacker News •
×

NetWasm est un compilateur .NET indépendant, une bibliothèque de base, un runtime et un SDK qui compilent directement C# et le CIL de .NET en WebAssembly. Contrairement à d'autres approches, il n'embarque pas en production le CLR de bureau, Mono, dotnet.js ni les DLL d'application, de sorte que les modules obtenus restent légers et autonomes.

Dans une comparaison mesurée sur la même charge de travail print-42, NetWasm avec son ramasse-miettes précis Compact a produit un composant WASI Preview 2 de 47 895 octets. Une compilation Rust 1.95.0 optimisée pour la taille atteint 53 635 octets. Soit 10,7 % de moins en brut et 19,5 % de moins avec Brotli-11. Le chiffre de NetWasm correspond à sa publication Release par défaut, tandis que la compilation Rust a ajouté les réglages de taille documentés de Cargo. Le wasm-opt de Binaryen s'exécute dans le pipeline de NetWasm sans rien d'autre à installer.

Sur les benchmarks d'allocation et de ramasse-miettes, NetWasm a également été plus rapide que Mono AOT, compilé à partir du même code C# et exécuté sous Wasmtime. Le temps total des transactions a baissé de 26 %, le temps du graphe d'objets conservés de 38 % et le temps de rotation de l'interface de 40 %. Les chiffres sont les médianes de 15 exécutions sur un Apple M1 Max, chaque exécution ayant été vérifiée par rapport au résultat du .NET de bureau.

La base de 46,7 Kio n'est pas une limite. NetWasm prend en charge C# 15, les modules JavaScript, les Web Workers, l'interopérabilité statique avec des fichiers .a, les composants WIT et WASI P2, les arbres d'expressions, les bibliothèques HTTP, JSON, XML et Regex, ainsi que wasm64. Il peut compiler, exécuter, publier et tester des projets avec la CLI dotnet habituelle.

Source: Hacker News · Résumé par HeadlinesBriefing