Google Go 1.5 Revs Garbage Collection, More
"We were writing C++ programs before Go," Cox explained in an interview. "And so we really wanted an alternative to that for building new systems languages. So being able to call Go from C programs gives us a way to replace some pieces of C++ instead of whole programs. But we've replaced whole programs as well. C++ is our background and so it's sort of naturally what we want to do—we want to use Go instead of that. But we've found that many users want to use Go instead of what they were using. We've seen a number of users come from Python and Ruby, which was a bit of a surprise for us. But we’ve really seen people coming from all over." At Google, Go has primarily been used for a lot server software—a lot of the programs that do a lot of networking and coordinating network machines. One example is the download server that serves Chrome downloads, Android downloads and Google Play Store downloads. That's a program that was rewritten from C++ to Go. Another Google system written in Go is the Chrome mobile proxy. Outside Google, there have been other systems. Docker, the container system for managing clusters of Linux machines in the cloud, is the one of the most popular. There's another similar system built at CoreOS called rkt or "Rocket." Google has released a variant of the software they use to run containers in their own cloud called Kubernetes—those are all written in Go. "We have seen some serious traction in adoption of Go outside of Google," said Al Hilwa, an analyst with market research firm IDC. "Many major cloud system software projects like Docker and Cloud Foundry are using Go today. It is good to see that all of Go is now done in Go. With built-in garbage collection, which is improved in the latest release, it offers a distinct advantage in productivity over C/C++." Cox said for the Go 1.5 project there were more than 100 external open-source contributors. "We're starting to see more source code contributions from people at companies like IBM, Canonical, Intel and Oracle," he said. "That shows a lot of progress on the open-source front."In his blog post, Gerrand supports Cox's stance on the language: "The only language change is very minor, the lifting of a restriction in the map literal syntax to make them more succinct and consistent with slice literals," he said.
In addition, he said overall adoption of Go has gone faster than expected, although the language is relatively young. It's also pretty much complete language-wise. "We think the language itself is pretty close to done," Cox said. "We made real changes to the language in 1.1 and 1.2, but since then 1.3 had no language changes and 1.4 and 1.5 had very tiny ones. The standard library is on its way to done, but not done yet. And the standard tooling and the pieces further up the stack have plenty of work to do. The implementations will continue to improve in important ways like the garbage collector has in 1.5."