The State of Go

Where we are in February 2015

Andrew Gerrand

Go 1.4

Released in December 2014.

A few important things:

Lots of behind-the-scenes work:


Transition to Git


Transition to Git

In December we migrated the Go repositories from Mercurial to Git.

Also moved to new development infrastructure:

A big deal for Go contributors, but not important to Go users.


Why Git?

Why Gerrit?

Why GitHub?


Transition pros and cons




Why not accept pull requests?

Coming from Gerrit, Rietveld, or Google's internal code review systems,
GitHub's pull request system is lacking.


Go 1.5


Change to release cycle

Go 1.5 is scheduled for release in August 2015 (was June).

(Previous cycle clashed with holidays and other calendrical events.)


From C to Go

The gc tool chain is being converted from C to Go.

An ongoing process, started early 2014.
Russ Cox says "It'll be done by March [2015]."

New link tool to replace 6l, 8l, etc.
New asm tool to replace 6a, 8a, etc.
Machine-translated gc to replace 6g, 8g, etc.

Design doc:

Go 1.5 will have no C code in the tool chain or runtime.


Compiling Go 1.5

You will need Go 1.4 to build Go 1.5 and above.

(But you will not need a C compiler!)

As a user, put Go 1.4 in $HOME/go1.4 (or set $GOROOT_BOOTSTRAP).

New OS or architecture ports will need to cross-compile.

Design doc:

If you use a binary distribution of Go, you don't need to do anything.


Concurrent Garbage Collector

Work began on a new, concurrent GC during the Go 1.4 dev cycle.


On track for Go 1.5.



Brad Fitzpatrick has implemented an HTTP/2 server for Go.

Will be in the standard library by Go 1.soon.

Go servers that use net/http will get HTTP/2 for free.

Currently in Brad's GitHub:

See it in action:



David Crawshaw, Hana Kim, Minux, and Burcu Dogan have been working on Go for
mobile devices.

Can build Android apps with Go 1.4
(if you can work out the Android build system).

For Go 1.5:


New architectures

Go 1.5 will support PowerPC 64 and (maybe) ARM64.

PowerPC 64 is basically done; builder running, passes tests.

ARM64 development ongoing.
Hope to have a dev.arm64 branch in the main repo for Go 1.5.
Stretch goal is merging it into master.

See work in progress for ARM64 here:


Execution tracing

Dmitry Vyukov has implemented a trace tool.
It collects data to produce diagrams of process execution.

Front end is the Android/Chrome trace-viewer. (


Analysis and Refactoring Tools

Alan Donovan and others have been working on a tools for analyzing and
manipulating Go source code.

Available in the tools repo:

Coming soon:


Builder infrastructure

Brad Fitzpatrick and Andrew Gerrand have been hacking away at our continuous
build infrastructure.

Now running Linux, FreeBSD, OpenBSD, and Plan 9 builders
on Google Compute Engine. (OS X, Windows coming soon.)

Spin up builders to do work, spin up many in parallel.
Gives us results much faster.

Up next: trybots to test pending changes.

Also: gomote! (Demo)


The Go Community


Conferences in 2015

More to be announced.


Gopher Gala

A global Go hackathon, in January 2015 (last week).

Teams compete to produce Go apps, judged by "usefulness, creativity, completeness, and how well they showcase Go's strengths."

Also physical hackathons around the world: from San Francisco to Stockholm to Tokyo.

Cool prizes, including a Chromebook Pixel, a Raspberry Pi, and a trip to Colima, Mexico.

The winners have been announced.


Go user groups

Lots of Go meetups popping up all over the world.

Find one near you:


Thank you

Andrew Gerrand

Use the left and right arrow keys or click the left and right edges of the page to navigate between slides.
(Press 'H' or navigate to hide this message.)