Skip to content

Commit 4481ad6

Browse files
committed
doc/go1.16: consolidate stdlib changes in "Minor changes" section
Many of the standard library changes that were added before CL 272871 ended up in the "Core library" section. That section is meant for major changes like new packages, and most of these aren't. Consolidate all changes in the "Minor changes to the library" section for now, so that it's easier to get a complete picture of changes for each package, along with the remaining TODOs. Add a TODO to read them over at the end and factor out items that are worth highlighting. Apply minor other fixups to improve consistency. For #40700. Change-Id: I7dc2e7ebf2ea3385fce0c207bae4ce467998a717 Reviewed-on: https://go-review.googlesource.com/c/go/+/273267 Trust: Dmitri Shuralyov <[email protected]> Run-TryBot: Dmitri Shuralyov <[email protected]> Reviewed-by: Katie Hockman <[email protected]> TryBot-Result: Go Bot <[email protected]>
1 parent ef603be commit 4481ad6

File tree

1 file changed

+153
-150
lines changed

1 file changed

+153
-150
lines changed

doc/go1.16.html

Lines changed: 153 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ <h4 id="list-buildid">The <code>list</code> command</h4>
216216

217217
<h3 id="cgo">Cgo</h3>
218218

219-
<p> <!-- CL 252378 -->
219+
<p><!-- CL 252378 -->
220220
The <a href="/cmd/cgo">cgo</a> tool will no longer try to translate
221221
C struct bitfields into Go struct fields, even if their size can be
222222
represented in Go. The order in which C bitfields appear in memory
@@ -281,143 +281,21 @@ <h2 id="linker">Linker</h2>
281281
TODO: update with final numbers later in the release.
282282
</p>
283283

284-
<p> <!-- CL 255259 -->
284+
<p><!-- CL 255259 -->
285285
On Windows, <code>go build -buildmode=c-shared</code> now generates Windows
286286
ASLR DLLs by default. ASLR can be disabled with <code>--ldflags=-aslr=false</code>.
287287
</p>
288288

289289
<h2 id="library">Core library</h2>
290290

291291
<p>
292-
TODO
293-
</p>
294-
295-
<h3 id="crypto/hmac"><a href="/pkg/crypto/hmac">crypto/hmac</a></h3>
296-
297-
<p><!-- CL 261960 -->
298-
<a href="/pkg/crypto/hmac/#New">New</a> will now panic if separate calls to
299-
the hash generation function fail to return new values. Previously, the
300-
behavior was undefined and invalid outputs were sometimes generated.
301-
</p>
302-
303-
<h3 id="crypto/tls"><a href="/pkg/crypto/tls">crypto/tls</a></h3>
304-
305-
<p><!-- CL 256897 -->
306-
I/O operations on closing or closed TLS connections can now be detected using
307-
the new <a href="/pkg/net/#ErrClosed">ErrClosed</a> error. A typical use
308-
would be <code>errors.Is(err, net.ErrClosed)</code>. In earlier releases
309-
the only way to reliably detect this case was to match the string returned
310-
by the <code>Error</code> method with <code>"tls: use of closed connection"</code>.
311-
</p>
312-
313-
<p><!-- CL 266037 -->
314-
A default deadline is set in <a href="/pkg/crypto/tls/#Conn.Close">Close</a>
315-
before sending the close notify alert, in order to prevent blocking
316-
indefinitely.
317-
</p>
318-
319-
<p><!-- CL 246338 -->
320-
<a href="/pkg/crypto/tls#Conn.HandshakeContext">(*Conn).HandshakeContext</a> was added to
321-
allow the user to control cancellation of an in-progress TLS Handshake.
322-
The context provided is propagated into the
323-
<a href="/pkg/crypto/tls#ClientHelloInfo">ClientHelloInfo</a>
324-
and <a href="/pkg/crypto/tls#CertificateRequestInfo">CertificateRequestInfo</a>
325-
structs and accessible through the new
326-
<a href="/pkg/crypto/tls#ClientHelloInfo.Context">(*ClientHelloInfo).Context</a>
327-
and
328-
<a href="/pkg/crypto/tls#CertificateRequestInfo.Context">
329-
(*CertificateRequestInfo).Context
330-
</a> methods respectively. Canceling the context after the handshake has finished
331-
has no effect.
332-
</p>
333-
334-
<p><!-- CL 239748 -->
335-
Clients now ensure that the server selects
336-
<a href="/pkg/crypto/tls/#ConnectionState.NegotiatedProtocol">
337-
an ALPN protocol</a> from
338-
<a href="/pkg/crypto/tls/#Config.NextProtos">
339-
the list advertised by the client</a>.
340-
</p>
341-
342-
<p><!-- CL 262857 -->
343-
TLS servers will now prefer other AEAD cipher suites (such as ChaCha20Poly1305)
344-
over AES-GCM cipher suites if either the client or server doesn't have AES hardware
345-
support, unless the application set both
346-
<a href="/pkg/crypto/tls/#Config.PreferServerCipherSuites"><code>Config.PreferServerCipherSuites</code></a>
347-
and <a href="/pkg/crypto/tls/#Config.CipherSuites"><code>Config.CipherSuites</code></a>
348-
or there are no other AEAD cipher suites supported.
349-
The client is assumed not to have AES hardware support if it does not signal a
350-
preference for AES-GCM cipher suites.
351-
</p>
352-
353-
<h3 id="crypto/x509"><a href="/pkg/crypto/x509">crypto/x509</a></h3>
354-
355-
<p><!-- CL 235078 -->
356-
<a href="/pkg/crypto/x509/#ParseCertificate">ParseCertificate</a> and
357-
<a href="/pkg/crypto/x509/#CreateCertificate">CreateCertificate</a> both
358-
now enforce string encoding restrictions for the fields <code>DNSNames</code>,
359-
<code>EmailAddresses</code>, and <code>URIs</code>. These fields can only
360-
contain strings with characters within the ASCII range.
292+
TODO: mention significant additions like new packages (<code>io/fs</code>),
293+
new proposal-scoped features (<code>//go:embed</code>), and so on
361294
</p>
362295

363-
<p><!-- CL 259697 -->
364-
<a href="/pkg/crypto/x509/#CreateCertificate">CreateCertificate</a> now
365-
verifies the generated certificate's signature using the signer's
366-
public key. If the signature is invalid, an error is returned, instead
367-
of a malformed certificate.
368-
</p>
369-
370-
<p><!-- CL 233163 -->
371-
A number of additional fields have been added to the
372-
<a href="/pkg/crypto/x509/#CertificateRequest">CertificateRequest</a> type.
373-
These fields are now parsed in <a href="/pkg/crypto/x509/#ParseCertificateRequest">ParseCertificateRequest</a>
374-
and marshalled in <a href="/pkg/crypto/x509/#CreateCertificateRequest">CreateCertificateRequest</a>.
375-
</p>
376-
377-
<h3 id="encoding/json"><a href="/pkg/encoding/json">encoding/json</a></h3>
378-
379-
<p><!-- CL 263619 -->
380-
The error message for
381-
<a href="/pkg/encoding/json/#SyntaxError">SyntaxError</a>
382-
now begins with "json: ", matching the other errors in the package.
383-
</p>
384-
385-
<h3 id="net"><a href="/pkg/net/">net</a></h3>
386-
387-
<p><!-- CL 250357 -->
388-
The case of I/O on a closed network connection, or I/O on a network
389-
connection that is closed before any of the I/O completes, can now
390-
be detected using the new <a href="/pkg/net/#ErrClosed">ErrClosed</a> error.
391-
A typical use would be <code>errors.Is(err, net.ErrClosed)</code>.
392-
In earlier releases the only way to reliably detect this case was to
393-
match the string returned by the <code>Error</code> method
394-
with <code>"use of closed network connection"</code>.
395-
</p>
396-
397-
<p><!-- CL 255898 -->
398-
In previous Go releases the default TCP listener backlog size on Linux systems,
399-
set by <code>/proc/sys/net/core/somaxconn</code>, was limited to a maximum of <code>65535</code>.
400-
On Linux kernel version 4.1 and above, the maximum is now <code>4294967295</code>.
401-
</p>
402-
403-
<h3 id="text/template/parse"><a href="/pkg/text/template/parse/">text/template/parse</a></h3>
404-
405-
<p><!-- CL 229398, golang.org/issue/34652 -->
406-
A new <a href="/pkg/text/template/parse/#CommentNode"><code>CommentNode</code></a>
407-
was added to the parse tree. The <a href="/pkg/text/template/parse/#Mode"><code>Mode</code></a>
408-
field in the <code>parse.Tree</code> enables access to it.
409-
</p>
410-
<!-- text/template/parse -->
411-
412-
<h3 id="unicode"><a href="/pkg/unicode/">unicode</a></h3>
413-
414-
<p><!-- CL 248765 -->
415-
The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
416-
support throughout the system has been upgraded from Unicode 12.0.0 to
417-
<a href="https://www.unicode.org/versions/Unicode13.0.0/">Unicode 13.0.0</a>,
418-
which adds 5,930 new characters, including four new scripts, and 55 new emoji.
419-
Unicode 13.0.0 also designates plane 3 (U+30000-U+3FFFF) as the tertiary
420-
ideographic plane.
296+
<p>
297+
TODO: when the "Minor changes to the library" section is close to completion,
298+
decide if any changes are worth factoring out and highlighting in "Core library"
421299
</p>
422300

423301
<h3 id="minor_library_changes">Minor changes to the library</h3>
@@ -429,7 +307,7 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
429307
</p>
430308

431309
<p>
432-
TODO
310+
TODO: complete this section, resolve TODOs below, add missing entries
433311
</p>
434312

435313
<dl id="crypto/dsa"><dt><a href="/pkg/crypto/dsa/">crypto/dsa</a></dt>
@@ -441,8 +319,66 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
441319
</dd>
442320
</dl><!-- crypto/dsa -->
443321

322+
<dl id="crypto/hmac"><dt><a href="/pkg/crypto/hmac/">crypto/hmac</a></dt>
323+
<dd>
324+
<p><!-- CL 261960 -->
325+
<a href="/pkg/crypto/hmac/#New">New</a> will now panic if separate calls to
326+
the hash generation function fail to return new values. Previously, the
327+
behavior was undefined and invalid outputs were sometimes generated.
328+
</p>
329+
</dd>
330+
</dl><!-- crypto/hmac -->
331+
444332
<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
445333
<dd>
334+
<p><!-- CL 256897 -->
335+
I/O operations on closing or closed TLS connections can now be detected using
336+
the new <a href="/pkg/net/#ErrClosed">ErrClosed</a> error. A typical use
337+
would be <code>errors.Is(err, net.ErrClosed)</code>. In earlier releases
338+
the only way to reliably detect this case was to match the string returned
339+
by the <code>Error</code> method with <code>"tls: use of closed connection"</code>.
340+
</p>
341+
342+
<p><!-- CL 266037 -->
343+
A default deadline is set in <a href="/pkg/crypto/tls/#Conn.Close">Close</a>
344+
before sending the close notify alert, in order to prevent blocking
345+
indefinitely.
346+
</p>
347+
348+
<p><!-- CL 246338 -->
349+
<a href="/pkg/crypto/tls#Conn.HandshakeContext">(*Conn).HandshakeContext</a> was added to
350+
allow the user to control cancellation of an in-progress TLS Handshake.
351+
The context provided is propagated into the
352+
<a href="/pkg/crypto/tls#ClientHelloInfo">ClientHelloInfo</a>
353+
and <a href="/pkg/crypto/tls#CertificateRequestInfo">CertificateRequestInfo</a>
354+
structs and accessible through the new
355+
<a href="/pkg/crypto/tls#ClientHelloInfo.Context">(*ClientHelloInfo).Context</a>
356+
and
357+
<a href="/pkg/crypto/tls#CertificateRequestInfo.Context">
358+
(*CertificateRequestInfo).Context
359+
</a> methods respectively. Canceling the context after the handshake has finished
360+
has no effect.
361+
</p>
362+
363+
<p><!-- CL 239748 -->
364+
Clients now ensure that the server selects
365+
<a href="/pkg/crypto/tls/#ConnectionState.NegotiatedProtocol">
366+
an ALPN protocol</a> from
367+
<a href="/pkg/crypto/tls/#Config.NextProtos">
368+
the list advertised by the client</a>.
369+
</p>
370+
371+
<p><!-- CL 262857 -->
372+
TLS servers will now prefer other AEAD cipher suites (such as ChaCha20Poly1305)
373+
over AES-GCM cipher suites if either the client or server doesn't have AES hardware
374+
support, unless the application set both
375+
<a href="/pkg/crypto/tls/#Config.PreferServerCipherSuites"><code>Config.PreferServerCipherSuites</code></a>
376+
and <a href="/pkg/crypto/tls/#Config.CipherSuites"><code>Config.CipherSuites</code></a>
377+
or there are no other AEAD cipher suites supported.
378+
The client is assumed not to have AES hardware support if it does not signal a
379+
preference for AES-GCM cipher suites.
380+
</p>
381+
446382
<p><!-- CL 246637 -->
447383
TODO: <a href="https://golang.org/cl/246637">https://golang.org/cl/246637</a>: make config.Clone return nil if the source is nil
448384
</p>
@@ -451,6 +387,28 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
451387

452388
<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
453389
<dd>
390+
<p><!-- CL 235078 -->
391+
<a href="/pkg/crypto/x509/#ParseCertificate">ParseCertificate</a> and
392+
<a href="/pkg/crypto/x509/#CreateCertificate">CreateCertificate</a> both
393+
now enforce string encoding restrictions for the fields <code>DNSNames</code>,
394+
<code>EmailAddresses</code>, and <code>URIs</code>. These fields can only
395+
contain strings with characters within the ASCII range.
396+
</p>
397+
398+
<p><!-- CL 259697 -->
399+
<a href="/pkg/crypto/x509/#CreateCertificate">CreateCertificate</a> now
400+
verifies the generated certificate's signature using the signer's
401+
public key. If the signature is invalid, an error is returned, instead
402+
of a malformed certificate.
403+
</p>
404+
405+
<p><!-- CL 233163 -->
406+
A number of additional fields have been added to the
407+
<a href="/pkg/crypto/x509/#CertificateRequest">CertificateRequest</a> type.
408+
These fields are now parsed in <a href="/pkg/crypto/x509/#ParseCertificateRequest">ParseCertificateRequest</a>
409+
and marshalled in <a href="/pkg/crypto/x509/#CreateCertificateRequest">CreateCertificateRequest</a>.
410+
</p>
411+
454412
<p><!-- CL 257939 -->
455413
DSA signature verification is no longer supported. Note that DSA signature
456414
generation was never supported.
@@ -469,6 +427,12 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
469427

470428
<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
471429
<dd>
430+
<p><!-- CL 263619 -->
431+
The error message for
432+
<a href="/pkg/encoding/json/#SyntaxError">SyntaxError</a>
433+
now begins with "json: ", matching the other errors in the package.
434+
</p>
435+
472436
<p><!-- CL 234818 -->
473437
TODO: <a href="https://golang.org/cl/234818">https://golang.org/cl/234818</a>: allow semicolon in field key / struct tag
474438
</p>
@@ -531,6 +495,22 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
531495

532496
<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
533497
<dd>
498+
<p><!-- CL 250357 -->
499+
The case of I/O on a closed network connection, or I/O on a network
500+
connection that is closed before any of the I/O completes, can now
501+
be detected using the new <a href="/pkg/net/#ErrClosed">ErrClosed</a> error.
502+
A typical use would be <code>errors.Is(err, net.ErrClosed)</code>.
503+
In earlier releases the only way to reliably detect this case was to
504+
match the string returned by the <code>Error</code> method
505+
with <code>"use of closed network connection"</code>.
506+
</p>
507+
508+
<p><!-- CL 255898 -->
509+
In previous Go releases the default TCP listener backlog size on Linux systems,
510+
set by <code>/proc/sys/net/core/somaxconn</code>, was limited to a maximum of <code>65535</code>.
511+
On Linux kernel version 4.1 and above, the maximum is now <code>4294967295</code>.
512+
</p>
513+
534514
<p><!-- CL 238629 -->
535515
TODO: <a href="https://golang.org/cl/238629">https://golang.org/cl/238629</a>: prefer /etc/hosts over DNS when no /etc/nsswitch.conf is present
536516
</p>
@@ -554,14 +534,14 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
554534
</p>
555535

556536
<p><!-- CL 252497 -->
557-
The <a href="/pkg/net/http/"><code>net/http</code></a> package now rejects HTTP range requests
558-
of the form <code>"Range": "bytes=--N"</code> where <code>"-N"</code> is a negative suffix length, for
559-
example <code>"Range": "bytes=--2"</code>. It now replies with a <code>416 "Range Not Satisfiable"</code> response.
537+
The <a href="/pkg/net/http/"><code>net/http</code></a> package now rejects HTTP range requests
538+
of the form <code>"Range": "bytes=--N"</code> where <code>"-N"</code> is a negative suffix length, for
539+
example <code>"Range": "bytes=--2"</code>. It now replies with a <code>416 "Range Not Satisfiable"</code> response.
560540
</p>
561541

562542
<p><!-- CL 256498, golang.org/issue/36990 -->
563-
Cookies set with <code>SameSiteDefaultMode</code> now behave according to the current
564-
spec (no attribute is set) instead of generating a SameSite key without a value.
543+
Cookies set with <code>SameSiteDefaultMode</code> now behave according to the current
544+
spec (no attribute is set) instead of generating a SameSite key without a value.
565545
</p>
566546

567547
<p><!-- CL 246338 -->
@@ -661,6 +641,19 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
661641
</dd>
662642
</dl><!-- runtime/debug -->
663643

644+
<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
645+
<dd>
646+
<p><!-- CL 260858 -->
647+
<a href="/pkg/strconv/#ParseFloat"><code>ParseFloat</code></a> now uses
648+
the <a
649+
href="https://nigeltao.github.io/blog/2020/eisel-lemire.html">Eisel-Lemire
650+
algorithm</a>, improving performance by up to a factor of 2. This can
651+
also speed up decoding textual formats like <a
652+
href="/pkg/encoding/json/"><code>encoding/json</code></a>.
653+
</p>
654+
</dd>
655+
</dl><!-- strconv -->
656+
664657
<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
665658
<dd>
666659
<p><!-- CL 261917 -->
@@ -677,19 +670,6 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
677670
</dd>
678671
</dl><!-- syscall -->
679672

680-
<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
681-
<dd>
682-
<p><!-- CL 260858 -->
683-
<a href="/pkg/strconv/#ParseFloat"><code>ParseFloat</code></a> now uses
684-
the <a
685-
href="https://nigeltao.github.io/blog/2020/eisel-lemire.html">Eisel-Lemire
686-
algorithm</a>, improving performance by up to a factor of 2. This can
687-
also speed up decoding textual formats like <a
688-
href="/pkg/encoding/json/"><code>encoding/json</code></a>.
689-
</p>
690-
</dd>
691-
</dl><!-- strconv -->
692-
693673
<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
694674
<dd>
695675
<p><!-- CL 254257 -->
@@ -698,12 +678,35 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
698678
</dd>
699679
</dl><!-- text/template -->
700680

681+
<dl id="text/template/parse"><dt><a href="/pkg/text/template/parse/">text/template/parse</a></dt>
682+
<dd>
683+
<p><!-- CL 229398, golang.org/issue/34652 -->
684+
A new <a href="/pkg/text/template/parse/#CommentNode"><code>CommentNode</code></a>
685+
was added to the parse tree. The <a href="/pkg/text/template/parse/#Mode"><code>Mode</code></a>
686+
field in the <code>parse.Tree</code> enables access to it.
687+
</p>
688+
</dd>
689+
</dl><!-- text/template/parse -->
690+
701691
<dl id="time/tzdata"><dt><a href="/pkg/time/tzdata/">time/tzdata</a></dt>
702692
<dd>
703693
<p><!-- CL 261877 -->
704-
The slim timezone data format is now used for the time zone database in
694+
The slim timezone data format is now used for the timezone database in
705695
<code>$GOROOT/lib/time/zoneinfo.zip</code> and the embedded copy in this
706-
package. This reduces the size of the time zone database by about 350 KB.
696+
package. This reduces the size of the timezone database by about 350 KB.
707697
</p>
708698
</dd>
709699
</dl><!-- time/tzdata -->
700+
701+
<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
702+
<dd>
703+
<p><!-- CL 248765 -->
704+
The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
705+
support throughout the system has been upgraded from Unicode 12.0.0 to
706+
<a href="https://www.unicode.org/versions/Unicode13.0.0/">Unicode 13.0.0</a>,
707+
which adds 5,930 new characters, including four new scripts, and 55 new emoji.
708+
Unicode 13.0.0 also designates plane 3 (U+30000-U+3FFFF) as the tertiary
709+
ideographic plane.
710+
</p>
711+
</dd>
712+
</dl><!-- unicode -->

0 commit comments

Comments
 (0)