From b03d12176d22f49f557fc174645ded22d91e6f28 Mon Sep 17 00:00:00 2001
From: Michael Anthony Knyszek
@@ -61,6 +63,13 @@ Do not send CLs removing the interior tags from such phrases.
+ ++ The Go scheduler now interacts much more efficiently with the + JavaScript event loop, especially in applications that block + frequently on asynchronous events. +
++ On Linux platforms that support transparent huge pages, the Go runtime + now manages which parts of the heap may be backed by huge pages more + explicitly. This leads to better utilization of memory: small heaps + should see less memory used (up to 50% in pathological cases) while + large heaps should see fewer broken huge pages for dense parts of the + heap, improving CPU usage and latency by up to 1%. +
+ +
+ As a result of runtime-internal garbage collection tuning,
+ applications may see up to a 40% reduction in application tail latency
+ and a small decrease in memory use. Some applications may also observe
+ a small loss in throughput.
+
+ The memory use decrease should be proportional to the loss in
+ throughput, such that the previous release's throughput/memory
+ tradeoff may be recovered (with little change to latency) by
+ increasing GOGC
and/or GOMEMLIMIT
slightly.
+
TODO: https://go.dev/cl/474915: runtime: support GOTRACEBACK=wer on Windows
+ +
+ A new type Pinner
has been added to the runtime
+ package. Pinner
s may be used to "pin" Go memory
+ such that it may be used more freely by non-Go code. For instance,
+ passing Go values that reference pinned Go memory to C code is
+ now allowed. Previously, passing any such nested reference was
+ disallowed by the
+ cgo pointer passing rules.
+
+ See the docs for more details.
+
+ Collecting traces on amd64 and arm64 now incurs a substantially + smaller CPU cost: up to a 10x improvement over the previous release. +
+ ++ Traces now contain explicit stop-the-world events for every reason + the Go runtime might stop-the-world, not just garbage collection. +
+