What's new?

Go 1.8 is here

Gabriela Motroc
#go

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

Author
Gabriela Motroc
Gabriela Motroc is an online editor for JAXenter.com. Before working at S&S Media she studied International Communication Management at The Hague University of Applied Sciences.

Comments
comments powered by Disqus