Standard Library
syscall
- design/go14syscall The syscall package.
- issue/51087 runtime: clean up system call code
- issue/68595 syscall: support process sandboxing using Landlock on Linux
os, io, io/fs, embed
In Go 1.16, tons of major rework and improvements surround the new os/fs package.
- design/draft-iofs Russ Cox, Rob Pike. File System Interfaces for Go — Draft Design. July 2020.
- issue/13473 proposal: os: Stdin, Stdout and Stderr should be interfaces
- issue/14106 proposal: os: File should be an interface
- issue/19660 proposal: io/ioutil: rename to io/fileio or similar
- issue/40025 proposal: io/ioutil: move Discard, NopCloser, ReadAll to io
- issue/42027 proposal: path/filepath: add WalkDir (Walk using DirEntry)
- issue/41190 io/fs: add file system interfaces
- issue/41467 os: add ReadDir method for lightweight directory reading
- issue/41974 proposal: io/fs, filepath: add more efficient Walk alternative
- issue/42026 proposal: os: add ReadDir, ReadFile, WriteFile, CreateTemp, MkdirTemp & deprecate io/ioutil
- issue/43223 proposal: io/fs, net/http: define interface for automatic ETag serving
- design/go116embed Embedded files - Russ & Braid
- issue/41191 embed, cmd/go: add support for embedded files
- issue/42321 embed: warn about dotfiles in embed.FS documentation
- issue/42328 proposal: cmd/go: avoid surprising inclusion of "hidden" files when using //go:embed
- issue/43216 proposal: embed: remove support for embedding directives on local variables
- issue/43217 proposal: embed: define String and Bytes type aliases that must be used with //go:embed
- issue/43218 embed: resolve string, []byte issues
- issue/44166 io/fs,os: fs.ReadDir with an os.DirFS can produce invalid paths
- issue/42322 io/fs: add func Sub(fsys FS, dir string) FS
- issue/45757 proposal: io/fs: add writable interfaces
- issue/9051 io: no easy way to fan out to multiple readers
- issue/56219 path/filepath: add IsLocal
- issue/57151 path/filepath: add Localize to safely convert a slash-separated path into an operating system path
- issue/54898 archive/zip: add (*Writer).AddFS
- issue/62484 os: add CopyFS
- issue/67002 os: safer file open functions
- doc/osroot Damien Neil. Traversal-resistant file APIs. March 12, 2025.
go/*
- doc/gotypes Alan Donovan. go/types: The Go Type Checker.
- talk/gotypes Alan Donovan. Using go/types for Code Comprehension and Refactoring Tools. October 2, 2015.
- design/modular-interface Alan Donovan. Proposal: a common interface for modular static analyses for Go. 9 Sep 2018
- cl/134935 go/analysis: a new API for analysis tools
- issue/62039 go/version: package for handling Go version strings
sync
- design/percpu-sharded Sanjay Menakuru. Proposal: percpu.Sharded, an API for reducing cache contention. Jun 12, 2018.
- issue/18802 proposal: sync: support for sharded values
- cl/4850045 co: new package
- issue/37142 sync: shrink types in sync package
- issue/56102 sync: add OnceFunc, OnceValue, OnceValues
Map
- issue/21031 sync: reduce pointer overhead in Map
- issue/21032 sync: reduce (*Map).Load penalty for Stores with new keys
- issue/21035 sync: reduce contention between Map operations with new-but-disjoint keys
- issue/37033 runtime: provide centralized facility for managing (c)go pointer handles
- issue/51972 sync: add new Map methods CompareAndSwap, CompareAndDelete, Swap
Pool
- discuss/add-pool gc-aware pool draining policy
- issue/4720 sync: add Pool type. Jan 28, 2013.
- cl/46010043 sync: scalable Pool. Jan 24, 2014.
- cl/86020043 sync: less agressive local caching in Pool. Apr 14, 2014.
- cl/162980043 sync: release Pool memory during second and later GCs. Oct 22, 2014.
- issue/8979 sync: Pool does not release memory on GC
- issue/22331 runtime: clearpools causes excessive STW1 time
- issue/22950 sync: avoid clearing the full Pool on every GC.
- issue/24479 sync: eliminate global Mutex in Pool operations
- discuss/pool-draining Russ Cox. gc-aware pool draining policy. golang-dev. November 27, 2013.
Mutex, RWMutex
- cl/4631059 runtime: replace Semacquire/Semrelease implementation.
- issue/9201 proposal: sync: prohibit unlocking mutex in a different goroutine
- issue/13086 runtime: fall back to fair locks after repeated sleep-acquire failures.
- cl/34310 sync: make Mutex more fair
- issue/17973 sync: RWMutex scales poorly with CPU count
- cl/215361 sync: Implement a version of RWMutex that can avoid cache contention
Groups
- cl/134395 errgroup: rethink concurrency patterns
- cl/131815 errgroup: handle runtime.Goexit from child goroutines
- issue/15758 testing: complain loudly during concurrent use of T.FatalX and T.SkipX
- issue/25448 proposal: promote panic(nil) to non-nil panic value
- issue/53757 x/sync/errgroup: propagate panics and Goexits through Wait
atomic
- issue/8739 runtime,sync/atomic: unify API for runtime/internal/atomic and sync/atomic
- issue/20164 proposal: atomic: add (*Value).Swap
- discuss/atomic-value
- issue/36606 proposal: cmd/compile: make 64-bit fields be 64-bit aligned on 32-bit systems, add //go:packed directive on structs
- issue/37262 runtime: can't atomic access of first word of tiny-allocated struct on 32-bit architecture
time
- design/monotonic-time Russ Cox. Proposal: Monotonic Elapsed Time Measurements in Go. January 26, 2017.
- issue/12914 time: use monotonic clock to measure elapsed time
- Scalable Timer
- cl/34784 runtime: improve timers scalability on multi-CPU systems
- issue/6239 runtime: make timers faster.
- issue/15133 runtime: timer doesn't scale on multi-CPU systems with a lot of timers
- issue/27707 time: excessive CPU usage when using Ticker and Sleep.
- Followup latency issues
- issue/18023 runtime: unexpectedly large slowdown with runtime.LockOSThread
- issue/25471 time: Sleep requires ~7 syscalls
- issue/38070 runtime: timer self-deadlock due to preemption point
- issue/36298 net: 1.14 performance regression on mac
- issue/38860 runtime: CPU bound goroutines cause unnecessary timer latency
- issue/44343 runtime: time.Sleep takes more time than expected
- issue/44868 time, runtime: zero duration timer takes 2 minutes to fire
context
- issue/8082 proposal: spec: represent interfaces by their definition and not by package and name
- issue/14660 proposal: context: new package for standard library
- issue/16209 Proposal: relaxed rules for assignability with differently-named but identical interfaces
- issue/20280 proposal: io: add Context parameter to Reader, etc.
- issue/21355 proposal: Replace Context with goroutine-local storage
- issue/24050 testing: test with child process sometimes hangs on 1.10; -timeout not respected
- issue/27982 proposal: Go 2: bake a cooperative goroutine cancellation mechanism into the language
- issue/28342 proposal: Go 2: update context package for Go 2
- issue/29011 proposal: Go 2: use structured concurrency
- doc/context-go-away Michal Štrba. Context should go away for Go 2. 2017/08/06
- doc/context Go Concurrency Patterns: Context.
- doc/context-isnt-for-cancellation Dave Cheney. Context isn’t for cancellation. August 20, 2017.
- issue/36503 proposal: context: add Merge
- issue/42564 context: cancelCtx exclusive lock causes extreme contention
- issue/51365 proposal: context: add APIs for writing and reading cancelation cause
- issue/56661 context: add APIs for setting a cancelation cause when deadline or timer expires
- issue/57928 context: add AfterFunc
encoding
- design/go12encoding Russ Cox. Go 1.2 encoding.TextMarshaler and TextUnmarshaler. July 2013.
- design/go12xml Russ Cox. Go 1.2 xml.Marshaler and Unmarshaler. July 2013.
- design/natural-xml Sam Whited. Proposal: Natural XML. 2016-09-27
- issue/13504 encoding/xml: add generic representation of XML data
- design/zip Russ Cox. Proposal: Zip-based Go package archives. February 2016
- issue/14386 proposal: use zip format inside .a and .o files
- design/xmlstream Sam Whited. Proposal: XML Stream. Mar 9, 2017.
- issue/19480 encoding/xml: add decode from TokenReader, to enable stream transformers
- design/raw-xml Sam Whited. Proposal: Raw XML Token. Sep 1, 2018.
- issue/26756 proposal: encoding/xml: add RawXML token
- discuss/63397 Joe Tsai. encoding/json/v2. October 2023.
- issue/71497 encoding/json/v2: new API for encoding/json
- issue/71845 encoding/json/v2: add new JSON API behind a GOEXPERIMENT=jsonv2 guard (Go 1.25)
- repo/json-experiment Experimental implementation of a proposed v2 encoding/json package
- doc/jsonv2-exp Joe Tsai, Daniel Martí, Johan Brandhorst-Satzkorn, Roger Peppe, Chris Hines, and Damien Neil. A new experimental Go API for JSON. September 9, 2025.
- talk/joe2023 Joe Tsai. The Future of JSON in Go. GopherCon 2023, San Diego. September 2023.
image, x/image
The following issues are surrounding by the color management of the image standard library.
At the moment, Go's image library doesn't read or write meta information from an image in
the encoding or decoding phase. Therefore the color information could go wrong while processing
an image such as scaling in a non-linear sRGB space. A universal solution is to design image
metadata APIs to aware the color profile in an encoded image file.
- issue/11420 x/image/draw: color space-correct interpolation
- issue/20613 image/png: don't ignore PNG gAMA chunk
- issue/27830 proposal: image: decoding options
- cl/253497 x/image/draw: gamma corrected non linear interpolation
- issue/37188 image/color: documentation doesn't include links to relevant color theory resources
- issue/33457 proposal: image: add generic metadata support for jpeg, gif, png
- discuss/image-metadata image.Metadata interface type
- issue/18365 image/png: no support for setting and retrieving the PPI/DPI
- cl/208559 image: New metadata-aware read/write API
- cl/216799 image: metadata API sketch
- issue/44808 image, image/draw: add interfaces for using RGBA64 directly
- issue/46395 image/draw: increase performances by applying special case if mask is *image.Alpha
- issue/8055 image: decode / resize into an existing buffer
- issue/11793 image/color: NRGBA(64).RGBA() optimization
- issue/15759 image: optimize Image.At().RGBA()
- issue/20851 image: Decode drops interfaces
- issue/24499 image/jpeg: Decode is slow
math
- issue/8037 cmd/internal/obj/x86: add fma
- issue/17895 spec: allow the use of fused multiply-add floating point instructions
- cl/40391 spec: clarify use of fused-floating point operations
- issue/24813 math/bits: add extended precision Add, Sub, Mul, Div
- issue/25819 math: add guaranteed FMA
Mobile
- design/go14android David Crawshaw. Go support for Android. June 2014.
- design/gobind David Crawshaw. Binding Go and Java. July 2014
log
- discussion/54763 discussion: structured, leveled logging
- design/structured-logging Proposal: Structured Logging
- issue/56345 proposal: log/slog: structured, leveled logging
- issue/58243 log/slog: make the current context easily available to loggers
- issue/59928 proposal: testing: Add log/slog support
- doc/slog Jonathan Amsterdam. Structured Logging with slog. August 22, 2023.
- issue/62005 log/slog: add
slog.DiscardHandler
net, net/http
- discuss/47323 Russ Cox. proposal: net/netaddr: add new IP address type, netaddr package (discussion). July 21, 2021.
- issue/56539 net: add support for MPTCP
- discuss/60227 Jonathan Amsterdam. net/http: add methods and path variables to ServeMux patterns. May 16, 2023.
- issue/61410 net/http: enhanced ServeMux routing
- doc/routing-enhancements Jonathan Amsterdam. Routing Enhancements for Go 1.22. February 13, 2024.
- issue/66405 net/http: expose matched pattern in Request
- discuss/60746 Damien Neil. net/http: move HTTP/2 into the standard library. June 12, 2023.
- issue/67813 net/http: HTTP/2 configuration API
- issue/73626 net/http: add CrossOriginForgeryHandler
- issue/75772 net/http: client connection API
- doc/http-connection-reuse Nicholas Husin and Damien Neil. Better HTTP/1 connection reuse. October 14, 2026.
- issue/58547 x/net/quic: add QUIC implementation
crypto
- issue/66821 crypto/rand: crash process on error reading randomness
- issue/67057 crypto/rand: add func Text
- issue/61477 crypto/hkdf: add package
- issue/69488 crypto/pbkdf2: add package
- issue/63369 crypto/tls: support Encrypted Client Hello in clients
- issue/70122 crypto/mlkem: new package
- issue/75300 crypto/hpke: new package
- issue/77626 crypto/mldsa: new package
- issue/70123 crypto: mechanism to enable FIPS mode
- issue/70200 cmd/go: add fips140 module selection mechanism
- doc/tob-crypto-audit Roland Shoemaker and Filippo Valsorda. Go Cryptography Security Audit. May 19, 2025.
- doc/fips140 Filippo Valsorda (Geomys), Daniel McCarney (Geomys), and Roland Shoemaker (Google). The FIPS 140-3 Go Cryptographic Module. July 15, 2025.
- design/crypto-ssh-v2 Nicola Murino, Filippo Valsorda. x/crypto/ssh/v2. August 19, 2024.
misc
- design/mobile-audio Jaana Burcu Dogan. Proposal: Audio for Mobile. November 30, 2015.
- issue/13432 proposal: x/mobile audio
- design/localization Marcel van Lohuizen. Proposal: Localization support in Go. Jan 28, 2016.
- issue/12750 x/text: localization support
- design/unbounded-queue Christian Petrin. Proposal: Built in support for high performance unbounded queue. October 2, 2018
- issue/27935 proposal: add container/queue
- design/lockfile Adrien Delorme. Proposal: make the internal lockedfile package public. 2019-10-15.
- design/cidr Rudi Kramer, James Forrest. Proposal: Add support for CIDR notation in no_proxy variable. 2017-07-10
- issue/16704 net/http: considering supporting CIDR notation in no_proxy env variable
- design/dns Sam Whited. Proposal: DNS Based Vanity Imports. 2018-06-30.
- issue/26160 proposal: use DNS TXT records for vanity import paths
- issue/46518 net/netip: add new IP address package, use in net
- issue/53171 proposal: add package for using SIMD instructions
- issue/54880 math/rand: seed global generator randomly
- issue/60204 cmp: add Or
- issue/60088 reflect: add TypeFor
- issue/60370 database/sql: add generic Null[T]
- issue/66408 structs: add HostLayout "directive" type
- issue/54670 hash/maphash: add func Comparable
- issue/70471 hash/maphash: standardize the hash function
- issue/69264 x/exp/stats: new package with Mean, Median, more
- issue/62026 uuid: add API to generate and parse UUID