@@ -49,7 +49,8 @@ <h2 id="language">Changes to the language</h2>
49
49
< p > <!-- CL 17711 -->
50
50
The language specification now only requires that implementations
51
51
support up to 16-bit exponents in floating-point constants. This does not affect
52
- either the < code > gc</ code > or < code > gccgo</ code > compilers, both of
52
+ either the “< a href ="/cmd/compile/ "> < code > gc</ code > </ a > ” or
53
+ < code > gccgo</ code > compilers, both of
53
54
which still support 32-bit exponents.
54
55
</ p >
55
56
@@ -214,8 +215,10 @@ <h3 id="compiler">Compiler Toolchain</h3>
214
215
and provides a better platform for optimizations
215
216
such as bounds check elimination.
216
217
The new back end reduces the CPU time required by
217
- < a href ="https://golang.org/test/bench/go1/ "> our benchmark programs</ a > by N-M%.
218
- TODO: ARM binary size & perf numbers.
218
+ < a href ="https://golang.org/test/bench/go1/ "> our benchmark programs</ a > by 20-30%
219
+ on 32-bit ARM systems. For 64-bit x86 systems, which already used the SSA backend in
220
+ Go 1.7, the gains are a more modest 0-10%. Other architectures will likely
221
+ see improvements closer to the 32-bit ARM numbers.
219
222
</ p >
220
223
221
224
< p >
@@ -234,15 +237,10 @@ <h3 id="compiler">Compiler Toolchain</h3>
234
237
The compiler and linker have been optimized and run faster in this
235
238
release than in Go 1.7, although they are still slower than we would
236
239
like and will continue to be optimized in future releases.
240
+ Compared to the previous release, Go 1.8 is
241
+ < a href ="https://dave.cheney.net/2016/11/19/go-1-8-toolchain-improvements "> about 15% faster</ a > .
237
242
</ p >
238
243
239
- < p >
240
- Due to changes across the compiler toolchain and standard library,
241
- binaries built with this release should typically be smaller than
242
- binaries built with Go 1.7, sometimes by as much as TODO numbers.
243
- </ p >
244
-
245
-
246
244
< h3 id ="cmd_cgo "> Cgo</ h3 >
247
245
248
246
< p > TODO</ p >
@@ -308,6 +306,12 @@ <h3 id="liveness">Argument Liveness</h3>
308
306
function added in Go 1.7.
309
307
</ p >
310
308
309
+ < p >
310
+ < i > Updating:</ i > Users of finalizers should see the example
311
+ in the < a href ="/pkg/runtime/#KeepAlive "> < code > KeepAlive</ code > documentation</ a >
312
+ to see where a call to < code > KeepAlive</ code > might be needed.
313
+ </ p >
314
+
311
315
< h3 id ="memstats "> MemStats Documentation</ h3 >
312
316
313
317
< p > <!-- CL 28972 -->
@@ -358,7 +362,7 @@ <h3 id="defer">Defer</h3>
358
362
359
363
< h3 id ="cgoperf "> Cgo</ h3 >
360
364
361
- < p > Calls from Go into C are now TODO% faster .</ p >
365
+ < p > The overhead of calls from Go into C has been reduced by about half .</ p >
362
366
363
367
< h2 id ="library "> Standard library</ h2 >
364
368
@@ -644,7 +648,8 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
644
648
< dl id ="encoding_pem "> < dt > < a href ="/pkg/encoding/pem/ "> encoding/pem</ a > </ dt >
645
649
< dd >
646
650
< p > <!-- CL 27391 -->
647
- The PEM decoder is now strict about the format of the ending line.
651
+ < a href ="/pkg/encoding/pem/#Decode "> < code > Decode</ code > </ a >
652
+ is now strict about the format of the ending line.
648
653
</ p >
649
654
</ dd >
650
655
</ dl >
@@ -673,10 +678,13 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
673
678
< dl id ="image_png "> < dt > < a href ="/pkg/image/png/ "> image/png</ a > </ dt >
674
679
< dd >
675
680
< p > <!-- CL 32143, CL 32140 -->
676
- The PNG decoder now supports truecolor and grayscale transparency.
681
+ < a href ="/pkg/image/png/#Decode "> < code > Decode</ code > </ a >
682
+ (and < code > DecodeConfig</ code > )
683
+ now supports True Color and grayscale transparency.
677
684
</ p >
678
685
< p > <!-- CL 29872 -->
679
- The PNG encoder is now faster and creates smaller output
686
+ < a href ="/pkg/image/png/#Encoder "> < code > Encoder</ code > </ a >
687
+ is now faster and creates smaller output
680
688
when encoding paletted images.
681
689
</ p >
682
690
</ dd >
@@ -702,19 +710,38 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
702
710
< dd >
703
711
704
712
< p >
705
- The package's parsing has been relaxed in two ways to accept
713
+ The
714
+ < a href ="/pkg/mime/quotedprintable/#Reader "> < code > Reader</ code > </ a > 's
715
+ parsing has been relaxed in two ways to accept
706
716
more input seen in the wild. First, it now accepts
707
717
a < code > =</ code > sign even if it's not followed by two hex
708
718
digits. <!-- CL 32174 -->
709
719
710
720
Second, it accepts a trailing soft line-break at the end of a
711
- message. <!-- CL 27530 --> . That is, the final byte of the
721
+ message. <!-- CL 27530 --> That is, the final byte of the
712
722
message may be a < code > =</ code > sign and it will now be ignored.
713
723
</ p >
714
724
715
725
</ dd >
716
726
</ dl >
717
727
728
+ < dl id ="net "> < dt > < a href ="/pkg/net/ "> net</ a > </ dt >
729
+ < dd >
730
+
731
+ < p > <!-- CL 30164, CL 33473 -->
732
+ The < a href ="/pkg/net/#Conn "> < code > Conn</ code > </ a > documentation
733
+ has been updated to clarify expectations of an interface
734
+ implementation. Updates in the < code > net/http</ code > packages
735
+ depend on implementations obeying the documentation.
736
+ </ p >
737
+ < p > < i > Updating:</ i > implementations of the < code > Conn</ code > interface should verify
738
+ they implement the documented semantics. TODO: https://golang.org/cl/18097
739
+ </ p >
740
+
741
+ < p > TODO: many other net changes</ p >
742
+
743
+ </ dd >
744
+ </ dl >
718
745
719
746
< dl id ="net_http "> < dt > < a href ="/pkg/net/http/ "> net/http</ a > </ dt >
720
747
< dd >
@@ -758,7 +785,9 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
758
785
middle of a slow request, the < code > Handler</ code > can now
759
786
detect that the user is gone. This complements the
760
787
existing < a href ="/pkg/net/http/#CloseNotifier "> < code > CloseNotifier</ code > </ a >
761
- support.
788
+ support. This functionality requires that the underlying
789
+ < a href ="/pkg/net/#Conn "> < code > net.Conn</ code > </ a > implements
790
+ < a href ="#net "> recently-clarified interface documentation</ a > .
762
791
</ li >
763
792
764
793
< li > <!-- CL 32479 -->
@@ -794,7 +823,7 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
794
823
now copies most request headers on redirect. Authentication-specific
795
824
headers are only sent to the same origin or subdomains thereof.
796
825
Cookies are not sent again, unless they were set explicitly.
797
- TODO: verify this, and link to docs once https://github.com/golang/go/issues /18096
826
+ TODO: verify this, and link to docs once https://golang.org/issue /18096
798
827
is fixed.
799
828
</ li >
800
829
@@ -973,8 +1002,10 @@ <h3 id="minor_library_changes">Minor changes to the library</h3>
973
1002
</ p >
974
1003
975
1004
< p > <!-- CL 33429 -->
976
- < code > Parse</ code > now validates days that are too small, in
977
- addition to days that are too large.
1005
+ < a href ="/pkg/time/#Parse "> < code > Parse</ code > </ a >
1006
+ now rejects dates before the start of a month, such as June 0;
1007
+ it already rejected dates beyond the end of the month, such as
1008
+ June 31 and July 32.
978
1009
</ p >
979
1010
980
1011
< p > <!-- CL 33029 -->
0 commit comments