Google today announced version 1 of its Go language, or Go 1 for short.
Downloadable at the Go website, the open source Go has been positioned as a general-purpose language suitable for uses ranging from application development to systems programming and offering such features as garbage collection and concurrency. It also is intended to be easy to program.
Go 1 is the first release supporting binary distributions, which are available in Linux, FreeBSD, Mac OS X, and Windows. The language also integrates with Google's App Engine cloud platform.
"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," according to a post from Go team member Andrew Gerrand on the Go language blog.
Google also is striving for forward compatibility; version 1 is a representation of Go as it is used today and is not a major redesign, Gerrand said. But it introduces changes such as new types for Unicode characters and errors. The package hierarchy has been rearranged to group related items together.
"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 backward-incompatible. Go 1 incorporates these changes, which provide significant improvements to the language and libraries but sometimes introduce incompatibilities for old programs. Fortunately, the go fix tool can automate much of the work needed to bring programs up to the Go 1 standard," Gerrand said.
The Go tool suite is being structured around the go command, which is a program for fetching, building, installing, and maintaining Go code. This command eliminates the need for Makefiles to write Go code. Go 1 also triggers a new release of Google App Engine SDK.
In envisioning Go, Google has sought to address what it sees as a need for faster software development and accommodating multicore chips. Go is intended to enable compiling of large programs in a few seconds on a single computer and provide a model for software construction making dependency analysis easy.