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