This is a collection of Go packages for testing additions and changes to standard library packages as well as some popular x/ packages to make use of type parameters (generics).

This is a testbed for experimentation. I intend to follow the normal semantic versioning rules but there may be a lot of churn. As these sorts of packages are accepted into the standard library or x/ repos, I intend to deprecate and freeze my versions. For any which prove useful but which seem unlikely to be headed for acceptance into the Go repos, I may move them to more permanent locations.


Generics are a nice language feature with some more-or-less obvious candidate uses within the standard library. The Go team is rightly being very cautious and methodical about introducing these changes. But I’m impatient! I want to use them now.

For example, golang/go#45955 describes a proposal for a new slices package. This was later made available for use as to let folks use the proposed API while it was still under discussion.

Similarly, golang/go#47331 is a discussion about a new container/set package. But, as of October 2022, no container/set package has been provided in x/exp. So that’s where this repo comes in.


TODO: describe



Packages adapted from existing code in the Go project are released under the Go project’s license (see LICENSE-THIRD-PARTY.txt). The other packages are released under the MIT license (LICENSE.txt).


View Github