April 6, 2026

Go in, C out, drama all around

Solod – A Subset of Go That Translates to C

Go without the “go”? Devs split as Solod turns Go into C

TLDR: Solod lets developers write a restricted form of Go that compiles into plain C with no runtime. The community is split: some praise the clean syntax, C interoperability, and familiar tooling, while others slam the missing goroutines and garbage collection, worry about memory bugs, and ask if add-ons like neco can fill the gaps.

Meet Solod, the bold new tool that promises “Go in, C out” — no garbage collector, no hidden magic, just manual memory and readable C on the other side. The pitch: keep Go’s clean syntax and safety checks, then ship pure C11 for systems work. The crowd? Absolutely divided.

Skeptics showed up first. One commenter sighed, “I don’t really ‘get’ the sweet-spot,” pointing out that without Go’s famous superpowers — goroutines (easy concurrency), channels (message passing), and GC (automatic memory cleanup) — it’s basically Go’s look with C’s chores. Another worry: safety. Folks explained that while Solod helps with “spatial safety” (keeping you inside boundaries), it doesn’t fix “temporal safety,” the nightmare where you use memory after it’s freed. Translation: the hard bugs are still on you.

But the hackers came with ideas. tidwall wondered if Solod could pair with his neco library to bolt on Go-like coroutines and channels. Pragmatists asked if it plays nice with the C preprocessor (macros, anyone?). Meanwhile, one fan linked a related HN thread, igniting the “which tool is better?” side quest.

And the memes? Everywhere. “Go without the go,” “Go in, C out, feelings mixed,” and “No runtime, no fun?” were the vibe. Some love the promise of native C interop and using familiar Go tools (even go test!), others say it’s just too barebones. Is Solod a clever bridge between two worlds — or a no-go without goroutines?

Key Points

  • Solod (So) is a strict subset of Go that transpiles to readable C11 with zero runtime and manual memory management.
  • By default, So performs stack allocation; heap allocation is opt-in via the So standard library.
  • Supported features include structs, methods, interfaces, slices, multiple returns, and defer; channels, goroutines, closures, and generics are not supported.
  • So provides native C interop in both directions without cgo and integrates with Go tooling (e.g., LSP, go test).
  • Developers install a So CLI, use So packages, and can translate, build, and run via commands; output relies on some GCC/Clang extensions.

Hottest takes

I don't really "get" the sweet-spot being targeted here. — Retr0id
Does it work with the preprocessor? — Onavo
This is a bit too barebones. At least bring goroutines dude — MegagramEnjoyer
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.