Go 1.1 Races Ahead (Safely)
The Go language's major 1.1 release completes the delivery of several new features announced at the time of its beta review period. Many developers will see benefits the moment they recompile their code, while other features will require the use of new libraries or patterns to be utilized.
Those seeking detailed information on the performance increases can look to Go contributor Dave Cheney, who has produced an in-depth series of articles detailing exactly how much the performance in Go 1.1 has increased. In part 1, Cheney uses the Linux/AMD64 platform for his measurements, with the majority of benchmarks recording increased speed on 1.1. Interestingly, the performance of Gzip and GobEncode has slightly regressed. Cheney's benchmarks for the net/http package show improvements across the board, with the caveat that the Windows and FreeBSD platforms will not match the Linux performance until Go 1.2 is released. Additional articles in Cheney's series detail results for i386 and ARM (which includes the Raspberry Pi).
Off to the Races
Go's toolset receives the big addition of a race detector for use when debugging memory synchronization errors. A race condition occurs in a multithreaded system when two or more threads attempt to manipulate data structures simultaneously. Looking at Go specifically, “a data race occurs when two goroutines access the same variable concurrently and at least one of the accesses is a write.” Due to the nature of the bugs, these are often difficult to locate and correct, and this new tool seeks to ease the process. Currently the race detector is available for use on the 64-bit x86 architectures on Windows, Linux, and Mac OS X platforms.
The major supported platforms for Go include FreeBSD, Linux, Mac OS X, Windows, and NetBSD. All support i386 and AMD64 architectures with FreeBSD and Linux additionally supporting ARM. Instructions on installing Go and direct downloads are available on at golang.org. (Note that the current release is Go 1.1.1, which includes minor bug fixes to the major 1.1 release.)