@@ -216,7 +216,7 @@ <h4 id="list-buildid">The <code>list</code> command</h4>
216
216
217
217
< h3 id ="cgo "> Cgo</ h3 >
218
218
219
- < p > <!-- CL 252378 -->
219
+ < p > <!-- CL 252378 -->
220
220
The < a href ="/cmd/cgo "> cgo</ a > tool will no longer try to translate
221
221
C struct bitfields into Go struct fields, even if their size can be
222
222
represented in Go. The order in which C bitfields appear in memory
@@ -281,143 +281,21 @@ <h2 id="linker">Linker</h2>
281
281
TODO: update with final numbers later in the release.
282
282
</ p >
283
283
284
- < p > <!-- CL 255259 -->
284
+ < p > <!-- CL 255259 -->
285
285
On Windows, < code > go build -buildmode=c-shared</ code > now generates Windows
286
286
ASLR DLLs by default. ASLR can be disabled with < code > --ldflags=-aslr=false</ code > .
287
287
</ p >
288
288
289
289
< h2 id ="library "> Core library</ h2 >
290
290
291
291
< 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
361
294
</ p >
362
295
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"
421
299
</ p >
422
300
423
301
< 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>
429
307
</ p >
430
308
431
309
< p >
432
- TODO
310
+ TODO: complete this section, resolve TODOs below, add missing entries
433
311
</ p >
434
312
435
313
< 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>
441
319
</ dd >
442
320
</ dl > <!-- crypto/dsa -->
443
321
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
+
444
332
< dl id ="crypto/tls "> < dt > < a href ="/pkg/crypto/tls/ "> crypto/tls</ a > </ dt >
445
333
< 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
+
446
382
< p > <!-- CL 246637 -->
447
383
TODO: < a href ="https://golang.org/cl/246637 "> https://golang.org/cl/246637</ a > : make config.Clone return nil if the source is nil
448
384
</ p >
@@ -451,6 +387,28 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
451
387
452
388
< dl id ="crypto/x509 "> < dt > < a href ="/pkg/crypto/x509/ "> crypto/x509</ a > </ dt >
453
389
< 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
+
454
412
< p > <!-- CL 257939 -->
455
413
DSA signature verification is no longer supported. Note that DSA signature
456
414
generation was never supported.
@@ -469,6 +427,12 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
469
427
470
428
< dl id ="encoding/json "> < dt > < a href ="/pkg/encoding/json/ "> encoding/json</ a > </ dt >
471
429
< 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
+
472
436
< p > <!-- CL 234818 -->
473
437
TODO: < a href ="https://golang.org/cl/234818 "> https://golang.org/cl/234818</ a > : allow semicolon in field key / struct tag
474
438
</ p >
@@ -531,6 +495,22 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
531
495
532
496
< dl id ="net "> < dt > < a href ="/pkg/net/ "> net</ a > </ dt >
533
497
< 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
+
534
514
< p > <!-- CL 238629 -->
535
515
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
536
516
</ p >
@@ -554,14 +534,14 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
554
534
</ p >
555
535
556
536
< 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.
560
540
</ p >
561
541
562
542
< 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.
565
545
</ p >
566
546
567
547
< p > <!-- CL 246338 -->
@@ -661,6 +641,19 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
661
641
</ dd >
662
642
</ dl > <!-- runtime/debug -->
663
643
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
+
664
657
< dl id ="syscall "> < dt > < a href ="/pkg/syscall/ "> syscall</ a > </ dt >
665
658
< dd >
666
659
< p > <!-- CL 261917 -->
@@ -677,19 +670,6 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
677
670
</ dd >
678
671
</ dl > <!-- syscall -->
679
672
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
-
693
673
< dl id ="text/template "> < dt > < a href ="/pkg/text/template/ "> text/template</ a > </ dt >
694
674
< dd >
695
675
< p > <!-- CL 254257 -->
@@ -698,12 +678,35 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
698
678
</ dd >
699
679
</ dl > <!-- text/template -->
700
680
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
+
701
691
< dl id ="time/tzdata "> < dt > < a href ="/pkg/time/tzdata/ "> time/tzdata</ a > </ dt >
702
692
< dd >
703
693
< 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
705
695
< 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.
707
697
</ p >
708
698
</ dd >
709
699
</ 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