Analysis updated 2026-05-18
Run WebAssembly modules inside a .NET application without an external engine.
Build a NativeAOT-compiled app that needs to execute Wasm code without dynamic code generation.
Provide host functions from C# that a loaded WebAssembly module can call back into.
| nuskey8/dotwasm | aidotnet/codexswitch | minerd/cmdmanager | |
|---|---|---|---|
| Stars | 62 | 63 | 63 |
| Language | C# | C# | C# |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 2/5 | 3/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires .NET 10.0 or later and is still in alpha, so breaking changes are possible.
DotWasm is a WebAssembly runtime written entirely in C# for the .NET platform. WebAssembly is a binary instruction format that lets code written in many different languages run in a controlled, sandboxed environment. Normally associated with running code inside web browsers, WebAssembly has broader uses as a portable and secure execution format. A runtime like DotWasm is the engine that actually reads and runs those WebAssembly files. The library is available as a NuGet package, which is the standard way to add libraries to .NET projects. It is split into four focused packages: one for reading and parsing WebAssembly binary files, one for validating them, one for executing them, and one bundle that includes all three. You load a WebAssembly file, set up a store and a linker, and then call functions exported by the WebAssembly module from your C# code. You can also go the other direction and provide functions from your C# host code that the WebAssembly module can call. A notable design choice is that DotWasm does not use any dynamic code generation. This matters because some .NET deployment modes, called Native AOT, prohibit generating code at runtime for security or platform reasons. By avoiding that approach, DotWasm works in those restricted environments where other runtimes cannot. The tradeoff is performance. Without generating optimized machine code at runtime, DotWasm is considerably slower than runtimes that do, such as Wasmtime. A benchmark converting a small image to grayscale shows DotWasm taking about 550 times longer than Wasmtime. The README acknowledges this gap as a known issue planned for improvement before a stable release. The project currently supports nearly all WebAssembly proposals through version 3.0, with the exception of the Threads proposal and the Component Model proposal. It is in alpha and not yet recommended for production use. It requires .NET 10 or later and is released under the MIT license.
A WebAssembly runtime written entirely in C# for .NET, letting .NET apps load and run Wasm code directly.
Mainly C#. The stack also includes C#, .NET, WebAssembly.
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.