thepudds
@thepudds.bsky.social
1.2K followers 160 following 140 posts
Go contributor. Posts tend to be about #golang, performance, fuzzing, and Go Modules. He/him. https://github.com/thepudds
Posts Media Videos Starter Packs
thepudds.bsky.social
(SMP support a ~couple months ago, the gvisor network stack running under UEFI more recently, ...)

bsky.app/profile/andr...
andreabarisani.bsky.social
Screw PXE, this means the entire Go TLS and networking stack is available under UEFI.

In seconds I added DHCP and an SSH server to remotely manage my pre-boot environments.

I see much potential.
andreabarisani.bsky.social
Adding networking to go-boot through UEFI Simple Network Protocol.

It took 77 LOCs of pure Go to add the UEFI driver and bridge it to gVisor stack.
thepudds.bsky.social
@andreabarisani.bsky.social is the author of the new-ish proposal for bare metal support for Go, which seems to be gathering some momentum AFAICT.

Andrea continues to share some fairly exciting progress... 🚀

( #golang proposal: github.com/golang/go/is... )
andreabarisani.bsky.social
First ever boot of a TamaGo unikernel in the cloud, here on Google Cloud Compute Engine, automatically deployed from remote userspace!

Looking forward to polish and publish this.
Reposted by thepudds
jakebailey.dev
Fun little Go compiler CL merged today: go.dev/cl/706655

Uninlined generic functions have a "dict" arg, since Go generics are neither erased nor monomorphized, but instead instantiated for each "GC shape" (e.g. T=*int and T=*float64 get the same code, but T=int32 and T=int64 do not).
Reposted by thepudds
pcwalton.bsky.social
OK, I love this. tl;dr using knowledge of your allocator, speed up linked list traversal by adding a branch that guesses where the next linked list element is and pre-populates the "next" variable to eliminate stalls if the allocations are well-behaved.
Reposted by thepudds
prattmic.com
If you haven't been keeping up, Go 1.21 reduced overhead from ~10% to ~1%. 1.22 overhauled the format to improve reliability and add information. 1.25 has a built in trace flight recorder. And we have an active proposal (go.dev/issue/62627) for a trace parsing package to enable arbitrary tooling.
proposal: x/debug/trace: add package for parsing execution traces · Issue #62627 · golang/go
As part of #60773 (tracking issue #57175) I've been working on a new parser for the execution tracer, and to save work down the line I've also been trying to come up with a nice API that would work...
go.dev
Reposted by thepudds
prattmic.com
Go's execution tracer is a woefully underutilized tool. It contains tons of information about what is happening at any given moment that you won't get with a profile.

In addition to showing flight recording capabilities, this post provides a nice example of how to use tracing to diagnose a problem.
golang.org
Go @golang.org · 14d
“Flight Recorder in Go 1.25” by Carlos Amedee and Michael Knyszek — https://go.dev/blog/flight-recorder

#golang
Reposted by thepudds
kakkoyun.me
I recently spoke at GopherCon UK 2025 about the hidden power of #Go’s `-toolexec` flag. How it can turn every `go build` into a programmable pipeline for things like error-handling enforcement and observability hooks. Here’s the recording:
Unleashing the Go Toolchain - Kemal Akkoyun
The -toolexec flag hides a super-power in the Go toolchain: it lets you turn every go build into a programmable pipeline. In this session we’ll reveal how a simple wrapper command can inject custom…
youtu.be
Reposted by thepudds
bboreham.bsky.social
My talk from #gopherconuk is up on YouTube!
My take on how map is implemented in Go, and what changed from Go 1.23 to 1.24 and 1.25.

youtu.be/M05t7Q6LbFs

* Talk contains no AI, but does contain pictures of cats.
Swiss Maps in Go - Bryan Boreham
YouTube video by GopherCon UK
youtu.be
Reposted by thepudds
andreabarisani.bsky.social
Screw PXE, this means the entire Go TLS and networking stack is available under UEFI.

In seconds I added DHCP and an SSH server to remotely manage my pre-boot environments.

I see much potential.
andreabarisani.bsky.social
Adding networking to go-boot through UEFI Simple Network Protocol.

It took 77 LOCs of pure Go to add the UEFI driver and bridge it to gVisor stack.
Reposted by thepudds
dave.cheney.net
This talk is like the solstice, it appears twice a year :)
Reposted by thepudds
konradreiche.com
I've been eager to get more context and commentary on those slides. Fortunately, @dave.cheney.net gave the talk again at GopherCon Europe 2025, and the recording is now live! www.youtube.com/watch?v=RZe8...
thepudds.bsky.social
Ooh, the SIMD WIP stdlib API for #golang is ready for people to poke!

From Cherry from a few minutes ago:

> As of today, we've landed a preliminary version with a reasonable API coverage. You're welcome to check out the dev.simd branch and try it with your use cases.

github.com/golang/go/is...

🚀
proposal: simd: architecture-specific SIMD intrinsics under a GOEXPERIMENT · Issue #73787 · golang/go
Update (08/20/2025): A preliminary implementation of AMD64 low-level SIMD package is being developed on the dev.simd branch. You're welcome to check it out and try it with your use cases. Feedback ...
github.com
Reposted by thepudds
Reposted by thepudds
brancz.com
Such an awesome feature! Catch a heap profile just before your Go process is just about to be killed by the OOM killer. (truly hooking into the kernel's OOMkiller with eBPF!)
polarsignals.com
Tame the OOM killer with OOMProf, the new eBPF memory profiler for Go programs being taken out by the kernels OOM killer!
www.polarsignals.com/blog/posts/2...
OOMProf - Profiling on the Brink
Using eBPF to record your programs dying breathes
www.polarsignals.com
thepudds.bsky.social
Classic. 😅

Nice to see the traditions honored.
Reposted by thepudds
prattmic.com
Go 1.25 is the best release of Go yet!
golang.org
Go @golang.org · Aug 12
🎊 Go 1.25.0 is released!

📝 Release notes: https://go.dev/doc/go1.25

⬇️ Download: https://go.dev/dl/#go1.25.0

#golang
$ go install golang.org/dl/go1.25.0@latest
$ go1.25.0 download
Downloaded   0.0% (       0 / 58130695 bytes) ...
Downloaded  50.0% (29065347 / 58130695 bytes) ...
Downloaded 100.0% (58130695 / 58130695 bytes)
Unpacking go1.25.0.freebsd-arm.tar.gz ...
Success. You may now run 'go1.25.0'
$ go1.25.0 version
go version go1.25.0 freebsd/arm
Reposted by thepudds
golang.org
Go @golang.org · Aug 12
🎊 Go 1.25.0 is released!

📝 Release notes: https://go.dev/doc/go1.25

⬇️ Download: https://go.dev/dl/#go1.25.0

#golang
$ go install golang.org/dl/go1.25.0@latest
$ go1.25.0 download
Downloaded   0.0% (       0 / 58130695 bytes) ...
Downloaded  50.0% (29065347 / 58130695 bytes) ...
Downloaded 100.0% (58130695 / 58130695 bytes)
Unpacking go1.25.0.freebsd-arm.tar.gz ...
Success. You may now run 'go1.25.0'
$ go1.25.0 version
go version go1.25.0 freebsd/arm
thepudds.bsky.social
I'm happy to share that my talk proposal was accepted for GopherCon in NYC!

It's on the Go compiler & escape analysis.

I hope to chat with you there. Yes, you!

(And if we don't know each other yet, just introduce yourself, and then we can chat! 😅)

#golang #gophercon
gophercon.com
Why is your code allocating memory? How does the Go compiler see the world?

Join Go contributor @thepudds.bsky.social for a deep dive into escape analysis—the part of the compiler that decides whether your data stays on the stack or takes the more expensive trip to the heap.

🎟️ www.gophercon.com