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  ■■■■■□□□□□ 50% to v0.1.0

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