Go Changelog

What's new in Go 1.5

Aug 25, 2015
  • The compiler and runtime are now written entirely in Go (with a little assembler). C is no longer involved in the implementation, and so the C compiler that was once necessary for building the distribution is gone.
  • The garbage collector is now concurrent and provides dramatically lower pause times by running, when possible, in parallel with other goroutines.
  • By default, Go programs run with GOMAXPROCS set to the number of cores available; in prior releases it defaulted to 1.
  • Support for internal packages is now provided for all repositories, not just the Go core.
  • The go command now provides experimental support for "vendoring" external dependencies.
  • A new go tool trace command supports fine-grained tracing of program execution.
  • A new go doc command (distinct from godoc) is customized for command-line use.

New in Go 1.2 (Dec 2, 2013)

  • 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 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 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 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. See the go test and cover tool documentation for details. Later this week we will publish an article that discusses this new feature in detail.
  • Goroutines are now 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 stack sizes and 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 runtime/debug package.)
  • Finally, among the many changes to the standard library, significant changes include the new encoding package, indexed arguments in Printf format strings, and some convenient additions to the template packages.

New in Go 1.1.1 (Jun 13, 2013)

  • In 2011 we announced the Go runtime for App Engine. Since then, we have continued to improve the Go App Engine experience, and generally improved Go support for the Google Cloud Platform. For instance, the google-api-go-client provides a Go interface to a range of Google's public APis, including Compute Engine, Cloud Storage, BigQuery, Drive, and many more.