HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ncruces
wasm2go
Go2026–2026
ncruces / wasm2go

wasm2go

A Wasm to Go translator

2Distinct people
21Mentions
0Explicit recommenders
244GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A Wasm to Go translator

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

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 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 month21 dated mentions

Observed mentions: 2026-02-26 16:47:09 UTC to 2026-10-12 21:17:42 UTC.

0123452026-02-01 00:00:00 UTC to 2026-03-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 commentsFeb 20262026-03-01 00:00:00 UTC to 2026-04-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2026-04-01 00:00:00 UTC to 2026-05-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2026-05-01 00:00:00 UTC to 2026-06-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-06-01 00:00:00 UTC to 2026-07-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 commentsJun 20262026-07-01 00:00:00 UTC to 2026-08-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2026-08-01 00:00:00 UTC to 2026-09-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-09-01 00:00:00 UTC to 2026-10-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-10-01 00:00:00 UTC to 2026-11-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsOct 2026

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
Feb 20262026-02-01 00:00:00 UTC2026-03-01 00:00:00 UTC110
Mar 20262026-03-01 00:00:00 UTC2026-04-01 00:00:00 UTC514
Apr 20262026-04-01 00:00:00 UTC2026-05-01 00:00:00 UTC404
May 20262026-05-01 00:00:00 UTC2026-06-01 00:00:00 UTC202
Jun 20262026-06-01 00:00:00 UTC2026-07-01 00:00:00 UTC404
Jul 20262026-07-01 00:00:00 UTC2026-08-01 00:00:00 UTC101
Aug 20262026-08-01 00:00:00 UTC2026-09-01 00:00:00 UTC000
Sep 20262026-09-01 00:00:00 UTC2026-10-01 00:00:00 UTC303
Oct 20262026-10-01 00:00:00 UTC2026-11-01 00:00:00 UTC101

What Hacker News says

21 sources
Shameless plug: if you value Go, and CGO_ENABLED=0, and SQLite, and are worried about C in a web server and RCEs, may I interest you in my SQLite driver? https://github.com/ncruces/go-sqlite3 I just wrote up the security goals of the tool I use to translate C to Go: https://github.com/ncruces/wasm2go/blob/main/SECURITY.md I obviously can't make any promises, as it's just a personal pet project, but those are the goals, and they do catch memory corruption bugs in practice: https://sqlite.org/bugs/forumpost/543f94984b
In A Modern Web App in C
I just spent a week reviewing this ~200 LoC PR: https://github.com/ncruces/wasm2go/pull/37 It was submitted by a seasoned user, who probably asked a frontier LLM. It still felt… wrong. I didn't understand it, and I wouldn't merge it without understanding it. I also suspected it was wrong, in a way that would cause issues in the future. So I reviewed it 4 different ways: (1) try to understand/improve it; (2) do it with better algorithms; (3) avoid it by fixing the issue upstream; (4) rewrite it from scratch probably just to match my brain. I expected either (2) or (3) would be the answer. (2) didn't work, rather it's the correct answer but I need to redo the project from scratch to use it; (3) I wanted really bad to work, but didn't. So I got to a blend of (1) and (4). I'm still not entirely convinced, but now I understand the issue/soluti
Read the rest
on. I obviously think my approach is better. Still, I still stripped both of comments, and asked my LLM to review. The LLM came back and said the original one was clearly better. I explained why not, it then answered I was correct. If I try it with comments, LLMs say the mine is better. Because I found a real issue (one that I pointed at in the original comment thread). But is it saying mine is better because I coerced it to say so?
In AI demands more engineering discipline. Not less
I don't know that there was an inflection point. I know that, over the past year, they definitely became useful to me as more than auto complete. My most recent pet project is a transpiler from Wasm to Go, and I find it incredibly impressive that recent models (I've used Sonnet, Opus and Gemini, far more successfully than GPT), they're able to just pick up the project and work at all these levels: - Go code that implements the transpiler (parsing Wasm, building an AST) - Go code that gets generated by serializing the AST to a .go file - Go code that manipulates the AST (to optimize it), and its effect on the generated code - Go code that's grafted to the generated code (to implement more advanced opcodes) and how to interact with it from the AST - C code that gets compiled to Wasm, then translated to Go, then called by Go - Go code that g
Read the rest
ets called by this C code to implement a C stdlib - WAT and WAST files that are used to implement the Wasm spec tests I find this impressive because I have to think hard about all these levels, and I feel many programmers would have a problem with this. And it's very often way easier for me to just write: "I want to generate this code, build me the AST that does it", than go "count parenthesis" in the Go code (I do have some LISP experience; it's still easier). Feel free to scrutinize/criticize the code. Not vibe coded, but plenty of GenAI help. https://github.com/ncruces/wasm2go
In The last six months in LLMs in five minutes
Not very deep. Go generates large Wasm modules, because it bundles its goroutine scheduler, garbage collector and standard library into the module. Translating that back to Go will give you a pretty big Go file. Go is "known" for being fast to compile, but that huge Go file will take (at least?) as long to compile as compiling the Go toolchain does. wasm2go is best used on moderately sized modules (like SQLite). Last I heard, the person who tried to translate Perl got a 80MB Go file that was taking them 20min to compile. https://github.com/ncruces/wasm2go/discussions/15
In WASM is not quite a stack machine
Shameless plug… compiling it to Go is a great option too: https://github.com/ncruces/wasm2go I've used it to translate SQLite (with a few extensions) and, that I know of, it's been used (to varying degrees of success) to translate the MARISA trie library (C++), libghostty (Zig), zlib, Perl, and QuickJS. More on-topic, I use a mix of an unevaluated expression stack and a stack-to-locals approach to translate Wasm.
In WASM is not quite a stack machine

Showing the 15 most recent of 21 sources. Enable JavaScript to search and browse every indexed mention.

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.