| # 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. |