Solod: Go can be a better C

Hacker News Top Tools

Summary

Solod is a strict subset of Go that compiles to readable C11 with zero runtime, no GC, and rich standard library, enabling systems-level control for Go developers and familiar tooling for C programmers.

No content available
Original Article
View Cached Full Text

Cached at: 07/17/26, 01:54 AM

# Solod: Go can be a better C Source: [https://solod.dev/](https://solod.dev/) Solod \(**So**\) is a strict subset of Go that translates to regular C\. ## Highlights - Go in, C out\. You write regular Go code and get readable C11 as output\. - Zero runtime\. No garbage collection, no reference counting, no hidden allocations\. - Rich standard library\. Use familiar types and functions ported from Go's stdlib\. - Native C interop\. Call C from So and So from C — no CGO, no overhead\. - Go tooling works out of the box\. Syntax highlighting, LSP, linting and "go test"\. 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\. ## 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](https://github.com/solod-dev/solod#installation)and[usage](https://github.com/solod-dev/solod#usage)to work with So locally\. [Language](https://github.com/solod-dev/solod/blob/main/doc/spec.md)and[standard library](https://github.com/solod-dev/solod/blob/main/doc/stdlib.md)guides for a quick overview\. [So by example](https://github.com/solod-dev/example)for a hands\-on introduction\. [Source code](https://github.com/solod-dev/solod)to see the internals or contribute\. ## Current statusv0\.3 in progress As of July 2026, So is in active development\. The latest release is[0\.2](https://github.com/solod-dev/solod/releases/v0.2.0), which adds support for networking, WebAssembly, and freestanding mode\. The next release,[0\.3](https://github.com/solod-dev/solod/blob/main/doc/changelog.md#v03-in-progress), will add concurrency support\. If you have any questions, feel free to reach out[on GitHub](https://github.com/orgs/solod-dev/discussions)\. 🧑‍💻[Anton Zhiyanov](https://antonz.org/)

Similar Articles

Relying on Go

Lobsters Hottest

Solod is a new systems programming language that is a subset of Go, reusing Go's tooling and standard library while compiling to C11, offering manual memory management.

Going freestanding

Lobsters Hottest

The article describes techniques for making a Go-to-C translation tool called Solod freestanding by porting standard library packages to work without libc, using methods like freestanding headers and compiler builtins.

Just Fucking Use Go

Lobsters Hottest

An opinionated developer essay advocates for the Go programming language, emphasizing its straightforward syntax, robust standard library, efficient concurrency model, and single-binary deployment as practical alternatives to overly complex modern technology stacks.

Soppo - Go, with the features it's missing

Lobsters Hottest

Soppo is a new programming language that extends Go with enums, pattern matching, a '?' error propagation operator, and compile-time nil safety, while maintaining full interoperability with existing Go code and tooling.