1 December 2013
We are pleased to announce the release of Go 1.2, the latest stable version of
the Go Programming Language.
Binary distributions may be downloaded from the
usual place or if you prefer to
compile from source you should use
the release or go1.2 tags.
This new release comes nearly seven months after the release of Go 1.1 in May,
a much shorter period than the 14 months between 1.1 and 1.0.
We anticipate a comparable interval between future major releases.
Go 1.2 includes a couple of minor
language changes, several improvements to the language implementation and
tools, some performance improvements, and many additions and
(backward-compatible) changes to the standard library.
Please read the release notes for all
the details, as some changes may affect the behavior of existing (buggy) programs.
What follows is the highlights of the release.
A new three-index slice syntax
adds the ability to specify capacity as well as length. This allows the
programmer to pass a slice value that can only access a limited portion of the
underlying array, a technique that previously required the use of the unsafe
A major new feature of the tool chain is the facility to compute and display
test coverage results.
See the go test
and cover tool
documentation for details. Later this week we will publish an article that
discusses this new feature in detail.
Goroutines are now pre-emptively scheduled,
in that the scheduler is invoked occasionally upon entry to a function.
This can prevent busy goroutines from starving other goroutines on the same
An increase to the default goroutine stack size should improve the
performance of some programs. (The old size had a tendency to introduce
expensive stack-segment switching in performance-critical sections.)
On the other end, new restrictions on
stack sizes and
the number of operating system threads
should prevent misbehaving programs from consuming all the resources of a
machine. (These limits may be adjusted using new functions in the
Finally, among the many changes to the standard library,
significant changes include
the new encoding package,
indexed arguments in Printf format strings, and
some convenient additions to the template packages.
As part of the release, the Go Playground has been
updated to Go 1.2. This also affects services that use the Playground, such as
the Go Tour and this blog.
The update also adds the ability to use threads and the os, net, and
unsafe packages inside the sandbox, making it more like a real Go environment.
To everyone who helped make this release possible, from the many users who
submitted bug reports to the 116 (!) contributors who committed more than 1600
changes to the core: Your help is invaluable to the project. Thank you!
This blog post is the first of the
Go Advent Calendar,
a series of daily articles presented by the
Gopher Academy from December 1 to 25.