From 7c8e1a679d0de694a479617d6035ea5bc8b4ae72 Mon Sep 17 00:00:00 2001
From: Changkun Ou <hi@changkun.us>
Date: Sat, 19 Sep 2020 16:25:37 +0200
Subject: [PATCH] doc: add more issues

This CL adds issues were scheduled in golang-design/under-the-hood#1.
---
 README.md | 123 +++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 80 insertions(+), 43 deletions(-)

diff --git a/README.md b/README.md
index d83231a..d62d31f 100644
--- a/README.md
+++ b/README.md
@@ -34,16 +34,17 @@ which intents to offer a comprehensive reference of the Go history.
     - [Linker](#linker)
     - [Debugger](#debugger)
     - [Tracer](#tracer)
+    - [Lock Analysis](#lock-analysis)
     - [Builder](#builder)
     - [Modules](#modules)
     - [gopls](#gopls)
     - [Testing](#testing)
   - [Runtime Core](#runtime-core)
-    - [Statistics](#statistics)
     - [Scheduler](#scheduler)
     - [Execution Stack](#execution-stack)
     - [Memory Allocator](#memory-allocator)
     - [Garbage Collector](#garbage-collector)
+    - [Statistics](#statistics)
     - [Memory model](#memory-model)
     - [ABI](#abi)
   - [Standard Library](#standard-library)
@@ -54,6 +55,7 @@ which intents to offer a comprehensive reference of the Go history.
       - [Map](#map)
       - [Pool](#pool)
       - [Mutex, RWMutex](#mutex-rwmutex)
+      - [Groups](#groups)
       - [atomic](#atomic)
     - [time](#time)
     - [context](#context)
@@ -535,13 +537,14 @@ The historical release notes may helpful for general information:
 - [issue/23109](https://golang.org/issue/23109) cmd/compile: rewrite escape analysis.
 - [issue/27167](https://golang.org/issue/27167) cmd/compile: rename a bunch of things
   - [doc/renames](https://docs.google.com/document/d/19_ExiylD9MRfeAjKIfEsMU1_RGhuxB9sA0b5Zv7byVI/edit) Proposed Go 1.12 toolchain renames
-- proposal: add GOEXPERIMENT=checkptr
+- GOEXPERIMENT=checkptr
   + [issue/22218](https://golang.org/issue/22218) proposal: add GOEXPERIMENT=checkptr
   + [issue/34964](https://golang.org/issue/34964) cmd/compile: enable -d=checkptr as part of -race and/or -msan?
   + [issue/34972](https://golang.org/issue/34972) all: get standard library building with -d=checkptr
   + [discuss/checkptr](https://groups.google.com/forum/#!msg/golang-dev/SzwDoqoRVJA/Iozu8vWdDwAJ)
-- [issue/8885](https://golang.org/issue/8885) runtime: consider adding 24-byte size class.
-- [issue/16798](https://golang.org/issue/16798) proposal: cmd/compile: add tail call optimization for self-recursion only.
+- [issue/37121](https://golang.org/issue/37121) runtime: unaligned jumps causing performance regression on Intel
+- [issue/16798](https://golang.org/issue/16798) proposal: cmd/compile: add tail call optimization for self-recursion only. (declined)
+- [issue/22624](https://golang.org/issue/22624) proposal: Go 2: add become statement to support tail calls (declined)
 - [design/64align](https://golang.org/design/36606-64-bit-field-alignment) Dan Scales. Proposal: Make 64-bit fields be 64-bit aligned on 32-bit systems, add //go:packed, //go:align directives. 2020-06-08.
   + [issue/599](https://golang.org/issue/599) cmd/compile: make 64-bit fields 64-bit aligned on 32-bit systems
   + [issue/36606](https://golang.org/issue/36606) proposal: cmd/compile: make 64-bit fields be 64-bit aligned on 32-bit systems, add //go:packed directive on structs
@@ -579,6 +582,21 @@ in Go 1.15 and Go 1.16.
 
 [Back To Top](#top)
 
+### Lock Analysis
+
+- [issue/38029](https://golang.org/issue/38029) x/build: linux-amd64-staticlockranking consistently failing
+  - [cl/192704](https://golang.org/cl/192704) runtime: lock operation logging support
+  - [cl/207348](https://golang.org/cl/207348) runtime: release timersLock while running timer
+  - [cl/207846](https://golang.org/cl/207846) runtime: avoid potential deadlock when tracing memory code
+  - [cl/207619](https://golang.org/cl/207619) runtime: static lock ranking for the runtime (enabled by GOEXPERIMENT)
+  - [cl/222925](https://golang.org/cl/222925) cmd/go: define a build tag for any GOEXPERIMENT which is enabled
+  - [cl/228417](https://golang.org/cl/228417) runtime: incorporate Gscan acquire/release into lock ranking order
+  - [cl/229480](https://golang.org/cl/229480) runtime: added several new lock-rank partial order edges
+  - [cl/231463](https://golang.org/cl/231463) runtime: add one extra lock ranking partial edge
+  - [cl/233599](https://golang.org/cl/233599) runtime: add a lock partial order edge (assistQueue -> mspanSpecial)
+  - [cl/236137](https://golang.org/cl/236137) runtime: add three new partial orders for lock ranking
+
+
 ### Builder
 
 - [design/go13nacl](https://golang.org/s/go13nacl) Russ Cox. Go 1.3 Native Client Support. October 2013.
@@ -621,6 +639,7 @@ in Go 1.15 and Go 1.16.
   + [discuss/go-dep-twitter](https://twitter.com/_rsc/status/1022588240501661696) Russ Cox's Twitter Storm
 - [design/sumdb](https://golang.org/design/25530-sumdb) Russ Cox, Filippo Valsorda. Proposal: Secure the Public Go Module Ecosystem. April 24, 2019.
   + [issue/25530](https://golang.org/issue/25530) proposal: cmd/go: secure releases with transparency log
+- [issue/23966](https://golang.org/issue/23966#issuecomment-377997161) why go.mod has its own bespoke syntax?
 - [design/lazy-gomod](https://golang.org/design/36460-lazy-module-loading) Bryan C. Mills. Proposal: Lazy Module Loading. 2020-02-20
 
 [Back To Top](#top)
@@ -647,18 +666,6 @@ in Go 1.15 and Go 1.16.
 
 ## Runtime Core
 
-### Statistics
-
-- [issue/16843](https://golang.org/issue/16843) runtime: mechanism for monitoring heap size
-  + [cl/setmaxheap](https://go-review.googlesource.com/c/go/+/46751/) Austin Clements. runtime/debug: add SetMaxHeap API. Jun 26 2017.
-- [issue/29696](https://golang.org/issue/29696) proposal: runtime: add way for applications to respond to GC backpressure
-- [design/go116runtime-metric](https://github.com/golang/proposal/blob/44d4d942c03cd8642cef3eb2f6c153f2e9883a77/design/37112-unstable-runtime-metrics.md) Michael Knyszek. Proposal: API for unstable runtime metrics. Mar 18, 2020.
-- [issue/19812](https://golang.org/issue/19812) runtime: cannot ReadMemStats during GC
-- [issue/38712](https://golang.org/issue/38712) runtime: TestMemStats is flaky
-- [issue/40459](https://golang.org/issue/40459) runtime: ReadMemStats called in a loop may prevent GC
-
-[Back To Top](#top)
-
 ### Scheduler
 
 - [paper/work-steal](https://dl.acm.org/citation.cfm?id=324234) Robert D. Blumofe and Charles E. Leiserson. 1999. Scheduling multithreaded computations by work stealing. J. ACM 46, 5 (September 1999), 720-748.
@@ -707,21 +714,25 @@ improving the memory allocator's scalability, such as migrating scavenger
 to user threads, bitmap-based page allocator, scalable mcentral.
 
 - [doc/tcmalloc](http://goog-perftools.sourceforge.net/doc/tcmalloc.html) Sanjay Ghemawat, Paul Menage. TCMalloc : Thread-Caching Malloc. Google Inc., 2009
-- [issue/30333](https://golang.org/issue/30333) runtime: smarter scavenging
-- [issue/34047](https://golang.org/issue/34047) runtime: potential deadlock cycle caused by scavenge.lock
-- [issue/34048](https://golang.org/issue/34048) runtime: scavenger pacing fails to account for fragmentation
-- [issue/35112](https://golang.org/issue/35112) runtime: make the page allocator scale
-- [issue/35788](https://golang.org/issue/35788) runtime: scavenger not as effective as in previous releases
 - [design/go113scavenge](https://go.googlesource.com/proposal/+/aa701aae530695d32916b779e048a3e18311a2e3/design/30333-smarter-scavenging.md) Michael Knyszek. Proposal: Smarter Scavenging. 2019-05-09.
+  + [issue/30333](https://golang.org/issue/30333) runtime: smarter scavenging
+  + [issue/32012](https://golang.org/issue/32012) runtime: background scavenger is overzealous with small heaps
+  + [issue/31966](https://golang.org/issue/31966) runtime: background scavenger can delay deadlock detection significantly
+  + [issue/34047](https://golang.org/issue/34047) runtime: potential deadlock cycle caused by scavenge.lock
+  + [issue/34048](https://golang.org/issue/34048) runtime: scavenger pacing fails to account for fragmentation
+  + [issue/35788](https://golang.org/issue/35788) runtime: scavenger not as effective as in previous releases
+  + [issue/36521](https://golang.org/issue/36521) runtime: performance degradation in go 1.12
+  + [issue/36603](https://golang.org/issue/36603) runtime: sysUsed often called on non-scavenged memory
 - [design/go114pagealloc](https://go.googlesource.com/proposal/+/a078ea9d72b99dc88fdfd2cb6ee150a8ce202ea2/design/35112-scaling-the-page-allocator.md) Michael Knyszek, Austin Clements. Proposal: Scaling the Go page allocator. 2019-10-18.
+  + [issue/35112](https://golang.org/issue/35112) runtime: make the page allocator scale
+  + [cl/200439](https://golang.org/cl/200439) runtime: place lower limit on trigger ratio
+- [issue/8885](https://golang.org/issue/8885) runtime: consider adding 24-byte size class.
 - [issue/37487](https://golang.org/issue/37487) runtime: improve mcentral scalability
   + [cl/221182](https://golang.org/cl/221182) runtime: add new mcentral implementation
 - [issue/18155](https://golang.org/issue/18155) runtime: latency in sweep assists when there's no garbage
 - [issue/19112](https://golang.org/issue/19112) runtime: deadlock involving gcControllerState.enlistWorker
 - [issue/29707](https://golang.org/issue/29707) cmd/trace: failed to parse trace: no consistent ordering of events possible
-- [issue/35788](https://golang.org/issue/35788) runtime: scavenger not as effective as in previous releases
 - [issue/35954](https://golang.org/issue/35954) runtime: handle hitting the top of the address space in the allocator more gracefully
-- [issue/37487](https://golang.org/issue/37487) runtime: improve mcentral scalability
 - [issue/37927](https://golang.org/issue/37927) runtime: GC pacing exhibits strange behavior with a low GOGC
 - [issue/38130](https://golang.org/issue/38130) runtime: incorrect sanity checks in the page allocator
 - [issue/38404](https://golang.org/issue/38404) runtime: STW GC stops working on arm64/mips64le
@@ -744,28 +755,41 @@ to user threads, bitmap-based page allocator, scalable mcentral.
 - [design/go14gc](https://golang.org/s/go14gc) Richard L. Hudson. Go 1.4+ Garbage Collection (GC) Plan and Roadmap. August 6, 2014.
 - [design/go15gcpacing](https://golang.org/s/go15gcpacing) Austin Clements. Go 1.5 concurrent garbage collector pacing. 2015-03-10.
 - [discuss/gcpacing](https://groups.google.com/forum/#!topic/golang-dev/YjoG9yJktg4) Austin Clements et al. Discussion of "Proposal: Garbage collector pacing". March 10, 2015.
-- [design/eliminate-rescan](https://golang.org/design/17503-eliminate-rescan) Austin Clements, Rick Hudson. Eliminate STW stack re-scanning. October 21, 2016.
 - [issue/11970](https://golang.org/issue/11970) runtime: replace GC coordinator with state machine
 - [design/sweep-free-alloc](https://golang.org/design/12800-sweep-free-alloc) Austin Clements. Proposal: Dense mark bits and sweep-free allocation. Sep 30, 2015.
 - [issue/12800](https://golang.org/issue/12800) runtime: replace free list with direct bitmap allocation
 - [design/decentralized-gc](https://golang.org/design/11970-decentralized-gc) Austin Clements. Proposal: Decentralized GC coordination. October 25, 2015.
 - [issue/12967](https://golang.org/issue/12967#issuecomment-171466238) runtime: shrinkstack during mark termination significantly increases GC STW time
 - [issue/14951](https://golang.org/issue/14951) runtime: mutator assists are over-aggressive, especially at high GOGC
-- [issue/17503](https://golang.org/issue/17503) runtime: eliminate stack rescanning
+- [design/eliminate-rescan](https://golang.org/design/17503-eliminate-rescan) Austin Clements, Rick Hudson. Eliminate STW stack re-scanning. October 21, 2016.
+  + [issue/17503](https://golang.org/issue/17503) runtime: eliminate stack rescanning
 - [design/concurrent-rescan](https://golang.org/design/17505-concurrent-rescan) Austin Clements, Rick Hudson. Proposal: Concurrent stack re-scanning. Oct 18, 2016.
-- [issue/17505](https://golang.org/issue/17505) runtime: perform concurrent stack re-scanning
-- [design/eliminate-rescan](https://golang.org/design/17503-eliminate-rescan) Austin Clements, Rick Hudson. Proposal: Eliminate STW stack re-scanning. Oct 21, 2016
+  + [issue/17505](https://golang.org/issue/17505) runtime: perform concurrent stack re-scanning
 - [design/soft-heap-limit](https://golang.org/design/14951-soft-heap-limit) Austin Clements. Proposal: Separate soft and hard heap size goal. October 21, 2017.
+- [issue/22460](https://golang.org/issue/22460) runtime: optimize write barrier
 - [design/roc](https://golang.org/s/gctoc) Request Oriented Collector (ROC) Algorithm
   + [cl/roc](https://golang.org/cl/25058) runtime: ROC write barrier code
   + [cl/generational-gc](https://golang.org/cl/137482) runtime: trigger generational GC
 - [doc/ismm-gc](https://blog.golang.org/ismmkeynote) Rick Hudson. Getting to Go: The Journey of Go's Garbage Collector. 12 July 2018.
 - [discuss/ismm-gc](https://groups.google.com/forum/#!topic/golang-dev/UuDv7W1Hsns) Garbage Collection Slides and Transcript now available
 - [design/simplify-mark-termination](https://golang.org/design/26903-simplify-mark-termination) Austin Clements. Proposal: Simplify mark termination and eliminate mark 2. Aug 9, 2018.
-- [issue/22350](https://golang.org/issue/22350) cmd/compile: compiler can unexpectedly preserve memory,
+  + [issue/26903](https://golang.org/issue/26903) runtime: simplify mark termination and eliminate mark 2
 - [design/gcscan](https://docs.google.com/document/d/1un-Jn47yByHL7I0aVIP_uVCMxjdM5mpelJhiKlIqxkE/edit#) Proposal: GC scanning of stacks
-- [issue/26903](https://golang.org/issue/26903) runtime: simplify mark termination and eliminate mark 2
+  + [issue/22350](https://golang.org/issue/22350) cmd/compile: compiler can unexpectedly preserve memory,
 - [issue/27993](https://golang.org/issue/27993) runtime: error message: P has cached GC work at end of mark termination
+- [issue/37116](https://golang.org/issue/37116) runtime: 10ms-26ms latency from GC in go1.14rc1, possibly due to 'GC (idle)' work
+
+[Back To Top](#top)
+
+### Statistics
+
+- [issue/16843](https://golang.org/issue/16843) runtime: mechanism for monitoring heap size
+  + [cl/setmaxheap](https://go-review.googlesource.com/c/go/+/46751/) Austin Clements. runtime/debug: add SetMaxHeap API. Jun 26 2017.
+- [issue/29696](https://golang.org/issue/29696) proposal: runtime: add way for applications to respond to GC backpressure
+- [design/go116runtime-metric](https://github.com/golang/proposal/blob/44d4d942c03cd8642cef3eb2f6c153f2e9883a77/design/37112-unstable-runtime-metrics.md) Michael Knyszek. Proposal: API for unstable runtime metrics. Mar 18, 2020.
+- [issue/19812](https://golang.org/issue/19812) runtime: cannot ReadMemStats during GC
+- [issue/38712](https://golang.org/issue/38712) runtime: TestMemStats is flaky
+- [issue/40459](https://golang.org/issue/40459) runtime: ReadMemStats called in a loop may prevent GC
 
 [Back To Top](#top)
 
@@ -849,7 +873,6 @@ Code Comprehension and Refactoring Tools. October 2, 2015.
 - [cl/86020043](https://github.com/golang/go/commit/8fc6ed4c8901d13fe1a5aa176b0ba808e2855af5#diff-2e9fc106a7387ca4c32ecf856a91f82a) sync: less agressive local caching in Pool. Apr 14, 2014.
 - [cl/162980043](https://github.com/golang/go/commit/af3868f1879c7f8bef1a4ac43cfe1ab1304ad6a4#diff-491b0013c82345bf6cfa937bd78b690d) sync: release Pool memory during second and later GCs. Oct 22, 2014.
 - [issue/8979](https://golang.org/issue/8979) sync: Pool does not release memory on GC
-- [issue/13086](https://golang.org/issue/13086) runtime: fall back to fair locks after repeated sleep-acquire failures.
 - [issue/22331](https://golang.org/issue/22331) runtime: clearpools causes excessive STW1 time
 - [issue/22950](https://golang.org/issue/22950) sync: avoid clearing the full Pool on every GC.
   - [cl/166960](https://github.com/golang/go/commit/d5fd2dd6a17a816b7dfd99d4df70a85f1bf0de31) sync: use lock-free structure for Pool stealing.
@@ -860,11 +883,21 @@ Code Comprehension and Refactoring Tools. October 2, 2015.
 
 #### Mutex, RWMutex
 
-- [cl/4631059](https://github.com/golang/go/commit/997c00f) runtime: replace Semacquire/Semrelease implementation.
+- [cl/4631059](https://golang.org/cl/4631059) runtime: replace Semacquire/Semrelease implementation.
+- [issue/13086](https://golang.org/issue/13086) runtime: fall back to fair locks after repeated sleep-acquire failures.
+  + [cl/34310](https://golang.org/cl/34310) sync: make Mutex more fair
 - [issue/17973](https://golang.org/issue/17973) sync: RWMutex scales poorly with CPU count
+  + [cl/215361](https://golang.org/cl/215361) sync: Implement a version of RWMutex that can avoid cache contention
 
 [Back To Top](#top)
 
+#### Groups
+
+- [cl/134395](https://golang.org/cl/134395) errgroup: rethink concurrency patterns
+  + [cl/131815](https://golang.org/cl/131815) errgroup: handle runtime.Goexit from child goroutines
+  + [issue/15758](https://golang.org/issue/15758) testing: complain loudly during concurrent use of T.FatalX and T.SkipX
+  + [issue/25448](https://golang.org/issue/25448) proposal: promote panic(nil) to non-nil panic value
+
 #### atomic
 
 - [issue/8739](https://golang.org/issue/8739) runtime,sync/atomic: unify API for runtime/internal/atomic and sync/atomic
@@ -878,19 +911,22 @@ Code Comprehension and Refactoring Tools. October 2, 2015.
 ### time
 
 - [design/monotonic-time](https://golang.org/design/12914-monotonic) Russ Cox. Proposal: Monotonic Elapsed Time Measurements in Go. January 26, 2017.
-  - [issue/12914](https://golang.org/issue/12914) time: use monotonic clock to measure elapsed time
-- [issue/6239](https://golang.org/issue/6239) runtime: make timers faster.
-- [issue/15133](https://golang.org/issue/15133) runtime: timer doesn't scale on multi-CPU systems with a lot of timers
+  + [issue/12914](https://golang.org/issue/12914) time: use monotonic clock to measure elapsed time
+- Scalable Timer
   + [cl/34784](https://golang.org/cl/34784) runtime: improve timers scalability on multi-CPU systems
-- [issue/18023](https://golang.org/issue/18023) runtime: unexpectedly large slowdown with runtime.LockOSThread
-- [issue/25471](https://golang.org/issue/25471) time: Sleep requires ~7 syscalls
-- [issue/27707](https://golang.org/issue/27707) time: excessive CPU usage when using Ticker and Sleep.
-- [issue/38070](https://golang.org/issue/38070) runtime: timer self-deadlock due to preemption point
-- [issue/36298](https://golang.org/issue/36298) net: 1.14 performance regression on mac
-- [issue/38860](https://golang.org/issue/38860) runtime: CPU bound goroutines cause unnecessary timer latency
-  + [cl/216198](https://golang.org/cl/216198) runtime: add goroutines returned by poller to local run queue
-  + [cl/232199](https://golang.org/cl/232199) runtime: steal timers from running P's
-  + [cl/232298](https://golang.org/cl/232298) runtime: reduce timer latency
+  + [issue/6239](https://golang.org/issue/6239) runtime: make timers faster.
+  + [issue/15133](https://golang.org/issue/15133) runtime: timer doesn't scale on multi-CPU systems with a lot of timers
+  + [issue/27707](https://golang.org/issue/27707) time: excessive CPU usage when using Ticker and Sleep.
+- Followup latency issues
+  - [issue/18023](https://golang.org/issue/18023) runtime: unexpectedly large slowdown with runtime.LockOSThread
+  - [issue/25471](https://golang.org/issue/25471) time: Sleep requires ~7 syscalls
+  - [issue/38070](https://golang.org/issue/38070) runtime: timer self-deadlock due to preemption point
+  - [issue/36298](https://golang.org/issue/36298) net: 1.14 performance regression on mac
+  - [issue/38860](https://golang.org/issue/38860) runtime: CPU bound goroutines cause unnecessary timer latency
+    + [cl/216198](https://golang.org/cl/216198) runtime: add goroutines returned by poller to local run queue
+    + [cl/232199](https://golang.org/cl/232199) runtime: steal timers from running P's
+    + [cl/232298](https://golang.org/cl/232298) runtime: reduce timer latency
+
 [Back To Top](#top)
 
 ### context
@@ -1060,6 +1096,7 @@ x/image:
 - [cl/1](https://github.com/golang/go/commit/7d7c6a97f815e9279d08cfaea7d5efb5e90695a8) Brian Kernighan. Go's first commit. Jul 19, 1972.
 - [issue/9](https://golang.org/issue/9) I have already used the name for *MY* programming language. Nov 11, 2009
 - [doc/gophercount](https://research.swtch.com/gophercount) How Many Go Developers Are There?. November 1, 2019.
+- [discuss/google-owns-go](https://groups.google.com/forum/#!msg/golang-nuts/6dKNSN0M_kg/Y1yDJRwQBgAJ) Russ Cox's response on "Go is Google's language, not ours"
 
 [Back To Top](#top)