Release day is always fun, and Go releases get me pretty excited. The 1.7 release is especially nice, so I’m going to mention some of my favorite changes in this release.
IBM z System Support
Bill O’Farrell gave a talk at GopherCon 2016 about this port and I found it fascinating. Supporting Go on big iron can only be good for the language and for Go users everywhere. This is an exciting development and I’m looking forward to see what comes next from the IBM team.
SSA In the Compiler
The compiler got an upgrade in Go 1.7 – with Static Single Assignment, or SSA support. This new SSA support means that it will be easier in the future to analyze and optimize your code while it’s being compiled. Coupled with other changes in the compiler toolchain, we’ve already seen some nice improvements both in compile times and binary size decreases. Kudos to the Go team for putting in the hard work and planning for future optimizations. SSA is going to bring us big things.
Context is now in standard library
Perhaps my favorite new feature: the x/net/context package has been moved into the standard library. Additionally, packages like net/http and os/exec have gained support for this new package without breaking the Go 1 compatibility contract. The Context package allows you to support cancelation, timeouts, and stores interesting request-specific data – allowing you to have more control over the network requests that you make.
A big caveat with this release: If you compile binaries for macOS Sierra you’ll need to use either Go 1.6.3 or Go 1.7. Binaries compiled with older versions of Go won’t work reliably on macOS Sierra. They may appear to be working, but I’ve seen firsthand that they’ll eventually fail in spectacular ways. If you distribute binaries using an automated build system, please update your automation to use Go 1.6.3 or Go 1.7.
** UPDATE ** Go 1.6.3 was re-broken with the new macOS Sierra beta 4. Use 1.7.
Changes to the garbage collector and other runtime components should result in a “5-35%” improvement in the speed of your application. I absolutely love that Go gets better and faster with each release. Compile times are coming back down after the big spike in the 1.5 release.