| # 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._ |