aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2016-11-29 19:36:44 +0000
committerBrad Fitzpatrick <bradfitz@golang.org>2016-11-29 21:10:19 +0000
commit268bc396c1ce5b7495c5818a286ef92763c1ba7e (patch)
treef119570c43510f2192f68df4a2eb0bd4fce6a3ab
parent11f8676b1b92be5b7a41ee889796f5be6e03cb9b (diff)
downloadgo-268bc396c1ce5b7495c5818a286ef92763c1ba7e.tar.gz
go-268bc396c1ce5b7495c5818a286ef92763c1ba7e.zip
doc: more go1.8.html tweaks and new context additions section
TBR=See https://golang.org/cl/33244 Updates #17929 Change-Id: Id5d5472cf1e41472d8d0f82ee133c7387257ba2b Reviewed-on: https://go-review.googlesource.com/33664 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-rw-r--r--doc/go1.8.html140
1 files changed, 89 insertions, 51 deletions
diff --git a/doc/go1.8.html b/doc/go1.8.html
index 6f828b13d3..a70cc44284 100644
--- a/doc/go1.8.html
+++ b/doc/go1.8.html
@@ -35,7 +35,8 @@ The release <a href="#ports">adds support for 32-bit MIPS</a>,
<a href="#compiler">updates the compiler back end</a> to generate more efficient code,
<a href="#gc">reduces GC pauses</a> by eliminating stop-the-world stack rescanning,
<a href="#h2push">adds HTTP/2 Push support</a>,
-<a href="#httpshutdown">adds HTTP graceful shutdown</a>,
+<a href="#http_shutdown">adds HTTP graceful shutdown</a>,
+<a href="#more_context">more context support</a>,
and <a href="#sort">simplifies sorting slices</a>.
</p>
@@ -43,7 +44,7 @@ and <a href="#sort">simplifies sorting slices</a>.
<p>
When explicitly converting structs, tags are now ignored for structural type identity.
- See <a href="/ref/spec#Conversions">language specification</a> for details.
+ See the <a href="/ref/spec#Conversions">language specification</a> for details.
</p>
<p> <!-- CL 17711 -->
@@ -74,7 +75,7 @@ and cancelation.
<p>
Go 1.8 now only supports OS X 10.8 or later. This is likely the last
- Go release to continue supporting 10.8. Compiling Go or running
+ Go release to support 10.8. Compiling Go or running
binaries on older OS X versions is untested.
</p>
@@ -229,7 +230,7 @@ see improvements closer to the 32-bit ARM numbers.
<p>
In addition to enabling the new compiler back end for all systems,
Go 1.8 also introduces a new compiler front end. The new compiler
- front end should not be noticeable to users is the foundation for
+ front end should not be noticeable to users but is the foundation for
future performance work.
</p>
@@ -252,14 +253,15 @@ see improvements closer to the 32-bit ARM numbers.
<h3 id="cmd_go">Go command</h3>
<p>
-The <a href="/cmd/go/"><code>go</code></a> command's basic operation
-is unchanged, but there are a number of changes worth noting.
+The <a href="/cmd/go/"><code>go</code> command</a>'s basic operation
+is unchanged, but there is one addition worth noting.
</p>
<p>
- A new
+ The new
“<a href="/cmd/go/#hdr-Print_information_for_bug_reports"><code>go</code>
- <code>bug</code></a>” command helps users file bug reports.
+ <code>bug</code></a>” starts a bug report on GitHub, prefilled
+ with information about the current system.
</p>
<h3 id="cmd_doc">Go doc</h3>
@@ -274,14 +276,15 @@ is unchanged, but there are a number of changes worth noting.
</p>
<p> <!-- CL 25420 -->
- In order to improve the readability of the <code>doc</code>'s
+ In order to improve the readability of <code>doc</code>'s
output, each summary of the first-level items is guaranteed to
occupy a single line.
</p>
<p> <!-- CL 31852 -->
- Documentation for interface methods is now only shown when requested
- explicitly.
+ Documentation for a specific method in an interface definition can
+ now be requested, as in
+ “<code>go</code> <code>doc</code> <code>net.Conn.SetDeadline</code>”.
</p>
<h3 id="plugin">Plugins</h3>
@@ -307,10 +310,14 @@ is unchanged, but there are a number of changes worth noting.
</p>
<p>
- <i>Updating:</i> Users of finalizers should see the example
- in the <a href="/pkg/runtime/#KeepAlive"><code>KeepAlive</code> documentation</a>
- to see where a call to <code>KeepAlive</code> might be needed.
- </p>
+ <i>Updating:</i>
+ Code that sets a finalizer on an allocated object may need to add
+ calls to <code>runtime.KeepAlive</code> in functions or methods
+ using that object.
+ Read the
+ <a href="/pkg/runtime/#KeepAlive"><code>KeepAlive</code>
+ documentation</a> and its example for more details.
+</p>
<h3 id="memstats">MemStats Documentation</h3>
@@ -344,8 +351,8 @@ packages.
<p>
Garbage collection pauses should be significantly shorter than they
- were in Go 1.7, often as low as 10 microseconds and usually under 100
- microseconds.
+ were in Go 1.7, usually under 100 microseconds and often as low as
+ 10 microseconds.
See the
<a href="https://github.com/golang/proposal/blob/master/design/17503-eliminate-rescan.md"
>document on eliminating stop-the-world stack re-scanning</a>
@@ -357,7 +364,7 @@ packages.
<!-- CL 29656, CL 29656 -->
<p>
The overhead of <a href="/ref/spec/#Defer_statements">deferred
- function calls</a> has been reduced by half.
+ function calls</a> has been reduced by about half.
</p>
<h3 id="cgoperf">Cgo</h3>
@@ -409,11 +416,33 @@ now implements the new
<p> <!-- CL 32329 -->
The HTTP Server now has support for graceful shutdown using the new
<a href="/pkg/net/http/#Server.Shutdown"><code>Server.Shutdown</code></a>
- method. The related and more abrupt
+ method and abrupt shutdown using the new
<a href="/pkg/net/http/#Server.Close"><code>Server.Close</code></a>
- is also new.
+ method.
+</p>
+
+<h3 id="more_context">More Context Support</h3>
+
+<p>
+ Continuing <a href="/doc/go1.7#context">Go 1.7's adoption</a>
+ of <a href="/pkg/context/#Context"><code>context.Context</code></a>
+ into the standard library, Go 1.8 adds more context support
+ to existing packages:
</p>
+<ul>
+ <li>The new <a href="/pkg/net/http/#Server.Shutdown"><code>Server.Shutdown</code></a>
+ takes a context argument.</li>
+ <li>There have been <a href="#database_sql">significant additions</a> to the
+ <a href="/pkg/database/sql/">database/sql</a> package with context support.</li>
+ <li>The new <a href="/pkg/testing/#T.Context"><code>T.Context</code></a>
+ method in the <a href="/pkg/testing/">testing</a> package now returns a context for
+ the active test or benchmark.</li>
+ <li>All nine of the new <code>Lookup</code> methods on the new
+ <a href="/pkg/net/#Resolver"><code>net.Resolver</code></a> now
+ take a context.</li>
+ </ul>
+
<h3 id="minor_library_changes">Minor changes to the library</h3>
<p>
@@ -493,8 +522,8 @@ in mind.
Similarly,
the <a href="/pkg/compress/gzip/#Reader"><code>Reader</code></a>
- now updates the <code>Header.ModTime</code> field only if the
- encoded <code>MTIME</code> field is non-zero.
+ now reports a zero encoded <code>MTIME</code> field as a zero
+ <code>Header.ModTime</code>.
</p>
</dd>
@@ -519,12 +548,11 @@ in mind.
ending in <code>Context</code> such as
<a href="/pkg/database/sql/#DB.QueryContext"><code>DB.QueryContext</code></a> and
<a href="/pkg/database/sql/#DB.PrepareContext"><code>DB.PrepareContext</code></a>
- that support <code>Context</code>. By using the new <code>Context</code> methods it ensures
+ that take context arguments. Using the new <code>Context</code> methods ensures that
connections are closed and returned to the connection pool when the
- request is done. It also enables canceling in-progress queries
- should the driver support it. Finally, using the <code>Context</code>
- methods allows the database pool to cancel waiting for the next
- available connection.
+ request is done; enables canceling in-progress queries
+ should the driver support that; and allows the database
+ pool to cancel waiting for the next available connection.
</p>
<p>
The <a href="/pkg/database/sql#IsolationLevel"><code>IsolationLevel</code></a>
@@ -541,8 +569,9 @@ in mind.
which can include SQL type information, column type lengths, and the Go type.
</p>
<p>
- Multiple result sets are now supported on Rows. After
- <a href="/pkg/database/sql/#Rows.Next"><code>Rows.Next</code></a> returns false
+ A <a href="/pkg/database/sql/#Rows"><code>Rows</code></a>
+ can now represent multiple result sets. After
+ <a href="/pkg/database/sql/#Rows.Next"><code>Rows.Next</code></a> returns false,
<a href="/pkg/database/sql/#Rows.NextResultSet"><code>Rows.NextResultSet</code></a>
may be called to advance to the next result set. The existing <code>Rows</code>
should be continued to be used after it advances to the next result set.
@@ -553,11 +582,14 @@ in mind.
helps create a <a href="/pkg/database/sql/#NamedParam"><code>NamedParam</code></a>
more succinctly.
<p>
- Drivers that support the new <a href="/pkg/database/sql/driver/#Pinger"><code>Pinger</code></a>
- interface can now check if the server is still alive when the the
+ If a driver supports the new
+ <a href="/pkg/database/sql/driver/#Pinger"><code>Pinger</code></a>
+ interface, the <code>DB</code>'s
<a href="/pkg/database/sql/#DB.Ping"><code>DB.Ping</code></a>
- or <a href="/pkg/database/sql/#DB.PingContext"><code>DB.PingContext</code></a>
- is called.
+ and
+ <a href="/pkg/database/sql/#DB.PingContext"><code>DB.PingContext</code></a>
+ methods will use that interface to check whether a
+ database connection is still valid.
</p>
<p>
The new <code>Context</code> query methods work for all drivers, but
@@ -619,8 +651,8 @@ pkg debug/pe, type StringTable []uint8</pre>
</p>
<p> <!-- CL 31932 -->
- A <code>nil</code> <a href="/pkg/encoding/json/#Marshaler"><code>Marshaler</code></a>
- now marshals as a JSON "<code>null</code>" value.
+ A nil <a href="/pkg/encoding/json/#Marshaler"><code>Marshaler</code></a>
+ now marshals as a JSON <code>null</code> value.
</p>
<p> <!-- CL 21811 -->
@@ -629,17 +661,20 @@ pkg debug/pe, type StringTable []uint8</pre>
</p>
<p> <!-- CL 30371 -->
- Marshal encodes floating-point numbers using the same format as in ES6,
+ <a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>
+ encodes floating-point numbers using the same format as in ES6,
preferring decimal (not exponential) notation for a wider range of values.
In particular, all floating-point integers up to 2<sup>64</sup> format the
same as the equivalent <code>int64</code> representation.
</p>
<p> <!-- CL 30944 -->
- Implementations
+
+ In previous versions of Go, unmarshaling a JSON <code>null</code> into an
of <a href="/pkg/encoding/json/#Unmarshaler"><code>Unmarshaler</code></a>
- are now called with the literal "<code>null</code>" and can
- decide how to handle it.
+ was considered a no-op; now the <code>Unmarshaler</code>'s
+ <code>UnmarshalJSON</code> method is called with the JSON literal
+ <code>null</code> and can define the semantics of that case.
</p>
</dd>
@@ -695,12 +730,13 @@ pkg debug/pe, type StringTable []uint8</pre>
<p><!-- CL 27253, CL 33456 -->
The new <a href="/pkg/math/rand/#Rand.Uint64"><code>Rand.Uint64</code></a>
- method returns <code>uint64</code> values. The
- new <a href="/pkg/math/rand/#Rand.Source64"><code>Rand.Source64</code></a>
+ method returns <code>uint64</code> values. The
+ new <a href="/pkg/math/rand/#Source64"><code>Source64</code></a>
interface describes sources capable of generating such values
directly; otherwise the <code>Rand.Uint64</code> method
constructs a <code>uint64</code> from two calls
- to <code>Rand.Source</code>'s <code>Int63</code> method.
+ to <a href="/pkg/math/rand/#Source"><code>Source</code></a>'s
+ <code>Int63</code> method.
</p>
</dd>
@@ -713,13 +749,15 @@ pkg debug/pe, type StringTable []uint8</pre>
The
<a href="/pkg/mime/quotedprintable/#Reader"><code>Reader</code></a>'s
parsing has been relaxed in two ways to accept
- more input seen in the wild. First, it now accepts
- a <code>=</code> sign even if it's not followed by two hex
- digits. <!-- CL 32174 -->
+ more input seen in the wild.
+
+ <!-- CL 32174 -->
+ First, it accepts an equals sign (<code>=</code>) not followed
+ by two hex digits as a literal equal sign.
- Second, it accepts a trailing soft line-break at the end of a
- message. <!-- CL 27530 --> That is, the final byte of the
- message may be a <code>=</code> sign and it will now be ignored.
+ <!-- CL 27530 -->
+ Second, it silently ignores a trailing equals sign at the end of
+ an encoded input.
</p>
</dd>
@@ -926,8 +964,8 @@ pkg debug/pe, type StringTable []uint8</pre>
<a href="/pkg/net/url/#URL.Hostname"><code>URL.Hostname</code></a>
and
<a href="/pkg/net/url/#URL.Port"><code>URL.Port</code></a>
- are accessors to the hostname and port fields of a URL
- and deal with the case where the port may or may not be present.
+ return the hostname and port fields of a URL,
+ correctly handling the case where the port may not be present.
</p>
<p> <!-- CL 28343 --> The existing method
@@ -961,7 +999,7 @@ pkg debug/pe, type StringTable []uint8</pre>
<p>
The new function
<a href="/pkg/os/#Executable"><code>Executable</code></a> returns
- the running executable path name.
+ the path name of the running executable.
</p>
</dd>
</dl>