News
Go 1.21: An Inside Look at Forward Compatibility and Toolchain Management
Go 1.21 introduces better forward compatibility for Go code. The `go` line in `go.mod` now specifies a minimum required Go toolcha...
Go 1.21: A Guide to Profile Guided Optimization
Go 1.20 shipped a preview of profile-guided optimization (PGO) for users to test. After addressing known limitations in the previe...
Go 1.22: A Change in Loop Scoping
Go 1.21 includes a preview of a change to `for` loop scoping that we plan to ship in Go 1.22. The change will remove one of the mo...
Go's Cryptography Packages Were Audited: The Results
Go ships with a full suite of cryptography packages in the standard library to help developers build secure applications. Google r...
What You Have to Know About Syntactic Support for Error Handling
Go has a built-in error handling function called 'try' It is used to augment errors before returning them. Go users have long comp...
Generic interfaces: When to Use Them
As interfaces are types themselves, they too can have type parameters. This idea proves to be surprisingly powerful when it comes...
Go 1.25 is released - The Go Programming Language
Go 1.25 comes with improvements over Go 1.24 across its [tools], [compiler], [linker], and [standard library] There are also [port...
Container-aware GOMAXPROCS: What it is and Why It's Important
Go 1.25 includes new container-aware `GOMAXPROCS` defaults. These defaults provide more sensible default behavior for many contain...
Go: The Testing/Synctest Package Explained
Go 1.25 introduces the `testing/synctest` package. This package can significantly simplify writing tests for concurrent, asynchron...
Go's New Experimental Packages: What to Know
Go 1.25 introduces new experimental packages for encoding and unmarshaling of Go types. The new packages are not visible by defaul...
