Go often ships with experimental features as part of a release.
These experimental features can take different forms: sometimes they're completely new packages in the standard library, sometimes they're changes to the compiler or runtime, or – very occasionally – they can be breaking changes to Go's behavior.
Most of the time, the purpose of experimental features is to get real-world feedback from users before something graduates to general availability and becomes a permanent part of Go. If the feature causes regressions, or gets negative feedback from the community, it can be changed before it is finalized – or even abandoned entirely.
Some examples
Let's look at a few recent examples to illustrate the type of things that Go experiments can cover.
Go 1.24 shipped with experimental support for a new testing/synctest package (which provides support for testing concurrent code).…