The State of Go

Where we are in June 2014

Andrew Gerrand

Yesterday

2

Initial reception

Looking back on the first months.

3

Complaints

The complaints started right away…

4

Familiar complaints

5

Familiar complaints

The first HN thread about Go was mostly an argument about braces and indentation.

6

Historic moments

The first public language change (Dec 10, 2009):

7

The gopher

8

The gopher

9

The gopher

10

A keen observation

11

Signs of hope

12

Today

13

Growth

14

User groups

Today there are 48 active user groups in 15 countries across 5 continents.

15

GopherCon

Community-driven. 3 days. 700 attendees. 24 talks. 1 panel. 4 hours of lightning talks!

16

The gopher

17

The gopher

18

The gopher

19

Go 1.3

Released last Wednesday, 18 June 2014.

Highlights:

20

Tomorrow

21

Upcoming conferences

22

Go 1.4

Due December 1st, 2014.

What might be in it? (Speculative list follows.)

23

New language features

Nope.

24

Canonical import paths

A means for a repository to specify its canonical import path.

Goal: stop people from checking out repos from the wrong path.

Applications:

"camlistore.org" -> "camlistore.googlesource.com/camlistore"

(Proposal forthcoming.)

25

Internal packages

Current proposal:

"An import of a path containing the element “internal” is disallowed if the importing code is outside the tree rooted at the parent of the “internal” directory."

And, later:

26

src/pkg → src

Move the standard library from $GOROOT/src/pkg to $GOROOT/src.

Basically makes $GOROOT work just like $GOPATH.

(Not a big deal for most, but a nice clean up for the core.)

27

File system access throttling

Throttling of access to the file system at the os package level.

Goal:

Make it work just as nicely as it does with the network.

(Proposal forthcoming.)

28

"go generate"

A convenience for generating Go source code. Example uses:

Proposed mechanism:

Add generator directive in Go source files:

//go:generate yacc -o gopher.go gopher.y

Use the Go tool to execute the directives:

% go generate [packagepath]

(Proposal forthcoming.)

29

More tool chain work

The transition from C to Go continues:

30

Better GC and malloc

Rough estimate: 10-20% overall speedup, 20-50% GC pause reduction, 5-10% RSS reduction.

Details:

31

Other runtime changes

Concurrency improvements:

C to Go:

32

Package changes

33

Ports

34

Go support for Android

Go support for the NDK. (Like C/C++ today, but better!)

Goal: enough support for writing games.

Based on the work of Elias Naur and others in the community.

35

More

36

Questions?

37

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.)