From 969dc7626b16445d95477ff3fb08bc999ec98a32 Mon Sep 17 00:00:00 2001
From: Rob Pike
Date: Wed, 9 Apr 2014 07:12:20 +1000
Subject: [PATCH] doc/go1.3.html: Performance, plus some library details
LGTM=dvyukov, iant, rsc
R=golang-codereviews, dvyukov, iant, rsc
CC=golang-codereviews
https://golang.org/cl/85250043
---
doc/go1.3.html | 120 +++++++++++++++++++++++++++++++++++++++----------
1 file changed, 96 insertions(+), 24 deletions(-)
diff --git a/doc/go1.3.html b/doc/go1.3.html
index ce5860d15c..ffcea97286 100644
--- a/doc/go1.3.html
+++ b/doc/go1.3.html
@@ -92,6 +92,8 @@ liveness (TODO what to say)
TODO compiler/linker boundary moved
+
+TODO: liblink: pull linker i/o into separate liblink C library (CL 35790044)
@@ -124,29 +126,48 @@ cmd/go: cover -atomic for -race (CL 76370043)
-TODO
+The performance of Go binaries for this release has improved in many cases due to changes
+in the runtime and garbage collection, plus some changes to libraries.
+Significant instances include:
-
-TODO
+As mentioned above, the default stack size has been reduced from 8 kilobytes to 4 kilobytes.
-
+
+The runtime handles defers more efficiently, reducing the memory footprint by about two kilobytes
+per goroutine that calls defer.
+
-Changes to the standard library
+
+The garbage collector has been sped up, using a concurrent sweep algorithm,
+better parallelization, and larger pages.
+The cumulative effect can be a 50-70% reduction in collector pause time.
+
-
-TODO: Which should be called out?
-
+
+The race detector (see this guide)
+is now about 40% faster.
+
+
+
+The regular expression package regexp
+is now significantly faster for certain simple expressions due to the implemenation of
+a second, one-pass execution engine. The choice of which engine to use is automatic;
+the details are hidden from the user.
+
+
+
-There is an important new type added to the standard library: sync/pool
.
-TODO: sync: add Pool (CL 41860043, 46010043)
+Also, the runtime now includes in stack dumps how long a goroutine has been blocked,
+which can be useful information when debugging deadlocks or performance issues.
-
+Changes to the standard library
New packages
@@ -154,6 +175,19 @@ TODO: sync: add Pool (CL 41860043, 46010043)
No new packages appear in the core libraries in Go 1.3.
+Major changes to the library
+
+
+There is an important new type added to the standard library: sync.Pool
.
+It provides an efficient mechanism for implementing certain types of caches whose memory
+can be reclaimed automatically by the system.
+
+
+
+TODO: crypto/tls: ServerName or InsecureSkipVerify (CL 67010043)
+possible breaking change
+
+
Minor changes to the library
@@ -163,34 +197,72 @@ See the relevant package documentation for more information about each change.
-- TODO: cmplx.Pow(0, x): https://codereview.appspot.com/76940044
-- TODO: crypto/tls: ServerName or InsecureSkipVerify (CL 67010043)
+-
+The complex power function,
Pow
,
+now specifies the behavior when the first argument is zero. It was undefined before.
+The details are in the documentation for the function.
+
+
- TODO: crypto/tls: add DialWithDialer (CL 68920045)
+
- TODO: crypto/tls: report TLS version in ConnectionState (CL 68250043)
+
- TODO: crypto/x509: support CSRs (CL 49830048)
-- TODO: fmt %F: 77580044
-- TODO: liblink: pull linker i/o into separate liblink C library (CL 35790044)
+
+-
+The formatted print functions of the
fmt
package now define %F
+as a synonym for %f
when printing floating-point values.
+
+
- TODO: net/http: add Request.TLS (CL 52660047)
+
- TODO: net/http: add Server.ErrorLog; log and test TLS handshake errors (CL 70250044)
+
- TODO: net/http: add Server.SetKeepAlivesEnabled (CL 69670043)
+
- TODO: net/http: add Transport.TLSHandshakeTimeout; set it by default (CL 68150045)
+
- TODO: net/http: add optional Server.ConnState callback (CL 69260044)
+
- TODO: net/http: use TCP Keep-Alives on DefaultTransport's connections (CL 68330046)
+
- TODO: net/http: use TCP keep-alives for ListenAndServe and ListenAndServeTLS (CL 48300043)
+
- TODO: net: add Dialer.KeepAlive option (CL 68380043)
+
- TODO: net: enable fast socket creation using SOCK_CLOEXEC and Accept4 on FreeBSD 10 (69100043)
-- TODO: os/exec: fix Command with relative paths (CL 59580044)
-- TODO: regexp: add one-pass optimization from RE2 (CL 13345046)
-- TODO: runtime/debug: add SetPanicOnFault (CL 66590044)
-- TODO: runtime: output how long goroutines are blocked (CL 50420043)
-- TODO: runtime: better handling of defers, reduces goroutine memory footprint by 2K (CL 42750044)
-- TODO: runtime: faster GC: concurrent sweep, better parallelization, 8K pages (up to 50-70% pause reduction) (CL 46430043, 46860043, 58230043)
-- TODO: runtime/race: faster by ~40% (CL 55100044)
-- TODO: strconv.CanBackquote rejects U+007F CL 77300043
+
+-
+The
os/exec
package now implements
+what the documentation has always said with regard to relative paths for the binary.
+In particular, it only calls LookPath
+when the binary's file name contains no path separators.
+
+
+-
+The
CanBackquote
+function in the strconv
package
+now considers the DEL
character, U+007F
, to be
+non-printing.
+
+
- TODO: syscall: add Accept4 for freebsd (CL 68880043)
+
- TODO: syscall: add NewCallbackCDecl to use for windows callbacks (CL 36180044)
+
- TODO: syscall: add support for FreeBSD 10 (CL 56770044, 56980043)
+
- TODO: testing: add b.RunParallel function (CL 57270043)
-- TODO: testing: diagnose buggy tests that panic(nil) (CL 55780043)
-- TODO: unicode: upgrade from Unicode 6.2.0 to 6.3.0 (CL 65400044)
+
+-
+The
testing
package now
+diagnoses tests that call panic(nil)
, which is almost always erroneous.
+
+
+-
+The
unicode
package and associated
+support throughout the system has been upgraded from
+Unicode 6.2.0 to Unicode 6.3.0.
+
+
--
2.50.0