Solod: Go can be a better C

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.

Playground

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)
}

Getting started

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 usageLanguage tourStandard librarySo by exampleBenchmarksSource code

Current status  v0.1 released

As of May 2026, So is in active development. The core language features are finished, the first part of the Go standard library is ported, and the v0.1 release is out.

✓ bufio    ✓ io      ✓ path      ✓ strings
✓ bytes    ✓ maps    ✓ rand      ✓ strconv
✓ flag     ✓ math    ✓ slices    ✓ time
✓ fmt      ✓ os      ✓ slog      ✓ unicode

I'm currently gathering feedback and defining the scope for the v0.2 release.

If you have any questions, feel free to reach out on GitHub.

🧑‍💻 Anton Zhiyanov