Google has released version 1.1 of Go, its open source programming language, bringing significant performance improvements.

"We have made optimizations in the compiler and linker, garbage collector, goroutine scheduler, map implementation, and parts of the standard library," Google engineer Andrew Gerrand wrote on the Go blog yesterday. "It is likely that your Go code will run noticeably faster when built with Go 1.1." Go 1.1 is compatible with Go 1.0, so all users should upgrade.

Go was unveiled in 2009 after being developed inside Google for a couple of years. It was designed from the start to offer an "expressive type system, fast compilation, good performance, and built-in language features that simplify threaded programming and concurrency," as Ryan Paul wrote for Ars at the time. Google uses Go internally for a few services, including the server that delivers Chrome binaries.

Go isn't Google's only programming language; the company has also built Dart, an alternative to Javascript.

Go code should run 30 to 40 percent faster in the new version, Google said:

Typical improvements relative to Go 1.0 seem to be about 30%-40%, sometimes much more, but occasionally less or even non-existent. There are too many small performance-driven tweaks through the tools and libraries to list them all here, but the following major changes are worth noting: The gc compilers generate better code in many cases, most noticeably for floating point on the 32-bit Intel architecture.

The gc compilers do more in-lining, including for some operations in the run-time such as append and interface conversions.

There is a new implementation of Go maps with significant reduction in memory footprint and CPU time.

The garbage collector has been made more parallel, which can reduce latencies for programs running on multiple CPUs.

The garbage collector is also more precise, which costs a small amount of CPU time but can reduce the size of the heap significantly, especially on 32-bit architectures.

Due to tighter coupling of the run-time and network libraries, fewer context switches are required on network operations.

You can find a full list of changes in Go 1.1 on the language's official site.