From: Russ Cox
The latest Go release, version 1.10, arrives six months after go1.9.
Most of its changes are in the implementation of the toolchain, runtime, and libraries.
@@ -127,7 +117,7 @@ applies the flags
only to the packages matching the pattern.
For example: go
install
-ldflags=cmd/gofmt=-X=main.version=1.2.3
cmd/...
installs all the commands matching cmd/...
but only applies the -X
option
to the linker flags for cmd/gofmt
.
-For more details, see go
help
build
.
+For more details, see go
help
build
.
@@ -161,7 +151,7 @@ One new requirement implied by these changes is that
binary-only packages must now declare accurate import blocks in their
stub source code, so that those imports can be made available when
linking a program using the binary-only package.
-For more details, see go
help
filetype
.
+For more details, see go
help
filetype
.
-TODO: What to say about FMA, if anything? -The spec change was mentioned in Go 1.9 but I am not sure whether any new architectures turned it on in Go 1.10. -
-
The various build modes
has been ported to more systems.
@@ -557,6 +542,10 @@ There is no longer a limit on the GOMAX
(In Go 1.9 the limit was 1024.)
+TODO: Anything about CL 59970: "runtime: separate soft and hard heap limits"? +
+@@ -894,6 +883,16 @@ adds a new method that causes it to report inputs with unknown JSON fields as a decoding error. (The default behavior has always been to discard unknown fields.)
+ +
+As a result of fixing a reflect bug,
+Unmarshal
+can no longer decode into fields inside
+embedded pointers to unexported struct types,
+because it cannot initialize the unexported embedded pointer
+to point at fresh storage.
+Unmarshal
now returns an error in this case.
+
-TODO: Reflect fallout. -
-TODO: New reflect CanSet change for pointers to unexported fields.
+In structs, embedded pointers to unexported struct types were
+previously incorrectly reported with an empty PkgPath
+in the corresponding StructField,
+with the result that for those fields,
+and Value.CanSet
+incorrectly returned true and
+and Value.Set
+incorrectly succeeded.
+The underlying metadata has been corrected;
+for those fields,
+CanSet
now correctly returns false
+and Set
now correctly panics.
+This may affect reflection-based unmarshalers
+that could previously unmarshal into such fields
+but no longer can.
+For example, see the encoding/json
notes.
+