Only overshadowed by generics is native support for fuzzing! @dvyukov led the way with go-fuzz for many years, and @katie_hockman with @jayconrod brought native support for "go test".
Module workspaces are a significant addition by @matloob, making it easier to develop multiple modules locally at once. Until now, this required adding temporary replace directives.
The build process is also getting many quality of life improvements. By default, binaries get stamped with VCS information, such as git's current tag or HEAD commit!
"go mod download" is now more conservative, downloading fewer modules into the cache. For instance, indirect dependencies not actually needed for the build are now omitted by default.
The toolchain now supports optimizing for newer x86-64 machines via GOAMD64!
You should consider the portability tradeoff for this knob. But if you target x86-64-v3 machines like servers, you could see single-digit-percent perf improvements.
Finally, one change I've been working towards for a while is parallelizing gofmt. On my laptop, formatting a large project is now over three times faster!
First class fuzzing support in the Go toolchain. This work has been happening behind the scenes in the dev.fuzz branch for some months, so I hope it will start landing for 1.17.