Go has reached the first major release, Google promising it will be stable for the years to come. YouTube uses Go in their core infrastructure.
Announced in November 2009, Google Go has reached the first major milestone: Go Version 1, or Go 1. After 2 years of working on its specifications and stability, Google says that Go is ready for adoption and any Go 1 program will be compiled and run without changes with future point releases of the language for years to come. Compatibility is to be maintained at source code level and may require recompilation between point releases. Major releases, such as Go 2, may break the compatibility even at source code level when the specs may need to change, for example due to security reasons. Go 1 and the Future of Go Programs explains the Go compatibility issues developers may have in the future and how to prevent them. Programs written prior to this release can be automatically updated to run with Go 1 using the go fix tool.
Go comes with some new additions: Unicode characters aka the rune type, the error type and package, a time package and others detailed in the Release Notes.
Currently, Go 1 programs can run on Linux, FreeBSD, Mac OS X and Windows, the standard distribution including compilers for x86, AMD-64 and ARM CPUs. A PowerPC compiler is in the works.
The App Engine SDK 1.6.4 has been updated to support Go 1 running on Linux and Max OS X platforms, both 32 and 64 bit. Google has been using Go internally but without offering many details until recently. Andrew Gerrand, a Google Engineer, declared that YouTube uses Go in “their core infrastructure, serving more than a billion requests per day with this service alone.” Also, Vitess, a Google project meant to help scaling up MySQL, is written in Go.
Some users of Go are: Canonical uses Go for their backend infrastructure, Atlassian uses Go for provisioning and monitoring test servers, Doozer, an open source consistent and distributed data store is implemented in Go and run on Heroku, , and others. Nonetheless, the language has not gained minimal adoption and it just dropped from Tiobe’s Top 50 Languages this month which poses significant questions regarding its future.
Go is a compiled static language meant to replace native languages such as C and C++ by having a simpler syntax, fast execution time and cross-platform support. The Tour of Go interactively shows its basic features.
Google is proposing yet another language, Dart, which is a dynamic language meant to replace JavaScript. Like Go, Dart has not yet seen significant adoption, making one wonder if Google will end up being the only one using it in the future.