| 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 [[https://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._ |