|  | # Go 1.2 is released | 
|  | 1 Dec 2013 | 
|  | Tags: release | 
|  | Summary: Go 1.2 adds test coverage results, goroutine preemption, and more. | 
|  |  | 
|  | Andrew Gerrand | 
|  |  | 
|  | ## | 
|  |  | 
|  | 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](https://golang.org/doc/install) or if you prefer to | 
|  | [compile from source](https://golang.org/doc/install/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](https://golang.org/doc/go1.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](https://golang.org/doc/go1.2) 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](https://golang.org/doc/go1.2#three_index) | 
|  | 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 | 
|  | package. | 
|  |  | 
|  | A major new feature of the tool chain is the facility to compute and display | 
|  | [test coverage results](https://golang.org/doc/go1.2#cover). | 
|  | See the [`go test`](https://golang.org/cmd/go/#hdr-Description_of_testing_flags) | 
|  | and [cover tool](https://godoc.org/code.google.com/p/go.tools/cmd/cover/) | 
|  | documentation for details. Later this week we will publish an article that | 
|  | discusses this new feature in detail. | 
|  |  | 
|  | Goroutines are now [pre-emptively scheduled](https://golang.org/doc/go1.2#preemption), | 
|  | in that the scheduler is invoked occasionally upon entry to a function. | 
|  | This can prevent busy goroutines from starving other goroutines on the same | 
|  | thread. | 
|  |  | 
|  | 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](https://golang.org/doc/go1.2#stack_size) and | 
|  | [the number of operating system threads](https://golang.org/doc/go1.2#thread_limit) | 
|  | should prevent misbehaving programs from consuming all the resources of a | 
|  | machine. (These limits may be adjusted using new functions in the | 
|  | [`runtime/debug` package](https://golang.org/pkg/runtime/debug).) | 
|  |  | 
|  | Finally, among the [many changes to the standard library](https://golang.org/doc/go1.2#library), | 
|  | significant changes include | 
|  | the new [`encoding` package](https://golang.org/doc/go1.2#encoding), | 
|  | [indexed arguments](https://golang.org/doc/go1.2#fmt_indexed_arguments) in `Printf` format strings, and | 
|  | some [convenient additions](https://golang.org/doc/go1.2#text_template) to the template packages. | 
|  |  | 
|  | As part of the release, the [Go Playground](http://play.golang.org/) has been | 
|  | updated to Go 1.2. This also affects services that use the Playground, such as | 
|  | [the Go Tour](http://tour.golang.org/) 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](http://blog.gopheracademy.com/day-01-go-1.2), | 
|  | _a series of daily articles presented by the_ | 
|  | [Gopher Academy](http://gopheracademy.com/) _from December 1 to 25._ |