Go 1.8 is here

Word written TIME TO GO image via Shutterstock
Go 1.8 arrives half a year after 1.7. It brings significant performance improvements and changes across the standard library and two minor changes to the language specification.
Go 1.8 is here. This release includes significant performance improvements and changes across the standard library, changes to the language specification and maintains the Go 1 promise of compatibility, which means that almost all Go programs to continue to compile and run as before.
Go 1.8 overview
The Go team announced in a blog post that the compiler back end introduced in Go 1.7 for 64-bit x86 is now used on all architectures, and those architectures should see significant performance improvements. This release also includes some modest performance improvements for 64-bit x86 systems and the compiler and linker have been made faster. Compile times should be improved by about 15% over Go 1.7. There is still more work to be done in this area: expect faster compilation speeds in future releases.
This release also includes some modest performance improvements for 64-bit x86 systems and the compiler and linker have been made faster. The team claims that compile times should be improved by about 15 percent over the previous release but acknowledged that there is still more work to be done in this area so users should expect faster compilation speeds in future releases.
One other improvement is the fact that garbage collection pauses should be significantly shorter, usually under 100 microseconds and often as low as 10 microseconds.
According to the blog post, 1.8 adds support for contexts (added to the standard library in the previous release) in more parts of the standard library, including the database/sql
and net
packages and Server.Shutdown
in the net/http
package. Furthermore, 1.8 makes it easier to sort slices using the newly added Slice
function in the sort
package.
SEE ALSO: Go 1.7 is here
Changes to the language specification
When explicitly converting a value from one struct type to another, as of Go 1.8 the tags are ignored, according to the release notes. As a result, two structs which differ only in their tags can be converted from one to the other:
func example() { type T1 struct { X int `json:"foo"` } type T2 struct { X int `json:"bar"` } var v1 T1 var v2 T2 v1 = T1(v2) // now legal }
The language specification now only requires that implementations support up to 16-bit exponents in floating-point constants. This does not affect either the “gc” or gccgo compilers, both of which still support 32-bit exponents.
Find the complete list of changes in the Go 1.8 release notes.
asap