From: Austin Clements darwin/arm64
port.
+ Go binaries on Windows now + have DEP + (Data Execution Prevention) enabled. +
+ +
+ JavaScript values referenced from Go via js.Value
+ objects can now be garbage collected.
+
+ js.Value
values can no longer be compared using
+ the ==
operator, and instead must be compared using
+ their Equal
method.
+
+ js.Value
now
+ has IsUndefined
, IsNull
,
+ and IsNaN
methods.
+
@@ -207,6 +234,30 @@ TODO TODO
+
+ This release improves the performance of most uses
+ of defer
to incur almost zero overhead compared to
+ calling the deferred function directly.
+ As a result, defer
can now be used in
+ performance-critical code without overhead concerns.
+
+ Goroutines are now asynchronously preemptible.
+ As a result, loops without function calls no longer potentially
+ deadlock the scheduler or significantly delay garbage collection.
+ This is supported on all platforms except windows/arm
,
+ darwin/arm
, js/wasm
, and
+ plan9/*
.
+
+ The page allocator is more efficient and incurs significantly less
+ lock contention at high values of GOMAXPROCS
.
+ This is most noticeable as lower latency and higher throughput for
+ large allocations being done in parallel and at a high rate.
+
Internal timers, used by
time.After
,
@@ -218,6 +269,42 @@ TODO
visible changes.
+ This release adds -d=checkptr
as a compile-time option
+ for adding instrumentation to check that Go code is following
+ unsafe.Pointer
safety rules dynamically.
+ This option is enabled by default with the -race
+ or -msan
flags, and can be disabled
+ with -gcflags=-all=-d=checkptr=0
.
+ Specifically, -d=checkptr
checks the following:
+
unsafe.Pointer
to *T
,
+ the resulting pointer must be aligned appropriately
+ for T
.
+ unsafe.Pointer
-typed operands must point
+ into the same object.
+
+ Detailed escape analysis diagnostics (-m=2
) now work again.
+ This had been dropped from the new escape analysis implementation in
+ the previous release.
+
+ All Go symbols in macOS binaries now begin with an underscore, + following platform conventions. +
+@@ -303,6 +390,11 @@ TODO
+ runtime.Goexit
can no longer be aborted by a
+ recursive panic
/recover
.
+
TODO: https://golang.org/cl/187739: treat CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, CTRL_SHUTDOWN_EVENT as SIGTERM on Windows