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

[[https://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 [[https://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 [[https://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
[[https://golang.org/doc/go1.2#cover][test coverage results]].
See the [[https://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 [[https://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
[[https://golang.org/doc/go1.2#stack_size][stack sizes]] and
[[https://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
[[https://golang.org/pkg/runtime/debug][`runtime/debug` package]].)

Finally, among the [[https://golang.org/doc/go1.2#library][many changes to the standard library]],
significant changes include
the new [[https://golang.org/doc/go1.2#encoding][`encoding` package]],
[[https://golang.org/doc/go1.2#fmt_indexed_arguments][indexed arguments]] in `Printf` format strings, and
some [[https://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._
