# Go 1.1
  * [net/http/cookiejar](https://groups.google.com/d/msg/golang-dev/ygDB3nbir00/rouknDcuyakJ)
  * [Function Calls](https://docs.google.com/document/d/1bMwCey-gmqZVTpRax-ESeVuZGmjwbocYs1iHplK-cjo/pub)

# Go 1.2

  * [xml.Marshaler and Umarshaler](http://golang.org/s/go12xml)
  * [encoding.TextMarshaler and Unmarshaler](http://golang.org/s/go12encoding)
  * [Runtime Symbol Table Format](http://golang.org/s/go12symtab)
  * [Field Selectors and Nil Checks](http://golang.org/s/go12nil)
  * [```x[i:j:k]``` Slice Syntax](http://golang.org/s/go12slice)
  * [Preemptive Scheduler](https://docs.google.com/document/d/1ETuA2IOmnaQ4j81AtTGT40Y4_Jr6_IDASEKg0t0dBR8/edit?usp=sharing)

# Go 1.3

  * [Contiguous Stacks](https://docs.google.com/document/d/1wAaf1rYoM4S4gtnPh0zOlGzWtrZFQ5suE8qr2sD8uWQ/pub)
  * [Go 1.3 Linker Overhaul](https://golang.org/s/go13linker)
  * [Go 1.3 Native Client Support](https://docs.google.com/document/d/1oA4rs0pfk5NzUyA0YX6QsUEErNIMXawoscw9t0NHafo/pub)

# Go 1.4

  * [Go channels on steroids](http://golang.org/s/go13chan)
  * [Go 1.4 “Internal” Packages](http://golang.org/s/go14internal)
  * [Go 1.4 src/pkg → src](http://golang.org/s/go14nopkg)
  * [Go 1.4 Custom Import Path Checking](http://golang.org/s/go14customimport)
  * [Go generate: A Proposal](http://golang.org/s/go1.4-generate)
  * [The syscall package](https://docs.google.com/a/golang.org/document/d/1QXzI9I1pOfZPujQzxhyRy6EeHYTQitKKjHfpq0zpxZs)
  * [Go 1.4 Subrepo Renaming](http://golang.org/s/go14subrepo)
  * [Go 1.4 Native Client Support for ARM](http://golang.org/s/go14naclarm)
  * [dev.cc branch plan](http://golang.org/s/dev.cc)

# Go 1.5

  * [Go 1.5 Bootstrap Plan](https://golang.org/s/go15bootstrap)
  * [Go Compiler Overhaul](http://golang.org/s/go13compiler)
  * [Go Execution Tracer](http://goo.gl/eXjfeS)

# Future Proposals

  * [New SSA Backend for the Go Compiler](https://docs.google.com/document/d/1szwabPJJc4J-igUZU4ZKprOrNRNJug2JPD8OYi3i1K0/edit?usp=sharing_eid)
  * [Go 1.4+ Garbage Collection (GC) Plan and Roadmap](http://golang.org/s/go14gc)
  * [Better GC and Memory Allocator for Go](https://docs.google.com/document/d/1HCPu3WKyCX3ZRYxmIMKTk0Ik1dePxKW1p02k3uhcft4/view) 
    * [Groups Discussion](https://groups.google.com/d/topic/golang-dev/pwUh0BVFpY0/discussion)
  * [Precise GC Stack Roots](https://docs.google.com/document/d/13v_u3UrN2pgUtPnH4y-qfmlXwEEryikFu0SQiwk35SA/pub)
  * [Go 1.3 cmd/go and os/fsnotify](http://golang.org/s/go13fsnotify)
  * [Go 1.5 os/fsnotify API](http://goo.gl/MrYxyA)
  * [Simple Multi-Dimensional Slices (Tables)](https://docs.google.com/document/d/1eHm7KqfKP9_s4vR1zToxq-FBazdUQ9ZYi-YhcEtdfR0/edit)
  * [Go execution modes](https://docs.google.com/a/golang.org/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ/edit)
  * [Building and distributing Go packages as shared libraries](https://docs.google.com/a/canonical.com/document/d/1PxhXNhsdqwBjteW7poqv4Vf3PhtTmYuQKkOk_JNWeh0/edit#heading=h.9hyi51rp3owq)
  * [NUMA-aware scheduler for Go](https://docs.google.com/document/d/1d3iI2QWURgDIsSR6G2275vMeQ_X7w-qxM2Vp7iGwwuM/pub)
  * [Go 1.5+ "External" Packages](https://docs.google.com/document/d/1CJnU6ZKvsp21B0lQwbJlKFt8Zz4EWscaCRy_EwK8ja8)

# Other Tools
  * [Go Oracle](https://docs.google.com/document/d/1WmMHBUjQiuy15JfEnT8YBROQmEv-7K6bV-Y_K53oi5Y)
  * [Binding Go and Java](http://golang.org/s/gobind)
  * [Go Builder Plan](http://golang.org/s/builderplan)
  * [gomobile — a tool for building apps](https://docs.google.com/document/d/1cePOQ35PNEb_QqxnPAmBv0cEnAm7AQSGuz9wVeJ-lBs/edit)

# Rejected Proposals
  * [Read-only Slices](https://docs.google.com/a/golang.org/document/d/1UKu_do3FRvfeN5Bb1RxLohV-zBOJWTzX0E8ZU1bkqX0/edit#heading=h.2wzvdd6vdi83), [Evaluation of read-only slices](https://docs.google.com/document/d/1-NzIYu0qnnsshMBpMPmuO21qd8unlimHgKjRD9qwp2A/edit) ([rejected](https://groups.google.com/d/msg/golang-dev/Y7j4B2r_eDw/Rkq-OtEsEBAJ))
  * [Go 1.4: unsafe.Pointer arithmetic](https://docs.google.com/a/dempsky.org/document/d/1yyCMzE4YPfsXvnZNjhszaYNqavxHhvbY-OWPqdzZK30/pub)