aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/go1.6.article91
1 files changed, 91 insertions, 0 deletions
diff --git a/content/go1.6.article b/content/go1.6.article
new file mode 100644
index 0000000..bb8c09c
--- /dev/null
+++ b/content/go1.6.article
@@ -0,0 +1,91 @@
+Go 1.6 is released
+17 Feb 2016
+
+Andrew Gerrand
+adg@golang.org
+
+* Introduction
+
+Today we release [[https://golang.org/doc/go1.6][Go version 1.6]],
+the seventh major stable release of Go.
+You can grab it right now from the [[https://golang.org/dl/][download page]].
+Although [[https://blog.golang.org/go1.5][the release of Go 1.5]] six months ago
+contained dramatic implementation changes,
+this release is more incremental.
+
+The most significant change is support for [[https://http2.github.io/][HTTP/2]]
+in the [[https://golang.org/pkg/net/http/][net/http package]].
+HTTP/2 is a new protocol, a follow-on to HTTP that has already seen
+widespread adoption by browser vendors and major websites.
+In Go 1.6, support for HTTP/2 is [[https://golang.org/doc/go1.6#http2][enabled by default]]
+for both servers and clients when using HTTPS,
+bringing [[https://http2.github.io/faq/][the benefits]] of the new protocol
+to a wide range of Go projects,
+such as the popular [[https://caddyserver.com/download][Caddy web server]].
+
+The template packages have learned some new tricks,
+with support for [[https://golang.org/pkg/text/template/#hdr-Text_and_spaces][trimming spaces around template actions]]
+to produce cleaner template output,
+and the introduction of the [[https://golang.org/pkg/text/template/#hdr-Actions][`{{block}}` action]]
+that can be used to create templates that build on other templates.
+A [[https://github.com/golang/example/tree/master#template-godoc][new template example program]] demonstrates these new features.
+
+Go 1.5 introduced [[https://golang.org/s/go15vendor][experimental support]]
+for a “vendor” directory that was enabled by an environment variable.
+In Go 1.6, the feature is now [[https://golang.org/doc/go1.6#go_command][enabled by default]].
+Source trees that contain a directory named “vendor” that is not used in accordance with the new feature
+will require changes to avoid broken builds (the simplest fix is to rename the directory).
+
+The runtime has added lightweight, best-effort detection of concurrent misuse of maps.
+As always, if one goroutine is writing to a map, no other goroutine should be reading or writing the map concurrently.
+If the runtime detects this condition, it prints a diagnosis and crashes the program.
+The best way to find out more about the problem is to run it under the
+[[https://blog.golang.org/race-detector][race detector]],
+which will more reliably identify the race and give more detail.
+
+The runtime has also changed how it prints program-ending panics.
+It now prints only the stack of the panicking goroutine, rather than all existing goroutines.
+This behavior can be configured using the
+[[https://golang.org/pkg/runtime/#hdr-Environment_Variables][GOTRACEBACK]] environment variable
+or by calling the [[https://golang.org/pkg/runtime/debug/#SetTraceback][debug.SetTraceback]] function.
+
+Users of cgo should be aware of major changes to the rules for sharing pointers between Go and C code.
+The rules are designed to ensure that such C code can coexist with Go's garbage collector
+and are checked during program execution, so code may require changes to avoid crashes.
+See the [[https://golang.org/doc/go1.6#cgo][release notes]] and
+[[https://golang.org/cmd/cgo/#hdr-Passing_pointers][cgo documentation]] for the details.
+
+The compiler, linker, and go command have a new `-msan` flag
+analogous to `-race` and only available on linux/amd64,
+that enables interoperation with the
+[[http://clang.llvm.org/docs/MemorySanitizer.html][Clang MemorySanitizer]].
+This is useful for testing a program containing suspect C or C++ code.
+You might like to try it while testing your cgo code with the new pointer rules.
+
+Performance of Go programs built with Go 1.6 remains similar to those built with Go 1.5.
+Garbage-collection pauses are even lower than with Go 1.5,
+but this is particularly noticeable for programs using large amounts of memory.
+With regard to the performance of the compiler tool chain,
+build times should be similar to those of Go 1.5.
+
+The algorithm inside [[https://golang.org/pkg/sort/#Sort][sort.Sort]]
+was improved to run about 10% faster,
+but the change may break programs that expect a specific ordering
+of equal but distinguishable elements.
+Such programs should refine their `Less` methods to indicate the desired ordering
+or use [[https://golang.org/pkg/sort/#Stable][sort.Stable]]
+to preserve the input order for equal values.
+
+And, of course, there are many more additions, improvements, and fixes.
+You can find them all in the comprehensive [[https://golang.org/doc/go1.6][release notes]].
+
+To celebrate the release,
+[[https://github.com/golang/go/wiki/Go-1.6-release-party][Go User Groups around the world]]
+are holding release parties on the 17th of February.
+Online, the Go contributors are hosting a question and answer session
+on the [[https://reddit.com/r/golang][golang subreddit]] for the next 24 hours.
+If you have questions about the project, the release, or just Go in general,
+then please join that discussion.
+
+Thanks to everyone that contributed to the release.
+Happy hacking.