Solod (So) is a strict subset of Go that translates to regular C.
So supports structs, methods, interfaces, slices, maps, multiple returns, and defer. Everything is stack-allocated by default; heap is opt-in through the standard library. There is limited support for generics, and concurrency is provided by the standard library instead of being built into the language.
So is for Go developers who want systems-level control without learning a new language. And for C programmers who like Go's safety, structure, and tooling.
Here's some Go code in a file main.go.
Click Run to execute it, or Translate to see the
generated C code (main.h + main.c).
package main
import (
"solod.dev/so/conc"
"solod.dev/so/mem"
"solod.dev/so/sync/atomic"
)
// Account is a thread-safe money account.
type Account struct {
Balance atomic.Int64
}
// Deposit adds an amount to the balance.
func (a *Account) Deposit(amount int64) {
a.Balance.Add(amount)
}
// pay deposits $10 into the shared account.
func pay(arg any) {
acc := arg.(*Account)
acc.Deposit(10)
}
func main() {
var acc Account
// Run 100 payments across 4 worker threads.
opts := conc.PoolOptions{NumThreads: 4}
pool := conc.NewPool(mem.System, opts)
defer pool.Free()
for range 100 {
pool.Go(pay, &acc)
}
pool.Wait()
println("balance is", acc.Balance.Load())
}
Even though So isn't ready for production yet, I encourage you to try it out on a hobby project or just keep an eye on it if you like the concept.
Installation and usage to work with So locally.
Language and standard library guides for a quick overview.
So by example for a hands-on introduction.
Source code to see the internals or contribute.
As of July 2026, So is in active development. The latest release is 0.2, which adds support for networking, WebAssembly, and freestanding mode. The next release, 0.3, will add concurrency support.
If you have any questions, feel free to reach out on GitHub.
🧑💻 Anton Zhiyanov