| # Go 1.5 is released |
| 19 Aug 2015 |
| Summary: Go 1.5 adds a new, much faster garbage collector, more parallelism by default, go tool trace, and more. |
| |
| Andrew Gerrand |
| adg@golang.org |
| |
| ## |
| |
| Today the Go project is proud to release Go 1.5, |
| the sixth major stable release of Go. |
| |
| This release includes significant changes to the implementation. |
| The compiler tool chain was [translated from C to Go](https://golang.org/doc/go1.5#c), |
| removing the last vestiges of C code from the Go code base. |
| The garbage collector was [completely redesigned](https://golang.org/doc/go1.5#gc), |
| yielding a [dramatic reduction](https://talks.golang.org/2015/go-gc.pdf) |
| in garbage collection pause times. |
| Related improvements to the scheduler allowed us to change the default |
| [GOMAXPROCS](https://golang.org/pkg/runtime/#GOMAXPROCS) value |
| (the number of concurrently executing goroutines) |
| from 1 to the number of logical CPUs. |
| Changes to the linker enable distributing Go packages as shared libraries to |
| link into Go programs, and building Go packages into archives or shared |
| libraries that may be linked into or loaded by C programs |
| ([design doc](https://golang.org/s/execmodes)). |
| |
| The release also includes [improvements to the developer tools](https://golang.org/doc/go1.5#go_command). |
| Support for ["internal" packages](https://golang.org/s/go14internal) |
| permits sharing implementation details between packages. |
| [Experimental support](https://golang.org/s/go15vendor) for "vendoring" |
| external dependencies is a step toward a standard mechanism for managing |
| dependencies in Go programs. |
| The new "[go tool trace](https://golang.org/cmd/trace/)" command enables the |
| visualisation of program traces generated by new tracing infrastructure in the |
| runtime. |
| The new "[go doc](https://golang.org/cmd/go/#hdr-Show_documentation_for_package_or_symbol)" |
| command provides an improved command-line interface for viewing Go package documentation. |
| |
| There are also several [new operating system and architecture ports](https://golang.org/doc/go1.5#ports). |
| The more mature new ports are darwin/arm, |
| darwin/arm64 (Apple's iPhone and iPad devices), |
| and linux/arm64. |
| There is also experimental support for ppc64 and ppc64le |
| (IBM 64-bit PowerPC, big and little endian). |
| |
| The new darwin/arm64 port and external linking features fuel the |
| [Go mobile project](https://godoc.org/golang.org/x/mobile), an experiment to |
| see how Go might be used for building apps on Android and iOS devices. |
| (The Go mobile work itself is not part of this release.) |
| |
| The only language change is very minor, |
| [the lifting of a restriction in the map literal syntax](https://golang.org/doc/go1.5#language) |
| to make them more succinct and consistent with slice literals. |
| |
| The standard library saw many additions and improvements, too. |
| The flag package now shows [cleaner usage messages](https://golang.org/doc/go1.5#flag). |
| The math/big package now provides a [Float](https://golang.org/pkg/math/big/#Float) |
| type for computing with arbitrary-precision floating point numbers. |
| An [improvement](https://golang.org/doc/go1.5#net) to the DNS resolver on |
| Linux and BSD systems has removed the cgo requirement for programs that do name |
| lookups. |
| The [go/types](https://golang.org/pkg/go/types/) package has been |
| [moved](https://golang.org/doc/go1.5#go_types) to the standard library from |
| the [golang.org/x/tools](https://godoc.org/golang.org/x/tools) repository. |
| (The new [go/constant](https://golang.org/pkg/go/constant/) and |
| [go/importer](https://golang.org/pkg/go/importer/) packages are also a result |
| of this move.) |
| The reflect package has added the |
| [ArrayOf](https://golang.org/pkg/reflect/#ArrayOf) and |
| [FuncOf](https://golang.org/pkg/reflect/#FuncOf) functions, analogous to the |
| existing [SliceOf](https://golang.org/pkg/reflect/#SliceOf) function. |
| And, of course, there is the usual |
| [list of smaller fixes and improvements](https://golang.org/doc/go1.5#minor_library_changes). |
| |
| For the full story, see the [detailed release notes](https://golang.org/doc/go1.5). |
| Or if you just can't wait to get started, |
| head over to the [downloads page](https://golang.org/dl/) to get Go 1.5 now. |