thepudds
thepudds.bsky.social
thepudds
@thepudds.bsky.social
Go contributor.

Posts tend to be about #golang, performance, fuzzing, and Go Modules. He/him.

https://github.com/thepudds
This is a fun writeup of using C to implement #golang interfaces (or maybe Rust traits), complete with editable C you can run via your browser.

It pairs nicely with the classic post on the Go interface implementation by @swtch.com from 16 (!) years ago:

research.swtch.com/interfaces
January 22, 2026 at 2:55 PM
Reposted by thepudds
“Floating-Point Printing and Parsing Can Be Simple And Fast”

The fastest known floating-point printer and parsing algorithms - fixed-width printing, shortest-width printing, and parsing, all in 400 lines of Go.

research.swtch.com/fp
research.swtch.com/fp-proof
research!rsc: Floating-Point Printing and Parsing Can Be Simple And Fast (Floating Point Formatting, Part 3)
research.swtch.com
January 19, 2026 at 10:13 PM
Very nice!

#golang flight recorder taking off (so to speak)
With #FlightRecorder #Go introduced a powerful tool. As I'm involved in the #OTel Profiles signal, I have created an OTel receiver that transforms Go's FlightRecorder format into the OTel Profiles signal. Now you can analyze Go diagnostics in your own favorite backend/UI!
github.com/florianl/fli...
GitHub - florianl/flightrecorderreceiver: The FlightRecorder receiver collects Go Flight Recorder traces and transforms them into OTel Profiles
The FlightRecorder receiver collects Go Flight Recorder traces and transforms them into OTel Profiles - florianl/flightrecorderreceiver
github.com
January 17, 2026 at 1:56 PM
A good way to keep up with the Go project is this starter pack from @mvdan.cc (long-time #golang contributor).

Two other good ways to keep up are subscribing to the Go proposal review meeting GitHub issue:
go.dev/issue/33502

and the Go compiler & runtime meeting notes issue:
go.dev/issue/43930
January 16, 2026 at 3:01 PM
Reposted by thepudds
Related #golang PSA:

Gophers often mistakenly put a -u in 'go get -u foo', when they would have been better off with just 'go get foo'.

'go get foo' says to upgrade foo itself. It's shorthand for 'go get foo@upgrade'

'go get -u foo' says to *also* upgrade all the direct and indirect deps of foo.
January 14, 2026 at 4:54 PM
Reposted by thepudds
30 Years of Programming at 44 Years Old

blainsmith.com/articles/30-...

#Programming #Birthday
30 Years of Programming at 44 Years Old - Blain Smith
blainsmith.com
January 13, 2026 at 4:55 PM
Tailscale, AT protocol, #golang, holding hands running through a field
Today's toy: atlogin, an OIDC provider for the AT network, compatible with Tailscale custom OIDC.

Try this: login.tailscale.com and login as user "@at.apenwarr.ca". You'll join my test tailnet (ACL isolated from other users).

Source: github.com/apenwarr/atlogin
GitHub - apenwarr/atlogin: An OIDC provider that logs in with ATProto
An OIDC provider that logs in with ATProto. Contribute to apenwarr/atlogin development by creating an account on GitHub.
github.com
January 12, 2026 at 8:34 PM
Reposted by thepudds
Go did this best in my opinion. The "time" package's API is a work of art:

want the current time?
```go
time.Now()
```

want time since an operation?
```go
t := time.Now()
elapsed := t.Sub(start)
```

Need a ticker every 5 seconds?
```go
timer := time.NewTimer(5 * time.Second)
<-timer.C
```
January 12, 2026 at 2:50 PM
Reposted by thepudds
New #golang Reed-Solomon release. Contains new progressive field decoding and some significant speedups. Check it out: github.com/klauspost/re...
January 12, 2026 at 2:32 PM
Reposted by thepudds
Seeing an influx of people starting out their adventures building in the atmosphere or asking how to, so here’s my statusphere demo app built in #golang as reference.

tangled.org/willdot.net/...
willdot.net/statusphere-go
An implementation of the ATProto statusphere example app but in Go
tangled.org
January 7, 2026 at 7:01 AM
Reposted by thepudds
So the second most imported 3rd-party dependency is Google's own UUID package. I wonder what it would take to convince the Go team to add it to stdlib.

Also, I don't think x/crypto and x/net should be here at all. Both are imported by stdlib itself, so they're basically included in every project.
January 11, 2026 at 12:44 PM
Reposted by thepudds
“Pulling a New Proof from Knuth's Fixed-Point Printer”

Happy 88th Birthday to Don Knuth!

And thanks again to @robpike.io for Ivy.

research.swtch.com/fp-knuth
research!rsc: Pulling a New Proof from Knuth’s Fixed-Point Printer
research.swtch.com
January 10, 2026 at 2:30 PM
Reposted by thepudds
Go 1.26 will be huge for the ecosystem thanks to massive improvements in the garbage collector:

> Benchmark results vary, but we expect somewhere between a 10—40% reduction in garbage collection overhead in real-world programs that heavily use the garbage collector.

Exciting!!

go.dev/doc/go1.26
Go 1.26 Release Notes - The Go Programming Language
go.dev
January 10, 2026 at 1:23 PM
Reposted by thepudds
Coming in at number 5 with over 93,000+ dependents, cobra is more than just a Go library: it's a core par of the breathing ecosystem.

It's been a pleasure shepherding this library for the better part of 5 years. To the whole Go community, thank you!!!

blog.thibaut-rousseau.com/blog/the-mos...
The most popular Go dependency is…
(I bet it's testify)
blog.thibaut-rousseau.com
January 9, 2026 at 6:37 PM
Reposted by thepudds
I don't have a large collection, but it is timeless.

#Books
December 30, 2025 at 6:37 PM
Reposted by thepudds
Feels like writing assembly minus the part where you typo on letter and create an Remote-Code-Execution vulnerability.

Really exciting stuff to play with !
Go 1.26 brings the long-awaited vectorized operations (SIMD) in the simd/archsimd package.

Since it's hard to create a portable high-level API, the Go team decided to start with a low-level, architecture-specific one and support only amd64 for now.
January 9, 2026 at 5:21 PM
Hi @mcy.gay, looking over Go SIMD proposal, I'm reminded you expressed some interest in giving it a quick whirl once it was merged.

I'm curious if you've had a chance to try a hello world or port some code or whatever?

(and fyi, there's been some tweaks since go1.26rc1, so tip is probably better)
Go 1.26 brings the long-awaited vectorized operations (SIMD) in the simd/archsimd package.

Since it's hard to create a portable high-level API, the Go team decided to start with a low-level, architecture-specific one and support only amd64 for now.
January 9, 2026 at 3:13 PM
Reposted by thepudds
Right now, and the next few months, is a very good time to talk about that organization, since an "experiment" is technically still up for change. The argument *for* archsimd is that long term, it will all be build-tag gated, a smaller number of Go programmers will be using low level simd
January 9, 2026 at 1:23 PM
Reposted by thepudds
Go 1.26 brings the long-awaited vectorized operations (SIMD) in the simd/archsimd package.

Since it's hard to create a portable high-level API, the Go team decided to start with a low-level, architecture-specific one and support only amd64 for now.
January 9, 2026 at 11:24 AM
Reposted by thepudds
I have written self-tests for the Python test generator and added tests to the Go tests.

Folks, I can confirm we got all the edge cases! 💥 🥳

Thank you so much to everyone who contributed to the > 8,500(!) cores. I would like to credit you, so either reply or DM me your name/handle, if you'd like.
det-keygen: add RSA deterministic key generation by FiloSottile · Pull Request #197 · C2SP/C2SP
Community Cryptography Specification Project. Contribute to C2SP/C2SP development by creating an account on GitHub.
github.com
January 8, 2026 at 4:23 PM
Reposted by thepudds
Go 1.26 received a somewhat under-the-radar language change: recursive type constraints in generics.

Previously, type constraints couldn't directly or indirectly refer to type parameters.

January 8, 2026 at 12:46 PM
Reposted by thepudds
My GopherCon talk was just posted!
GopherCon 2025: Porting the TypeScript Compiler to Go for a 10x Speedup V2 - Jake Bailey
YouTube video by Gopher Academy
youtu.be
January 7, 2026 at 2:50 AM
Reposted by thepudds
Hi @antonz.org, good question!

Something like 'make([]byte, 0, 33)' does indeed create a slice with a capacity of exactly 33, as your example shows.

However, the underlying allocated heap object actually is larger.

Quick playground example that hacks things to print the heap object size:
Go Playground - The Go Programming Language
go.dev
January 6, 2026 at 7:54 PM