Solod – A Subset of Go That Translates to C
TheWiggles
83 points
20 comments
April 07, 2026
Related Discussions
Found 5 related stories in 67.2ms across 3,752 title embeddings via pgvector HNSW
- Solod: Go can be a better C ibobev · 23 pts · March 22, 2026 · 76% similar
- Lisette a little language inspired by Rust that compiles to Go jspdown · 257 pts · April 05, 2026 · 49% similar
- Sky – an Elm-inspired language that compiles to Go whalesalad · 148 pts · April 06, 2026 · 47% similar
- Go on Embedded Systems and WebAssembly uticus · 142 pts · April 03, 2026 · 45% similar
- Go Naming Conventions: A Practical Guide begoon · 20 pts · March 27, 2026 · 45% similar
Discussion Highlights (10 comments)
Retr0id
I don't really "get" the sweet-spot being targeted here. You don't get channels, goroutines, or gc, so aside from syntax and spatial memory safety you're not really inheriting much from Go. There is also no pathway to integrate with existing Go libraries. Spatial memory safety is nice but it's the temporal safety that worries me most, in nontrivial C codebases.
tidwall
"To keep things simple, there are no channels, goroutines, closures, or generics." I wonder if it could be integrated with https://github.com/tidwall/neco , which has Go-like coroutines, channels, and synchronization methods.
MYEUHD
Related and currently on the front page: https://news.ycombinator.com/item?id=47627595
Onavo
Does it work with the preprocessor?
MegagramEnjoyer
This is a bit too barebones. At least bring goroutines dude
remywang
Anton also wrote the fantastic codapi [1] for embedding executable code snippets with wasm [1]: https://codapi.org/
ridiculous_fish
I was curious how defer is implemented. `defer` in Go is famously function-scoped, not lexically-scoped. This means that the number of actively-deferred statements is unbounded, which implies heap allocation. The answer is that Solod breaks with Go semantics here: it just makes defer block-scoped (and unavailable in for/if blocks, which I don't quite get). https://github.com/solod-dev/solod/blob/main/doc/spec.md#def...
0xmrpeter
The claim that no goroutines makes this pointless isn't quite right. Migrated 50 services off Docker Compose using Nomad and half of them had zero concurrency needs. A safe Go-syntax C target is actually useful for that layer.
numlock86
> So supports structs, methods, interfaces, slices, multiple returns, and defer. > To keep things simple, there are no channels, goroutines, closures, or generics. Sure, slices and multiple return values are nice, but it's not what makes Go good. When people think about Go they usually think about channels and goroutines. YMMV While I do kind of get what the appeal and target audience is supposed to be, I absolutely don't get why you'd choose a subset and still have it behave differently than the Go counterpart. For me that destroys the whole purpose of the project.
vaughan
We need this for TypeScript.