Michael Pratt
@prattmic.com
1.5K followers 190 following 180 posts
Hacking on the Go runtime and gVisor. 🏳️‍🌈
Posts Media Videos Starter Packs
prattmic.com
Is “control handoff is easily avoided by not doing it” oversimplified? Don’t give control to anyone, but even professional maintainers add new maintainers eventually. Things like two party review requirements help reduce risk by ensuring another human reviews changes even by other maintainers.
Reposted by Michael Pratt
filippo.abyssdomain.expert
To implement robust mitigations across Geomys, I did a survey of open source project compromises in 2024/2025.

Three root causes dominate: phishing, control handoff, and unsafe GitHub Actions triggers. All three can be systematically avoided.

words.filippo.io/compromise-s...
A Retrospective Survey of 2024/2025 Open Source Supply Chain Compromises
Project compromises have common root causes we can mitigate: phishing, control handoff, and unsafe GitHub Actions triggers.
words.filippo.io
prattmic.com
Are you looking for slices.Collect or maps.Collect?

pkg.go.dev/slices#Collect
pkg.go.dev
prattmic.com
In all seriousness, check out Birria-Landia if you find yourself nearby.
Reposted by Michael Pratt
golang.org
Go @golang.org · 4d
🥳 Go 1.25.2 and 1.24.8 are released!

📢 Announcement: https://groups.google.com/g/golang-announce/c/4Emdl2iQ_bI/m/qZN5nc-mBgAJ

📦 Download: https://go.dev/dl/#go1.25.2

#golang
$ go install golang.org/dl/go1.25.2@latest
$ go1.25.2 download
Downloaded   0.0% (       0 / 58280426 bytes) ...
Downloaded  50.0% (29140213 / 58280426 bytes) ...
Downloaded 100.0% (58280426 / 58280426 bytes)
Unpacking go1.25.2.linux-riscv64.tar.gz ...
Success. You may now run 'go1.25.2'
$ go1.25.2 version
go version go1.25.2 linux/riscv64
prattmic.com
Time to go simplify my jj + Gerrit guide…
prattmic.com
There is also nice set of resellers that I’ve learned when I see they are the only seller listed it just means the hotel is sold out.
prattmic.com
I hate this so much. I’ve slowly grown heuristics for ignoring them, but it’s so annoying to have lovely map full of lies.
Reposted by Michael Pratt
merriam-webster.com
We are thrilled to announce that our NEW Large Language Model will be released on 11.18.25.
prattmic.com
No, I wouldn't reach for execution tracing first for memory usage issues. I suggest looking at a heap profile from runtime/pprof, as well as the breakdown of memory types in runtime/metrics (pkg.go.dev/runtime/metr...) /memory/classes/... metrics to verify that the leak is in Go memory.
metrics package - runtime/metrics - Go Packages
pkg.go.dev
Reposted by Michael Pratt
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).
prattmic.com
I'd love to hear from folks about your experiences. Do you use execution tracing often. If not, is it due to lack of need, lack of documentation, missing information, tooling issues, etc?
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
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 · 15d
“Flight Recorder in Go 1.25” by Carlos Amedee and Michael Knyszek — https://go.dev/blog/flight-recorder

#golang
prattmic.com
I got one of these a few days ago attempting to masquerade as a GitHub account security alert.
prattmic.com
Great talk, I enjoyed all the performance comparisons!

While SIMD is helpful, the boost over the portable version is smaller than one might expect. go.dev/cl/626277 shows a few percent improvement over the portable version. The portable version is still parallel, which is the big win.
Gerrit Code Review
go.dev
Reposted by Michael Pratt
bboreham.bsky.social
Video is up now - 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
Swiss Maps in Go - Bryan Boreham
YouTube video by GopherCon UK
youtu.be
Reposted by Michael Pratt
roland.zone
I did a talk at the UK GopherCon last month about what my team does, and I only let my laptop fall asleep twice! www.youtube.com/watch?v=oLtq...
Go Security – Past, Present, and Future - Roland Shoemaker
YouTube video by GopherCon UK
www.youtube.com
Reposted by Michael Pratt
haskell.org
There is no thriving #Haskell community without its members of the LGBT community, and on that there cannot be any compromise.
prattmic.com
To be clear, arm64 is not being ignored. The intention is to only ship something with amd64 and arm64 support (to ensure the general idea works across different SIMD architectures, if nothing else). I simply meant the prototype implementation that exists today only supports amd64.