πGo 1.19 is released. Well, it was released at the very beginning of August, so I’m a bit late with the news. Well, very late. Still, I wanted to tell you about it. This release of Go is notable in that it doesn’t have anything really notable, like any other Go release. Since Go 1.5 or so, most of the releases had mostly performance and quality of life improvements. The only notable exceptions are error wrapping in Go 1.13 (which is a small change, but it made error handling suck less, which is great) and generics in Go 1.18. That means, all old Go code still works, most of the old tutorials are still as good as they always were, and upgrades are safe and smooth.
It’s also great that often all you need to do to make your code faster is to upgrade to the latest Go version. This is why the article from Discord about migrating from Go to Rust got so much negative feedback. They had performance issues on go 1.6 when 1.12 already was around, which is 2-3 times faster. Just try to upgrade before rewriting everything, common!
Alright-alright, there is one worth mentioning feature in Go 1.19. It’s not a change in the language itself but rather one more knob to tweak GC. Now you can set a soft memory limit for your app, so you want accidentally eat all RAM and die. Read more here: GOMEMLIMIT is a game changer for high-memory applications.