Go Proposals

Introduction

Proposing Changes to Go. The document that describes the process for proposing, documenting, and implementing changes to the Go project.

Proposals

The proposal is grouped by its status: Draft, Incoming, Active, Hold, Accepted, Declined, and Withdraw; then ordered by issue number, not by created date or last updated, in descending order (the latest proposal is at the top).

Draft

Custom Fuzz Input Types, May 2023
Richard Hansen
Discussion at #48815.

Less Error-Prone Loop Variable Scoping, May 2023
David Chase and Russ Cox Discussion at #60078.

Go Vulnerability Database, March 2021
Roland Shoemaker and Filippo Valsorda.

First Class Fuzzing, 24 February 2021
Katie Hockman
Discussion at Reddit.

File System Interfaces for Go, July 2020
Russ Cox and Rob Pike
Discussion at Reddit.

Go command support for embedded static assets (files), July 2020
Russ Cox and Brad Fitzpatrick
Discussion at Reddit.

Bug-resistant build constraints, 30 June 2020
Russ Cox
Discussion at Reddit.

Go 2 Draft Designs

Incoming

Check references to standard library packages inconsistent with go.mod go version, 12 May 2021
Jay Conrod
Discussion at #46136.

GC Pacer Redesign, 8 February 2021
Michael Knyszek
Discussion at #44167.

Make the internal lockedfile package public, 15 October 2019
Adrien Delorme
Discussion at #33974.

Active

Localization support in Go, September 2015
Marcel van Lohuizen
Discussion at #12750.

Hold

Generic parameterization of array sizes, 16 March 2021
Andrew Werner
Discussion at #44253.

go:wasmexport directive, 17 December 2020
Francesco Guardiani
Discussion at #42372.

Make 64-bit fields be 64-bit aligned on 32-bit systems, add //go:packed, //go:align directives, 8 July 2020
Dan Scales
Discussion at #36606.

Built in support for high performance unbounded queue, 2 October 2018
Christian Petrin
Discussion at #27935.

Raw XML Token, 1 September 2018
Sam Whited
Discussion at #26756.

percpu.Sharded, an API for reducing cache contention, 27 January 2017
Austin Clements
Discussion at #18802.

Accepted

Extended backwards compatibility for Go, December 2022
Russ Cox
Discussion at #56986.

Structured Logging. 19 October 2022
Jonathan Amsterdam
Discussion at #56345.

Profile guided optimization. 12 September 2022
Cherry Mui, Austin Clements, and Michael Pratt
Discussion at #55022.

Extend code coverage testing to include applications, March 2022
Than McIntosh
Discussion at #51430

go/doc: headings, lists, and links in Go doc comments January 2022
Russ Cox
Earlier discussion at #48305 and #45533. Proposal at #51082.

Soft memory limit, 15 September 2021
Michael Knyszek
Discussion at #48409.

Additions to go/types to support type parameters, 17 August 2021
Rob Findley and Robert Griesemer
Discussion at #47916.

Additions to go/ast and go/token to support parameterized functions and types, 18 August 2021
Rob Findley and Robert Griesemer
Discussion at #47781.

Multi-Module Workspaces in cmd/go, 22 April 2021
Michael Matloob
Discussion at #45713.

Type Parameters Proposal, 20 August 2021
Ian Lance Taylor and Robert Griesemer
Discussion at #43651.

Register-based Go calling convention, 10 August 2020
Austin Clements
Discussion at #40724.

go install should install executables in module mode outside a module, 29 September 2020
Jay Conrod and Daniel Martí
Discussion at #40279.

API for unstable runtime metrics, 7 February 2020
Michael Knyszek
Discussion at #37112.

Lazy Module Loading, 20 February 2020
Bryan C. Mills
Discussion at #36460.

Scaling the Go page allocator, 18 October 2019
Michael Knyszek and Austin Clements
Discussion at #35112.

Low-cost defers through inline code, and extra funcdata to manage the panic case, 23 September 2019
Dan Scales, Keith Randall, and Austin Clements
Discussion at #34481.

Cryptography Principles, June 2019
Filippo Valsorda
Discussion at #42466.

go command configuration file, 1 March 2019
Russ Cox
Discussion at #30411.

Smarter Scavenging, 20 February 2019
Michael Knyszek
Discussion at #30333.

Go 2 Error Inspection, 25 January 2019
Jonathan Amsterdam, Russ Cox, Marcel van Lohuizen, and Damien Neil
Discussion at #29934.

Go 2 transition, 15 October 2018
Ian Lance Taylor
Discussion at #28221.

Create an undefined internal calling convention, 14 January 2019
Austin Clements
Discussion at #27539.

Simplify mark termination and eliminate mark 2, 9 August 2018
Austin Clements
Discussion at #26903.

Go 1.5 Vendor Experiment, July 2015
Russ Cox, based on work by Keith Rarick
Discussion at #25719.

Secure the Public Go Module Ecosystem, 24 April 2019
Russ Cox and Filippo Valsorda
Discussion at #25530.

Non-cooperative goroutine preemption, 18 January 2019
Austin Clements
Discussion at #24543.

Versioned Go Modules, 20 March 2018
Russ Cox
Discussion at #24301.

Emit DWARF inlining info in the Go compiler, 23 October 2017
Than McIntosh
Discussion at #22080.

XML Stream, 9 March 2017
Sam Whited
Discussion at #19480.

Mid-stack inlining in the Go compiler, 10 March 2017
David Lazar and Austin Clements
Discussion at #19348.

Go 2 Number Literal Changes, 6 March 2019
Russ Cox and Robert Griesemer
Discussion at #19113.

Permit Signed Integers as Shift Counts for Go 2, 17 January 2019
Robert Griesemer
Discussion at #19113.

Type Aliases, 16 December 2016
Russ Cox and Robert Griesemer
Discussion at #18130.

Eliminate STW stack re-scanning, 21 October 2016
Austin Clements and Rick Hudson
Discussion at #17503.

Support for pprof profiler labels, 15 May 2017
Michael Matloob
Discussion at #17280.

Add support for CIDR notation in no_proxy variable, 10 July 2017
Rudi Kramer and James Forrest
Discussion at #16704.

Ignore tags in struct type conversions, 16 June 2016
Robert Griesemer
Discussion at #16085.

Separate soft and hard heap size goal, 31 October 2017
Austin Clements (inspired by discussion with Rick Hudson and Rhys Hiltner)
Discussion at #14951.

Go Benchmark Data Format, February 2016
Russ Cox and Austin Clements
Discussion at #14313.

Natural XML, 27 September 2016
Sam Whited
Discussion at #13504.

A Code of Conduct for the Go community, 17 November 2015
Andrew Gerrand
Discussion at #13073.

Monotonic Elapsed Time Measurements in Go, 26 January 2017
Russ Cox
Discussion at #12914.

Dense mark bits and sweep-free allocation, 30 September 2015
Austin Clements
Discussion at #12800.

Rules for passing pointers between Go and C, October 2015
Ian Lance Taylor
Discussion at #12416.

Testing: programmatic sub-test and sub-benchmark support, 2 September 2015
Marcel van Lohuizen
Discussion at #12166.

Decentralized GC coordination, 25 October 2015
Austin Clements
Discussion at #11970.

Security Policy for Go, 31 July 2015
Jason Buberel
Discussion at #11502.

Permit embedding of interfaces with overlapping method sets, 16 October 2019
Robert Griesemer
Discussion at #6977.

Testing: better support test helper functions with TB.Helper, 27 December 2016
Caleb Spare (based on previous work by Josh Bleecher Snyder)
Discussion at #4899.

json flag in go test, 14 September 2016
Nodir Turakulov
Discussion at #2981.

Binary-Only Packages, 24 April 2016
Russ Cox
Discussion at #2775.

Declined

Proposal: Add support for Persistent Memory in Go, 20 January 2021
Jerrin Shaji George, Mohit Verma, Rajesh Venkatasubramanian, and Pratap Subrahmanyam
Discussion at #43810.

A built-in Go error check function, try, 12 July 2019
Robert Griesemer
Discussion at #32437.

DNS Based Vanity Imports, 30 June 2018
Sam Whited
Discussion at #26160.

Alias declarations for Go, 18 July 2016
Robert Griesemer and Rob Pike
Discussion at #16339.

Go should have generics, April 2016
Ian Lance Taylor
Discussion at #15292.

Zip-based Go package archives, February 2016
Russ Cox
Discussion at #14386.

Multi-dimensional slices, 17 November 2016
Brendan Tracey
Discussion at #6282.

Go 1.2 Field Selectors and Nil Checks, July 2013
Russ Cox
Discussion at #4238. Originally at [https://go.dev/s/go12nil].

Withdraw

User-configurable memory target, 16 February 2021
Michael Knyszek
Discussion at #44309.

Concurrent stack re-scanning, 18 October 2016
Austin Clements and Rick Hudson
Discussion at #17505.

Go Heap Dump Viewer, 20 July 2016
Michael Matloob
Discussion at #16410.

Audio for Mobile, 30 November 2015
Jaana Burcu Dogan
Discussion at #13432.

A minimal release process for Go repositories, 3 December 2015
Dave Cheney
Discussion at #12302.