Foundations of Go performance
In the first of a multi-part series, Ian & Johnny are joined by Miriah Peterson & Bryan Boreham to peel back the first layer of the things that matter when it comes to the performance of your Go programs.
Join the discussion
Changelog++ members support our work, get closer to the metal, and make the ads disappear. Join today!
Sponsors:
Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Featuring:
Miriah Peterson – Website, GitHub, LinkedIn, X
Bryan Boreham – X
Johnny Boursiquot – Website, GitHub, X
Ian Lopshire – GitHub, X
Show Notes:
The return of Ship it!
Something missing or broken? PRs welcome!
So do we like Generics or not?
So, do we like generics or not? Some people feared they’d be the end of the language. Others were very hopeful, and had clear use cases, and were thrilled about the feature coming to the language. It was also often touted as the reason a lot of people didn’t adopt Go. So what do we think now? Mat and Kris are joined by Roger Peppe and Bryan Boreham to discuss the state of Generics in Go.
Join the discussion
Changelog++ members save 1 minute on this episode because they made the ads disappear. Join today!
Sponsors:
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com
Fly.io – The home of Changelog.com — Deploy your apps and databases close to your users. In minutes you can run your Ruby, Go, Node, Deno, Python, or Elixir app (and databases!) all over the world. No ops required. Learn more at fly.io/changelog and check out the speedrun in their docs.
Typesense – Lightning fast, globally distributed Search-as-a-Service that runs in memory. You literally can’t get any faster!
Featuring:
Roger Peppe – GitHub, X
Bryan Boreham – X
Mat Ryer – Website, GitHub, LinkedIn, X
Kris Brandow – GitHub, X
Show Notes:
New slices package
Go 1.21 release notes
Roger’s talk on unconstrained generics
Roger’s proposal on type assertions
Roger’s generics mini testing framework
Mat’s mini testing framework
Dishwasher video
Dishwasher video v2
Something missing or broken? PRs welcome!
Don't forget about memory management
Bryan Boreham (Grafana Labs) and Jordan Lewis (Cockroach Labs) join Mat and Jon to talk about memory management in Go. We learn about the heap, the stack, and the garbage collector. There are also some absolute gems of wisdom scattered throughout this episode, don’t miss it.
Join the discussion
Changelog++ members save 3 minutes on this episode because they made the ads disappear. Join today!
Sponsors:
Sourcegraph – Sourcegraph is universal code search for every developer and team. Easily search across all the code that matters to you and your organization: find example code, explore and read code, debug issues, and more. Head to info.sourcegraph.com/changelog and click the button “Try Sourcegraph now” to get started.
Equinix Metal – If you want the choice and control of hardware…with low overhead…and the developer experience of the cloud – you need to check out Equinix Metal. Deploy in minutes across 18 global locations, from Silicon Valley to Sydney. Visit metal.equinix.com/justaddmetal and receive $100 credit to play.
LaunchDarkly – Ship fast. Rest easy. Deploy code at any time, even if a feature isn’t ready to be released to your users. Wrap code in feature flags to get the safety to test new features and infrastructure in prod without impacting the wrong end users.
Fastly – Our bandwidth partner. Fastly powers fast, secure, and scalable digital experiences. Move beyond your content delivery network to their powerful edge cloud platform. Learn more at fastly.com
Featuring:
Bryan Boreham – X
Jordan Lewis – Website, GitHub, LinkedIn, X
Mat Ryer – Website, GitHub, LinkedIn, X
Jon Calhoun – Website, GitHub, X
Show Notes:
Local meet-up shout-at
Miriah Peterson (captainnobody1 on Twitter) says hello on behalf of the Utah Go User Group, as well as Women Who Go Utah.
Some things mentioned on the show
Statsviz gives you an instant live visualization of your Go application runtime statistics (GC, MemStats, etc.) in the browser
sync.Pool helps you reduce allocations by keeping objects around when they might otherwise be garbage collected
From the Go blog: The Journey of Go’s Garbage Collector
Viewcore
The viewcore tool is a command-line tool for exploring the state of a Go process that has dumped core.
Jordan says:
It’s complicated because it still doesn’t work out of the box, you need my branch which isn’t merged:
https://github.com/jordanlewis/debug/tree/fix-bugs… (my branch)
https://github.com/golang/debug/tree/master/cmd/viewcore… (the upstream)
https://go-review.googlesource.com/c/debug/+/321736… (the CL that isn’t merged yet)
Something missing or broken? PRs welcome!