The Go programming language was updated to version 1.8 yesterday. This release is headlined by performance improvements in the compiler and linker, which yield compilation speedups on all platforms.
A major focus of Go has always been real-time performance, allowing applications to speed along without the need for lengthy garbage collection pauses. Go 1.8 is the culmination of a great deal of work to minimize those pauses, much of which was done prior to version 1.7.
This time out, the single remaining blocker to eliminating potentially non-trivial stop-the-world pauses was finally removed. Stack re-scanning had previously caused such pauses, but in 1.8 it has been replaced by “Switching to a hybrid write barrier that combines a Yuasa-style deletion write barrier and a Dijkstra-style insertion write barrier,” according to the change proposal written by Austin Clements and Rick Hudson.
This is also the first release to support 32-bit MIPS on Linux for both big-endian and little-endian machines that implement the MIPS32R1 instruction set, but only those with floating-point units or floating-point unit emulation. That should allow developers to bring their modern Go applications to certain old-school mainframes.
Developers working on smaller platforms got their marching orders with this release as well. All future releases are not likely to support ARMv5E or ARMv6 processors. Instead, Go 1.9 will require ARMv6K or newer.
Elsewhere in the language, there is a new Slice function in the sort package, which makes it easier to sort slices. Contexts, which were introduced in Go 1.7, now provide cancellation and timeout mechanisms. There were also improvements to the HTTP server included with Go.