April 6, 2026
Go-to-C? Internet loses its mind
Porting Go's strings package to C
Go’s string tricks rebuilt in C—and the crowd splits between “retro cool” and “why tho”
TLDR: A developer ported Go’s text and byte helpers to the C language for a new project, So, showing careful craftsmanship and speed tests. Comments split between “not surprising—Go once compiled to C” and applause for human, no‑AI coding, reviving an old debate about reinventing wheels versus practical, portable tools.
A solo dev just ported Go’s everyday text and byte helpers into old-school C as part of a new language project called So, and the comment section is a popcorn bucket. The post walks through porting tiny-but-critical bits like number math and UTF‑8 text handling, wrangling a few syntax quirks, then re‑creating Go’s byte comparisons using C’s memcmp. Translation: taking the stuff Go programmers use daily and making it run in the land of manual memory and metal vibes.
The hottest take? This isn’t shocking—Go itself started life emitting C. One top commenter reminded everyone that early Go was a C transpiler and that some Go features (like the “go” keyword for easy multitasking, and GC—automatic cleanup) aren’t even in scope here. Meanwhile, another voice cut through with 2026 energy: finally, code without AI. Cue cheering for human‑crafted code, eye‑rolls from the “seen this movie before” crowd, and a few “grandpa C meets millennial Go” jokes.
Memes landed fast: “Back to 1999,” “C never dies,” and “Gophers punching cards.” Fans call it a smart, surgical port that could make So practical; skeptics see a history lesson dressed as a headline. Either way, the benchmarks and careful speed tweaks suggest this isn’t just cosplay—it’s a legit throwback flex that might actually ship
Key Points
- •The author is porting parts of Go’s standard library to C, moving from io to the heavily used bytes and strings packages.
- •Dependencies math/bits and unicode/utf8 were ported first due to their pure functions and foundational role.
- •Go and C differ in operator precedence for bit shifts vs. addition/subtraction; the C port uses parentheses to preserve Go semantics.
- •A Mul64 example demonstrates how to translate shift/arithmetic-heavy code safely from Go to C.
- •bytes.Equal is implemented in C by zero-copy reinterpreting byte slices as strings and using memcmp, mirroring Go’s no-allocation behavior.