| Go version 1 is released |
| 28 Mar 2012 |
| Tags: release, go1 |
| |
| Andrew Gerrand |
| |
| * Introduction |
| |
| .image go-version-1-is-released_gophermega.jpg |
| |
| Today marks a major milestone in the development of the Go programming language. |
| We're announcing Go version 1, or Go 1 for short, |
| which defines a language and a set of core libraries to provide a stable |
| foundation for creating reliable products, |
| projects, and publications. |
| |
| Go 1 is the first release of Go that is available in supported binary distributions. |
| They are available for Linux, FreeBSD, Mac OS X and, |
| we are thrilled to announce, Windows. |
| |
| The driving motivation for Go 1 is stability for its users. |
| People who write Go 1 programs can be confident that those programs will |
| continue to compile and run without change, |
| in many environments, on a time scale of years. |
| Similarly, authors who write books about Go 1 can be sure that their examples |
| and explanations will be helpful to readers today and into the future. |
| |
| Forward compatibility is part of stability. |
| Code that compiles in Go 1 should, with few exceptions, |
| continue to compile and run throughout the lifetime of that version, |
| even as we issue updates and bug fixes such as Go version 1.1, 1.2, and so on. |
| The [[https://golang.org/doc/go1compat.html][Go 1 compatibility document]] |
| explains the compatibility guidelines in more detail. |
| |
| Go 1 is a representation of Go as it is used today, |
| not a major redesign. |
| In its planning, we focused on cleaning up problems and inconsistencies |
| and improving portability. |
| There had long been many changes to Go that we had designed and prototyped |
| but not released because they were backwards-incompatible. |
| Go 1 incorporates these changes, which provide significant improvements |
| to the language and libraries but sometimes introduce incompatibilities for old programs. |
| Fortunately, the [[https://golang.org/cmd/go/#Run_go_tool_fix_on_packages][go fix]] |
| tool can automate much of the work needed to bring programs up to the Go 1 standard. |
| |
| Go 1 introduces changes to the language (such as new types for [[https://golang.org/doc/go1.html#rune][Unicode characters]] |
| and [[https://golang.org/doc/go1.html#errors][errors]]) and the standard |
| library (such as the new [[https://golang.org/doc/go1.html#time][time package]] |
| and renamings in the [[https://golang.org/doc/go1.html#strconv][strconv package]]). |
| Also, the package hierarchy has been rearranged to group related items together, |
| such as moving the networking facilities, |
| for instance the [[https://golang.org/pkg/net/rpc/][rpc package]], |
| into subdirectories of net. |
| A complete list of changes is documented in the [[https://golang.org/doc/go1.html][Go 1 release notes]]. |
| That document is an essential reference for programmers migrating code from |
| earlier versions of Go. |
| |
| We also restructured the Go tool suite around the new [[https://golang.org/doc/go1.html#cmd_go][go command]], |
| a program for fetching, building, installing and maintaining Go code. |
| The go command eliminates the need for Makefiles to write Go code because |
| it uses the Go program source itself to derive the build instructions. |
| No more build scripts! |
| |
| Finally, the release of Go 1 triggers a new release of the [[https://developers.google.com/appengine/docs/go][Google App Engine SDK]]. |
| A similar process of revision and stabilization has been applied to the |
| App Engine libraries, |
| providing a base for developers to build programs for App Engine that will run for years. |
| |
| Go 1 is the result of a major effort by the core Go team and our many contributors |
| from the open source community. |
| We thank everyone who helped make this happen. |
| |
| There has never been a better time to be a Go programmer. |
| Everything you need to get started is at [[https://golang.org/][golang.org]]. |