The State of Go
Where we are in February 2015
Andrew Gerrand
Andrew Gerrand
Released in December 2014.
A few important things:
go generate
command.Lots of behind-the-scenes work:
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.
4Why Gerrit?
Why GitHub?
Pros:
Cons:
Coming from Gerrit, Rietveld, or Google's internal code review systems,
GitHub's pull request system is lacking.
Go 1.5 is scheduled for release in August 2015 (was June).
(Previous cycle clashed with holidays and other calendrical events.)
9
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.
10You 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.
11Work began on a new, concurrent GC during the Go 1.4 dev cycle.
Goal:
On track for Go 1.5.
12
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:
13
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:
darwin/arm
build target.)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:
15
Dmitry Vyukov has implemented a trace
tool.
It collects data to produce diagrams of process execution.
Front end is the Android/Chrome trace-viewer. (github.com/google/trace-viewer)
16
Alan Donovan and others have been working on a tools for analyzing and
manipulating Go source code.
Available in the tools
repo:
callgraph
: display the call graph of a Go program.gomvpkg
: moves go packages, updating import declarations.gorename
: type-safe renaming of identifiers in Go source code.Coming soon:
sockdrawer
: a tool for automatically splitting packages.
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)
18More to be announced.
20A 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.
21Lots of Go meetups popping up all over the world.
Find one near you:
22Andrew Gerrand