Go 1.2 is released
1 Dec 2013
Tags: release

Andrew Gerrand

* Introduction

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
[[http://golang.org/doc/install][usual place]] or if you prefer to
[[http://golang.org/doc/install/source][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.

[[http://golang.org/doc/go1.2][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 [[http://golang.org/doc/go1.2][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 [[http://golang.org/doc/go1.2#three_index][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
package.

A major new feature of the tool chain is the facility to compute and display
[[http://golang.org/doc/go1.2#cover][test coverage results]].
See the [[http://golang.org/cmd/go/#hdr-Description_of_testing_flags][`go`test`]]
and [[http://godoc.org/code.google.com/p/go.tools/cmd/cover/][cover tool]]
documentation for details. Later this week we will publish an article that
discusses this new feature in detail.

Goroutines are now [[http://golang.org/doc/go1.2#preemption][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
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
[[http://golang.org/doc/go1.2#stack_size][stack sizes]] and
[[http://golang.org/doc/go1.2#thread_limit][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
[[http://golang.org/pkg/runtime/debug][`runtime/debug` package]].)

Finally, among the [[http://golang.org/doc/go1.2#library][many changes to the standard library]],
significant changes include
the new [[http://golang.org/doc/go1.2#encoding][`encoding` package]],
[[http://golang.org/doc/go1.2#fmt_indexed_arguments][indexed arguments]] in `Printf` format strings, and
some [[http://golang.org/doc/go1.2#text_template][convenient additions]] to the template packages.

As part of the release, the [[http://play.golang.org/][Go Playground]] has been
updated to Go 1.2. This also affects services that use the Playground, such as
[[http://tour.golang.org/][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_
[[http://blog.gopheracademy.com/day-01-go-1.2][Go Advent Calendar]],
_a_series_of_daily_articles_presented_by_the_
[[http://gopheracademy.com/][Gopher Academy]] _from_December_1_to_25._
