| Go 1.5 is released | 
 | 19 Aug 2015 | 
 |  | 
 | Andrew Gerrand | 
 | adg@golang.org | 
 |  | 
 | * Introduction | 
 |  | 
 | 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 [[https://golang.org/doc/go1.5#c][translated from C to Go]], | 
 | removing the last vestiges of C code from the Go code base. | 
 | The garbage collector was [[https://golang.org/doc/go1.5#gc][completely redesigned]], | 
 | yielding a [[https://talks.golang.org/2015/go-gc.pdf][dramatic reduction]] | 
 | in garbage collection pause times. | 
 | Related improvements to the scheduler allowed us to change the default | 
 | [[https://golang.org/pkg/runtime/#GOMAXPROCS][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 | 
 | ([[https://golang.org/s/execmodes][design doc]]). | 
 |  | 
 | The release also includes [[https://golang.org/doc/go1.5#go_command][improvements to the developer tools]]. | 
 | Support for [[https://golang.org/s/go14internal]["internal" packages]] | 
 | permits sharing implementation details between packages. | 
 | [[https://golang.org/s/go15vendor][Experimental support]] for "vendoring" | 
 | external dependencies is a step toward a standard mechanism for managing | 
 | dependencies in Go programs. | 
 | The new "[[https://golang.org/cmd/trace/][go tool trace]]" command enables the | 
 | visualisation of  program traces generated by new tracing infrastructure in the | 
 | runtime. | 
 | The new "[[https://golang.org/cmd/go/#hdr-Show_documentation_for_package_or_symbol][go doc]]" | 
 | command provides an improved command-line interface for viewing Go package documentation. | 
 |  | 
 | There are also several [[https://golang.org/doc/go1.5#ports][new operating system and architecture 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 | 
 | [[https://godoc.org/golang.org/x/mobile][Go mobile project]], 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, | 
 | [[https://golang.org/doc/go1.5#language][the lifting of a restriction in the map literal syntax]] | 
 | to make them more succinct and consistent with slice literals. | 
 |  | 
 | The standard library saw many additions and improvements, too. | 
 | The flag package now shows [[https://golang.org/doc/go1.5#flag][cleaner usage messages]]. | 
 | The math/big package now provides a [[https://golang.org/pkg/math/big/#Float][Float]] | 
 | type for computing with arbitrary-precision floating point numbers. | 
 | An [[https://golang.org/doc/go1.5#net][improvement]] to the DNS resolver on | 
 | Linux and BSD systems has removed the cgo requirement for programs that do name | 
 | lookups. | 
 | The [[https://golang.org/pkg/go/types/][go/types]] package has been | 
 | [[https://golang.org/doc/go1.5#go_types][moved]] to the standard library from | 
 | the [[https://godoc.org/golang.org/x/tools][golang.org/x/tools]] repository. | 
 | (The new [[https://golang.org/pkg/go/constant/][go/constant]] and | 
 | [[https://golang.org/pkg/go/importer/][go/importer]] packages are also a result | 
 | of this move.) | 
 | The reflect package has added the | 
 | [[https://golang.org/pkg/reflect/#ArrayOf][ArrayOf]] and | 
 | [[https://golang.org/pkg/reflect/#FuncOf][FuncOf]] functions, analogous to the | 
 | existing [[https://golang.org/pkg/reflect/#SliceOf][SliceOf]] function. | 
 | And, of course, there is the usual | 
 | [[https://golang.org/doc/go1.5#minor_library_changes][list of smaller fixes and improvements]]. | 
 |  | 
 | For the full story, see the [[https://golang.org/doc/go1.5][detailed release notes]]. | 
 | Or if you just can't wait to get started, | 
 | head over to the [[https://golang.org/dl/][downloads page]] to get Go 1.5 now. |