Go 1.1 brings better performance and a race detector
Google has released version 1.1 of the Go programming language, the first major revision of the language and its tools since it was introduced in 2012. Since then, there has been a lot of interest in the language as it offers a rich alternative to C and C++ as a basis for system and application development in modern highly connected environments. While much of the work in the update has focussed on improving performance, new features include a race detector for finding memory synchronisation problems and new functionality in the standard library of the language.
The performance enhancements have resulted in generated code typically running around 30 to 40 per cent faster thanks to better code generation, more inlining of code and a more parallel garbage collector. There's also tighter coupling of the runtime and network libraries which results in less context switching when doing network operations. Maps in Go have also been improved so that they use less memory and do not tax the CPU as much.
While most of the changes to Go 1.1 are internal, giving better performance over the 1.0.x series of the language, it is still compatible with these releases and the developers recommend all users to upgrade. Actual changes to the language itself include tweaked return requirements and the introduction of method values. The new race detector should make concurrent programs safer in Go as it can be used to find data race conditions in program memory that can lead to corrupted memory and crashes.
The developers point out that since the release of Go 1.0 in March 2012, the project has received over 2600 commits from 161 non-Google contributors and that this shows the thriving developer community that continues to grow around the language. More information about the new features in Go 1.1 can be found in the release announcement from the Go community. More details on language changes and new functionality in the standard library is available in the Go 1.1 Release Notes. Go 1.1 can be downloaded from golang.org and the BSD licensed source code is available on Google Code.