HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
zion-sati
NetWasm
C#2026–2026
zion-sati / NetWasm

NetWasm

Compile C# and .NET CIL to small standalone Wasm with WASI (AOT with built-in Runtime and Precise GC)

4Distinct people
4Mentions
0Explicit recommenders
334GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Compile C# and .NET CIL to small standalone Wasm with WASI (AOT with built-in Runtime and Precise GC)

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by day4 dated mentions

Observed mentions: 2026-09-29 13:09:27 UTC to 2026-10-21 10:24:37 UTC.

0122026-09-29 00:00:00 UTC to 2026-09-30 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsSep 292026-09-30 00:00:00 UTC to 2026-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-01 00:00:00 UTC to 2026-10-02 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-02 00:00:00 UTC to 2026-10-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-03 00:00:00 UTC to 2026-10-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-04 00:00:00 UTC to 2026-10-05 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-05 00:00:00 UTC to 2026-10-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-06 00:00:00 UTC to 2026-10-07 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-07 00:00:00 UTC to 2026-10-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-08 00:00:00 UTC to 2026-10-09 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-09 00:00:00 UTC to 2026-10-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-10 00:00:00 UTC to 2026-10-11 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsOct 102026-10-11 00:00:00 UTC to 2026-10-12 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-12 00:00:00 UTC to 2026-10-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-13 00:00:00 UTC to 2026-10-14 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-14 00:00:00 UTC to 2026-10-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-15 00:00:00 UTC to 2026-10-16 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-16 00:00:00 UTC to 2026-10-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-17 00:00:00 UTC to 2026-10-18 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2026-10-18 00:00:00 UTC to 2026-10-19 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-19 00:00:00 UTC to 2026-10-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-20 00:00:00 UTC to 2026-10-21 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-10-21 00:00:00 UTC to 2026-10-22 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 commentsOct 21

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Sep 292026-09-29 00:00:00 UTC2026-09-30 00:00:00 UTC110
Sep 302026-09-30 00:00:00 UTC2026-10-01 00:00:00 UTC000
Oct 12026-10-01 00:00:00 UTC2026-10-02 00:00:00 UTC000
Oct 22026-10-02 00:00:00 UTC2026-10-03 00:00:00 UTC000
Oct 32026-10-03 00:00:00 UTC2026-10-04 00:00:00 UTC000
Oct 42026-10-04 00:00:00 UTC2026-10-05 00:00:00 UTC000
Oct 52026-10-05 00:00:00 UTC2026-10-06 00:00:00 UTC000
Oct 62026-10-06 00:00:00 UTC2026-10-07 00:00:00 UTC000
Oct 72026-10-07 00:00:00 UTC2026-10-08 00:00:00 UTC000
Oct 82026-10-08 00:00:00 UTC2026-10-09 00:00:00 UTC000
Oct 92026-10-09 00:00:00 UTC2026-10-10 00:00:00 UTC000
Oct 102026-10-10 00:00:00 UTC2026-10-11 00:00:00 UTC000
Oct 112026-10-11 00:00:00 UTC2026-10-12 00:00:00 UTC000
Oct 122026-10-12 00:00:00 UTC2026-10-13 00:00:00 UTC000
Oct 132026-10-13 00:00:00 UTC2026-10-14 00:00:00 UTC000
Oct 142026-10-14 00:00:00 UTC2026-10-15 00:00:00 UTC000
Oct 152026-10-15 00:00:00 UTC2026-10-16 00:00:00 UTC000
Oct 162026-10-16 00:00:00 UTC2026-10-17 00:00:00 UTC000
Oct 172026-10-17 00:00:00 UTC2026-10-18 00:00:00 UTC110
Oct 182026-10-18 00:00:00 UTC2026-10-19 00:00:00 UTC000
Oct 192026-10-19 00:00:00 UTC2026-10-20 00:00:00 UTC000
Oct 202026-10-20 00:00:00 UTC2026-10-21 00:00:00 UTC000
Oct 212026-10-21 00:00:00 UTC2026-10-22 00:00:00 UTC211

What Hacker News says

4 sources
TFA did [0] the most important stuff for minimizing Rust binaries: release mode, LTO, strip, and abort on panic. But there is a lot more you can do if you really care about Rust binary size [1]: remove location details, purge the debug formatters, rebuild the standard library for size, abort with no error message at all, and nuttier stuff. [0]: https://github.com/zion-sati/NetWasm/blob/main/docs/size-and... [1]: https://github.com/johnthagen/min-sized-rust
In C# now beats Rust on WASM size
zionsati·Sep 29, 2026Submission

Show HN: NetWasm – Independent .NET Compiler/Runtime (82.5 KB Hello World in C#)

I’ve been building NetWasm: an independent .NET compiler, CoreLib and runtime designed specifically for WebAssembly. It compiles Roslyn-generated CIL into standalone core WASM or WASI Preview 2 components - without shipping CoreCLR or Mono. A clean Release application containing Console.WriteLine(42) produces 82.5 KB of final WASM with WASI p2, including the runtime and precise garbage collector. Website: https://www.netwasm.com/ Playground: https://playground.netwasm.com/ The playground runs fully on the browser without a backend / cloud server compiling your code - it's all WASM! Locally, you use dotnet new, dotnet build, dotnet test, etc like you would normally. You can run the self-contained .wasm output with wasmtime, fully portable. GitHub repos: https://github.com/zion-sati/NetWasm https://github.com/zion-sati/NetWasm.Libraries Wha
Read the rest
t is it? It's CIL (used to be called MSIL - it's the dotnet bytecode in other words) to WASM compiler. But more than that it's intentionally not using Microsoft's Corelib. We avoid reflection, typename with full namespace strings etc where the resulting .wasm can end up bloated. The goal is to have C# (and later .NET in general - thus F# and VB.NET) be on equal footing as Kotlin/WASM. Note that Kotlin/WASM uses WasmGC, NetWasm uses BoehmGC in precise mode. NetWasm makes Wasm a first class target. Why NetWasm? I fell in love with C# in 2006 and have OSS attempts at building C#-like syntax using C++ template metaprogramming with BoehmGC a long time ago because I didn't like the idea of having a runtime pre-installed. This idea was revitalized when I tried to migrate my web UI framework FUI-RS to C# - the resulting smoke test was already a minimum of 1 MB Brotli compressed running in interpreter mode! FUI-RS (Rust) had it at under 50 KB uncompressed. What already works? C# 15, precise GC, finalization, exceptions, generics, virtual/interface dispatch, LINQ, tasks / value tasks (thus async-await), JSON, dependency injection, regex, XML, HTTP, WIT/WASI and TUnit (a modern source generated unit testing framework) etc. What's left to do? There's a roadmap to v1.0 on the repo's README - tl;dr there's a lot to do before we can get there, e.g. Expression trees, faster dev loops, threading, web workers, interop via libimport and globalization (opt-in just like NetWasm's implementation of timezone info). NuGet packages should be able to multitarget to support NetWasm as well as the full .NET as long as there's no reflection / typename involved. Licence: Runtime, CoreLib, templates and libraries: MIT Compiler and tooling: NetWasm Community License Note that NetWasm is pre-1.0 (currently v0.5) and evolving rapidly, so I'd appreciate any technical feedbacks from the community if you'd like to help me shape this project. Particularly, real WASI use cases people want supported, NuGet packages to multitarget (or even better if you're one of the popular open source packages and would like to start multitargeting).
6 points · Open discussion

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.