Sign in

Michael Pratt

@prattmic.com
1.6K followers 213 following 243 posts

Hacking on the Go runtime and gVisor. 🏳️‍🌈

PostsRepliesMedia
Michael Pratt @prattmic.com · 18h
I am shocked that only 13% said they had never heard of DSA. I had no idea name recognition was so high.
001
Michael Pratt @prattmic.com · 18h
Isn’t this opposite of what the article says? My interpretation is: Favorability: DSA: 30% MAGA: 35% Trump: 38% Republican: 41% Democrat: 44%
100
Reposted by Michael Pratt
Go @golang.org · 24/09/2026
“Platform-independent SIMD in Go” by David Chase and Junyang Shao — go.dev/blog/simd-experiment #golang
0358
Michael Pratt @prattmic.com · 22/09/2026
Jake! Just because you can does not mean you should!
030
Michael Pratt @prattmic.com · 20/09/2026
If I’m going to submit them out of order then they don’t presubmit test quite right since the tests include the parents, but eh it’s usually close enough, so I only move a change out of the stack if it seems important.
100
Michael Pratt @prattmic.com · 20/09/2026
I found the idea of a megamerge intriguing, but then I realized I have Gerrit, so I can send a stack of changes just fine.
100
Michael Pratt @prattmic.com · 18/09/2026
Time to set up gVisor to sandbox even the GUI applications I run? Back when we started gVisor I never imagined we'd run anything this complex. It's amazing to see how far the project has come! gvisor.dev/blog/2026/09...
gvisor.dev
Who needs VMs? Run systemd and full Linux desktop apps in gVisor
1130
Reposted by Michael Pratt
Go @golang.org · 16/09/2026
“Size-Specialized Memory Allocation” by Michael Matloob — go.dev/blog/size-specialized-alloca… #golang
0236
Reposted by Michael Pratt
thepudds @thepudds.bsky.social · 10/09/2026
I’m very, very happy to share that I have just joined the core Go team at Google to work on the Go runtime and compiler! I’ve been pitching in as an external contributor since 2018, but now my very enjoyable hobby is becoming my day job 😅 (Also, my name is PJ 👋)
121868
Reposted by Michael Pratt
Bryan Cantrill @bcantrill.bsky.social · 05/09/2026
The revolt of the reader bcantrill.dtrace.org/2026/09/05/t...
bcantrill.dtrace.org
The revolt of the reader | The Observation Deck
1112331
Reposted by Michael Pratt
rain 🌦️ @sunshowers.io · 04/09/2026
One recently-added section to our RFD 576 says that in public writing it's worth avoiding even the appearance of AI slop -- both at the content and at the text level
rfd.shared.oxide.computer
576 - Using LLMs at Oxide | RFD | Oxide
4697
Reposted by Michael Pratt
Go @golang.org · 02/09/2026
“Goroutine Leak Profiles” by Vlad Saioc — go.dev/blog/goroutine-leak-profiles #golang
0235
Michael Pratt @prattmic.com · 31/08/2026
Does this speed up tsgo itself via improved icache locality?
100
Reposted by Michael Pratt
Anton Zhiyanov @antonz.org · 27/08/2026
I've updated the "Go features by version" list with the latest changes from 1.27. This is not a replacement for release notes, but rather a quick summary of major features in any given Go version. antonz.org/go-features/...
1243
Michael Pratt @prattmic.com · 25/08/2026
To be clear, I don’t think this is a regression. Some calculations were adjusted slightly to ensure they are arch independent. You found an edge case where this actually resulted in a visible change. My guess is that on 1.26 this code needed to be one space wider to trigger the same behavior.
100
Michael Pratt @prattmic.com · 25/08/2026
> The first bad revision is: xkwomrzz a8f99ef1f6e550 go/printer: use architecture-independent math for alignment decisions As expected, you can blame floating point numbers for being terrible: go.dev/cl/752862 You are also today's lucky winner! This CL didn't change a single line in any Go repo.
go.dev
Gerrit Code Review
120
Reposted by Michael Pratt
Anton Zhiyanov @antonz.org · 25/08/2026
The new JSON package is finally production-ready in Go 1.27, so I've updated my JSON v2 guide. It explains all the main differences between the json and json/v2 packages, with interactive examples for each one. Check it out! antonz.org/go-json-v2
antonz.org
JSON evolution in Go: from v1 to v2
Reviewing the key changes in json/v2.
2427
Michael Pratt @prattmic.com · 24/08/2026
> if the megamerge builds, so do all of your worktrees! What do you mean by this? It doesn’t seem right by my naive reading. If I put `a := 1` in one change and `a++` in another, then the merge builds, but the individual changes do not.
100
Michael Pratt @prattmic.com · 20/08/2026
All the smart Windows users know that sketchy-phrase.exe.xyz is definitely phishing at best or active exploit at worst.
150
Michael Pratt @prattmic.com · 20/08/2026
Not gonna lie, from the screenshot I thought this was going to be some giant LLM rewrite change.
000
Reposted by Michael Pratt
Markus 🤓✨ @markus.maragu.dev · 19/08/2026
No more creating non-nil empty lists for JSON. 🥳
061
Michael Pratt @prattmic.com · 19/08/2026
Fair, for the scheduler and pprof improvements (my contributions) of course. Not any of the other minor changes in 1.18 surely.
110
Michael Pratt @prattmic.com · 19/08/2026
Generic methods! encoding/json/v2! goroutine leak profiles! Dare I say this is the best Go release yet?
2233
Reposted by Michael Pratt
Anton Zhiyanov @antonz.org · 17/08/2026
The goroutine leak detector will become generally available in Go 1.27. But did you know you can also use synctest (Go 1.25+) to catch goroutine leaks in tests? See how the two approaches compare: antonz.org/detecting-go...
antonz.org
Detecting goroutine leaks with synctest/pprof
Explore different types of leaks and how to detect them in modern Go versions.
072
Michael Pratt @prattmic.com · 17/08/2026
uBO Lite still has (optional) permission to "to read and change all your data on websites". AFAICT this is for additional cosmetic changes beyond the MV3 declarative filtering ("optimal" or "complete" mode). Do you run with this permission disabled to reduce risk?
120
Reposted by Michael Pratt
Daniel Lemire @lemire.bsky.social · 15/08/2026
Go 1.27 will make some allocations cheaper lemire.me/blog/2026/08/15/go-1-27-w…
1204
Michael Pratt @prattmic.com · 14/08/2026
Ha, I feel you. Though given the context of how we got here (go.dev/blog/toolchain), it seems like the only obvious alternative would be for the toolchain to refuse to build and have you manually upgrade. If you do prefer that behavior, you can set GOTOOLCHAIN=local to get it.
go.dev
Forward Compatibility and Toolchain Management in Go 1.21 - The Go Programming Language
Go 1.21 manages Go toolchains like any other dependency; you will never need to manually download and install a Go toolchain again.
010
Reposted by Michael Pratt
Daniel Lemire @lemire.bsky.social · 10/08/2026
Profile-guided optimization in Go lemire.me/blog/2026/08/09/profile-g…
043
Michael Pratt @prattmic.com · 09/08/2026
I just finished Toward Eternity by @antonhur.com. Beautiful story and definitely my favorite book I've read this year. And I found it thanks to BlueSky!
1173
Michael Pratt @prattmic.com · 03/08/2026
> #ff5fjf New color just dropped.
010
Reposted by Michael Pratt
Liz Rice 💛💙🐝 @lizrice.com · 03/08/2026
🪫Anyone else finding that their #iPhone is draining battery a lot faster than usual? Mine has been going into adaptive power mode every day for at least the last week or so and barely makes it through the day without a recharge, even though battery health is reported as 100%
6113
Michael Pratt @prattmic.com · 03/08/2026
Woah, I thought it was just me. I noticed starting about 2 weeks ago. I got a new phone last year and battery life has always been great. In the last few weeks I’m regularly running low at the end of the day.
020
Michael Pratt @prattmic.com · 31/07/2026
Gerrit is a strong team retention tool.
130
Michael Pratt @prattmic.com · 31/07/2026
Every time I see these threads I’m amazed how many people can’t imagine how a code review system could be better than GitHub. You don’t know what you’re missing out on, I guess.
2130
Michael Pratt @prattmic.com · 27/07/2026
Same thought, I’m not sure I’ve ever used flow control, but also everything could just keep up with 115200. Perhaps lower the baud rate if it can’t keep up?
100
Reposted by Michael Pratt
Phil Eaton @eatonphil.bsky.social · 24/07/2026
I wrote an article about Go's new Green Tea garbage collector. Paywall has expired, give it a read. theconsensus.dev/p/2026/07/19...
0396
Reposted by Michael Pratt
ICFP Programming Contest 2026 @icfpcontest.bsky.social · 24/07/2026
This year's ICFP programming contest has begun! To get started, read the textbook: icfpcontest2026.com/textbook
075
Reposted by Michael Pratt
GopherCon @gophercon.com · 15/07/2026
What does it take to build a language that lasts? ∞ Join Austin for the Opening Keynote as they explore how Go is evolving for the decades ahead while staying true to what made it successful. See how language evolution, AI, and an open governance model are shaping Go's future. 🛸 🎟️ gophercon.com
081
Michael Pratt @prattmic.com · 12/07/2026
And then you’ll have to wait like the rest of us 😭
020
Michael Pratt @prattmic.com · 11/07/2026
Thanks for these the last few years!
110
Reposted by Michael Pratt
roland.zone @roland.zone · 08/07/2026
excited to talk about the (mostly) boring vulns we have, with a slight digression about how LLMs have completely turned the way vulns are found upside down 🙃
0254
Reposted by Michael Pratt
Russ Cox @swtch.com · 08/07/2026
TypeScript is now officially written in Go.
29015
Reposted by Michael Pratt
Go @golang.org · 07/07/2026
🎊 Go 1.27 Release Candidate 2 is released! 🔐 Security: Includes 2 security fixes to the standard library. 🏃‍♀️ Run it in dev! Run it in prod! File bugs! go.dev/issue/new 📣 Announcement: groups.google.com/g/golang-ann... 📦 Download: go.dev/dl/#go1.27rc2 #golang
$ go install golang.org/dl/go1.27rc2@latest
$ go1.27rc2 download
Downloaded   0.0% (       0 / 68280950 bytes) ...
Downloaded  50.0% (34140475 / 68280950 bytes) ...
Downloaded 100.0% (68280950 / 68280950 bytes)
Unpacking go1.27rc2.freebsd-386.tar.gz ...
Success. You may now run 'go1.27rc2'
$ go1.27rc2 version
go version go1.27rc2 freebsd/386
0408
Michael Pratt @prattmic.com · 29/06/2026
For gVisor we wrote checkescape which is basically that approach written as a vet analyzer. pkg.go.dev/gvisor.dev/g...
pkg.go.dev
checkescape package - gvisor.dev/gvisor/tools/checkescape - Go Packages
172
Reposted by Michael Pratt
Aditya Mukerjee 🦦 🏳️‍🌈 @chimeracoder.bsky.social · 23/06/2026
Election Day is a good day to remind you that you can now request a mail ballot for the general election (or all elections this calendar year, including special elections). No need to wait in line at the polls next time! You can request it online - it takes 30 seconds! requestballot.vote.nyc
Screenshot of the Request Early Mail Ballot page
164
Michael Pratt @prattmic.com · 20/06/2026
And if you want to know where all the trees are I’m NYC. tree-map.nycgovparks.org
tree-map.nycgovparks.org
NYC Tree Map
Explore and learn about New York City’s trees. Discover their species and diameter, record your stewardship activities, and share favorite trees with friends.
020
Reposted by Michael Pratt
Go @golang.org · 18/06/2026
🎊 Go 1.27 Release Candidate 1 is released! 🏃‍♂️ Run it in dev! Run it in prod! File bugs! go.dev/issue/new 🔈 Announcement: groups.google.com/g/golang-announce… 📦 Download: go.dev/dl/#go1.27rc1 #golang
$ go install golang.org/dl/go1.27rc1@latest
$ go1.27rc1 download
Downloaded   0.0% (       0 / 66941862 bytes) ...
Downloaded  50.0% (33470931 / 66941862 bytes) ...
Downloaded 100.0% (66941862 / 66941862 bytes)
Unpacking go1.27rc1.linux-arm64.tar.gz ...
Success. You may now run 'go1.27rc1'
$ go1.27rc1 version
go version go1.27rc1 linux/arm64
26114
Reposted by Michael Pratt
Ben K. @benjaminkabak.com · 18/06/2026
Keep it that way.
314517
Reposted by Michael Pratt
Jake Bailey @jakebailey.dev · 15/06/2026
This is a fun one: I just sent go.dev/cl/790740, which elides method wrappers for embedded types at offset zero, common for mixins/inherited data types. Doing this removes 60 _thousand_ method wrappers from tsgo's AST package, dropping the compilation of our main exe from 49s to 28s on my machine.
Benchmark 1: go build -a ./cmd/tsgo
  Time (mean ± σ):     48.992 s ±  0.274 s    [User: 345.152 s, System: 12.545 s]
  Range (min … max):   48.702 s … 49.478 s    10 runs
 
Benchmark 2: ~/work/go/bin/go build -a ./cmd/tsgo
  Time (mean ± σ):     28.323 s ±  0.133 s    [User: 141.277 s, System: 4.853 s]
  Range (min … max):   28.075 s … 28.555 s    10 runs
 
Summary
  ~/work/go/bin/go build -a ./cmd/tsgo ran
    1.73 ± 0.01 times faster than go build -a ./cmd/tsgo
3656
Michael Pratt @prattmic.com · 04/06/2026
Indeed… Random thought: Google Maps puts “LGBTQ Friendly” labels on businesses (I think businesses may opt in to the label?), which on the one hand is lovely, but living in very colorful NYC I can’t help but think it would be more useful to have a “homophobic” label…
100