Solod (So) is a strict subset of Go that translates to regular C.
Highlights:
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. To keep things simple, there are no channels, goroutines, closures, or generics.
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/time"
type Person struct {
Name string
Age int
Nums [3]int
}
func (p *Person) Sleep() int {
p.Age += 1
return p.Age
}
func main() {
p := Person{Name: "Alice", Age: 30}
p.Sleep()
println(p.Name, "is now", p.Age, "years old.")
p.Nums[0] = 42
println("1st lucky number is", p.Nums[0])
year := time.Now().Year()
println("The year is", year)
}
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 • Language tour • Standard library • So by example • Benchmarks • Source code
As of April 2026, So is in active development. The core language features are finished, and now I'm working on porting the first part of the Go standard library.
✗ bufio ✓ fmt ✓ os ✓ strings
✓ bytes ✓ io ✗ rand ✓ strconv
✗ filepath ✗ maps ✗ slices ✓ time
✗ flag ✓ math ✗ slog ✓ unicode
If you have any questions, feel free to reach out on GitHub.
🧑💻 Anton Zhiyanov