# The path to Go 1
14 Mar 2013
Tags: talk, video, go1
Summary: Watch Rob Pike and Andrew Gerrand's talk, The Path to Go 1.
OldURL: /the-path-to-go-1

Andrew Gerrand

##

In July 2012, Rob Pike and I presented a talk at OSCON titled _The path to Go 1_.
In it we explain how Go 1 came to be, and outline the process by which Go
was refined and stabilized to become the clean,
consistent programming environment that it is today.
We present the major highlights of the release and discuss the details behind
some specific libraries and tools.

.iframe //www.youtube.com/embed/bj9T2c2Xk_s 309 550

The slides for the talk are [available here](https://talks.golang.org/2012/go1.slide).

It's almost a year since we cut Go 1.0 and we are now busy preparing Go 1.1.
The release will include performance improvements to the gc compiler,
garbage collector, and goroutine scheduler,
some standard library additions, and many bug fixes and other improvements.
Stay tuned, as we hope to release Go 1.1 in the coming weeks.
