diff --git a/_content/doc/go1.1.html b/_content/doc/go1.1.html
deleted file mode 100644
index 14d3935..0000000
--- a/_content/doc/go1.1.html
+++ /dev/null
@@ -1,1097 +0,0 @@
-<!--{
-	"Title": "Go 1.1 Release Notes"
-}-->
-
-<h2 id="introduction">Introduction to Go 1.1</h2>
-
-<p>
-The release of <a href="/doc/go1.html">Go version 1</a> (Go 1 or Go 1.0 for short)
-in March of 2012 introduced a new period
-of stability in the Go language and libraries.
-That stability has helped nourish a growing community of Go users
-and systems around the world.
-Several "point" releases since
-then—1.0.1, 1.0.2, and 1.0.3—have been issued.
-These point releases fixed known bugs but made
-no non-critical changes to the implementation.
-</p>
-
-<p>
-This new release, Go 1.1, keeps the <a href="/doc/go1compat.html">promise
-of compatibility</a> but adds a couple of significant
-(backwards-compatible, of course) language changes, has a long list
-of (again, compatible) library changes, and
-includes major work on the implementation of the compilers,
-libraries, and run-time.
-The focus is on performance.
-Benchmarking is an inexact science at best, but we see significant,
-sometimes dramatic speedups for many of our test programs.
-We trust that many of our users' programs will also see improvements
-just by updating their Go installation and recompiling.
-</p>
-
-<p>
-This document summarizes the changes between Go 1 and Go 1.1.
-Very little if any code will need modification to run with Go 1.1,
-although a couple of rare error cases surface with this release
-and need to be addressed if they arise.
-Details appear below; see the discussion of
-<a href="#int">64-bit ints</a> and <a href="#unicode_literals">Unicode literals</a>
-in particular.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-<a href="/doc/go1compat.html">The Go compatibility document</a> promises
-that programs written to the Go 1 language specification will continue to operate,
-and those promises are maintained.
-In the interest of firming up the specification, though, there are
-details about some error cases that have been clarified.
-There are also some new language features.
-</p>
-
-<h3 id="divzero">Integer division by zero</h3>
-
-<p>
-In Go 1, integer division by a constant zero produced a run-time panic:
-</p>
-
-<pre>
-func f(x int) int {
-	return x/0
-}
-</pre>
-
-<p>
-In Go 1.1, an integer division by constant zero is not a legal program, so it is a compile-time error.
-</p>
-
-<h3 id="unicode_literals">Surrogates in Unicode literals</h3>
-
-<p>
-The definition of string and rune literals has been refined to exclude surrogate halves from the
-set of valid Unicode code points.
-See the <a href="#unicode">Unicode</a> section for more information.
-</p>
-
-<h3 id="method_values">Method values</h3>
-
-<p>
-Go 1.1 now implements
-<a href="/ref/spec#Method_values">method values</a>,
-which are functions that have been bound to a specific receiver value.
-For instance, given a
-<a href="/pkg/bufio/#Writer"><code>Writer</code></a>
-value <code>w</code>,
-the expression
-<code>w.Write</code>,
-a method value, is a function that will always write to <code>w</code>; it is equivalent to
-a function literal closing over <code>w</code>:
-</p>
-
-<pre>
-func (p []byte) (n int, err error) {
-	return w.Write(p)
-}
-</pre>
-
-<p>
-Method values are distinct from method expressions, which generate functions
-from methods of a given type; the method expression <code>(*bufio.Writer).Write</code>
-is equivalent to a function with an extra first argument, a receiver of type
-<code>(*bufio.Writer)</code>:
-</p>
-
-<pre>
-func (w *bufio.Writer, p []byte) (n int, err error) {
-	return w.Write(p)
-}
-</pre>
-
-<p>
-<em>Updating</em>: No existing code is affected; the change is strictly backward-compatible.
-</p>
-
-<h3 id="return">Return requirements</h3>
-
-<p>
-Before Go 1.1, a function that returned a value needed an explicit "return"
-or call to <code>panic</code> at
-the end of the function; this was a simple way to make the programmer
-be explicit about the meaning of the function. But there are many cases
-where a final "return" is clearly unnecessary, such as a function with
-only an infinite "for" loop.
-</p>
-
-<p>
-In Go 1.1, the rule about final "return" statements is more permissive.
-It introduces the concept of a
-<a href="/ref/spec#Terminating_statements"><em>terminating statement</em></a>,
-a statement that is guaranteed to be the last one a function executes.
-Examples include
-"for" loops with no condition and "if-else"
-statements in which each half ends in a "return".
-If the final statement of a function can be shown <em>syntactically</em> to
-be a terminating statement, no final "return" statement is needed.
-</p>
-
-<p>
-Note that the rule is purely syntactic: it pays no attention to the values in the
-code and therefore requires no complex analysis.
-</p>
-
-<p>
-<em>Updating</em>: The change is backward-compatible, but existing code
-with superfluous "return" statements and calls to <code>panic</code> may
-be simplified manually.
-Such code can be identified by <code>go vet</code>.
-</p>
-
-<h2 id="impl">Changes to the implementations and tools</h2>
-
-<h3 id="gccgo">Status of gccgo</h3>
-
-<p>
-The GCC release schedule does not coincide with the Go release schedule, so some skew is inevitable in
-<code>gccgo</code>'s releases.
-The 4.8.0 version of GCC shipped in March, 2013 and includes a nearly-Go 1.1 version of <code>gccgo</code>.
-Its library is a little behind the release, but the biggest difference is that method values are not implemented.
-Sometime around July 2013, we expect 4.8.2 of GCC to ship with a <code>gccgo</code>
-providing a complete Go 1.1 implementation.
-</p>
-
-<h3 id="gc_flag">Command-line flag parsing</h3>
-
-<p>
-In the gc toolchain, the compilers and linkers now use the
-same command-line flag parsing rules as the Go flag package, a departure
-from the traditional Unix flag parsing. This may affect scripts that invoke
-the tool directly.
-For example,
-<code>go tool 6c -Fw -Dfoo</code> must now be written
-<code>go tool 6c -F -w -D foo</code>.
-</p>
-
-<h3 id="int">Size of int on 64-bit platforms</h3>
-
-<p>
-The language allows the implementation to choose whether the <code>int</code> type and
-<code>uint</code> types are 32 or 64 bits. Previous Go implementations made <code>int</code>
-and <code>uint</code> 32 bits on all systems. Both the gc and gccgo implementations
-now make
-<code>int</code> and <code>uint</code> 64 bits on 64-bit platforms such as AMD64/x86-64.
-Among other things, this enables the allocation of slices with
-more than 2 billion elements on 64-bit platforms.
-</p>
-
-<p>
-<em>Updating</em>:
-Most programs will be unaffected by this change.
-Because Go does not allow implicit conversions between distinct
-<a href="/ref/spec#Numeric_types">numeric types</a>,
-no programs will stop compiling due to this change.
-However, programs that contain implicit assumptions
-that <code>int</code> is only 32 bits may change behavior.
-For example, this code prints a positive number on 64-bit systems and
-a negative one on 32-bit systems:
-</p>
-
-<pre>
-x := ^uint32(0) // x is 0xffffffff
-i := int(x)     // i is -1 on 32-bit systems, 0xffffffff on 64-bit
-fmt.Println(i)
-</pre>
-
-<p>Portable code intending 32-bit sign extension (yielding <code>-1</code> on all systems)
-would instead say:
-</p>
-
-<pre>
-i := int(int32(x))
-</pre>
-
-<h3 id="heap">Heap size on 64-bit architectures</h3>
-
-<p>
-On 64-bit architectures, the maximum heap size has been enlarged substantially,
-from a few gigabytes to several tens of gigabytes.
-(The exact details depend on the system and may change.)
-</p>
-
-<p>
-On 32-bit architectures, the heap size has not changed.
-</p>
-
-<p>
-<em>Updating</em>:
-This change should have no effect on existing programs beyond allowing them
-to run with larger heaps.
-</p>
-
-<h3 id="unicode">Unicode</h3>
-
-<p>
-To make it possible to represent code points greater than 65535 in UTF-16,
-Unicode defines <em>surrogate halves</em>,
-a range of code points to be used only in the assembly of large values, and only in UTF-16.
-The code points in that surrogate range are illegal for any other purpose.
-In Go 1.1, this constraint is honored by the compiler, libraries, and run-time:
-a surrogate half is illegal as a rune value, when encoded as UTF-8, or when
-encoded in isolation as UTF-16.
-When encountered, for example in converting from a rune to UTF-8, it is
-treated as an encoding error and will yield the replacement rune,
-<a href="/pkg/unicode/utf8/#RuneError"><code>utf8.RuneError</code></a>,
-U+FFFD.
-</p>
-
-<p>
-This program,
-</p>
-
-<pre>
-import "fmt"
-
-func main() {
-    fmt.Printf("%+q\n", string(0xD800))
-}
-</pre>
-
-<p>
-printed <code>"\ud800"</code> in Go 1.0, but prints <code>"\ufffd"</code> in Go 1.1.
-</p>
-
-<p>
-Surrogate-half Unicode values are now illegal in rune and string constants, so constants such as
-<code>'\ud800'</code> and <code>"\ud800"</code> are now rejected by the compilers.
-When written explicitly as UTF-8 encoded bytes,
-such strings can still be created, as in <code>"\xed\xa0\x80"</code>.
-However, when such a string is decoded as a sequence of runes, as in a range loop, it will yield only <code>utf8.RuneError</code>
-values.
-</p>
-
-<p>
-The Unicode byte order mark U+FEFF, encoded in UTF-8, is now permitted as the first
-character of a Go source file.
-Even though its appearance in the byte-order-free UTF-8 encoding is clearly unnecessary,
-some editors add the mark as a kind of "magic number" identifying a UTF-8 encoded file.
-</p>
-
-<p>
-<em>Updating</em>:
-Most programs will be unaffected by the surrogate change.
-Programs that depend on the old behavior should be modified to avoid the issue.
-The byte-order-mark change is strictly backward-compatible.
-</p>
-
-<h3 id="race">Race detector</h3>
-
-<p>
-A major addition to the tools is a <em>race detector</em>, a way to
-find bugs in programs caused by concurrent access of the same
-variable, where at least one of the accesses is a write.
-This new facility is built into the <code>go</code> tool.
-For now, it is only available on Linux, Mac OS X, and Windows systems with
-64-bit x86 processors.
-To enable it, set the <code>-race</code> flag when building or testing your program
-(for instance, <code>go test -race</code>).
-The race detector is documented in <a href="/doc/articles/race_detector.html">a separate article</a>.
-</p>
-
-<h3 id="gc_asm">The gc assemblers</h3>
-
-<p>
-Due to the change of the <a href="#int"><code>int</code></a> to 64 bits and
-a new internal <a href="/s/go11func">representation of functions</a>,
-the arrangement of function arguments on the stack has changed in the gc toolchain.
-Functions written in assembly will need to be revised at least
-to adjust frame pointer offsets.
-</p>
-
-<p>
-<em>Updating</em>:
-The <code>go vet</code> command now checks that functions implemented in assembly
-match the Go function prototypes they implement.
-</p>
-
-<h3 id="gocmd">Changes to the go command</h3>
-
-<p>
-The <a href="/cmd/go/"><code>go</code></a> command has acquired several
-changes intended to improve the experience for new Go users.
-</p>
-
-<p>
-First, when compiling, testing, or running Go code, the <code>go</code> command will now give more detailed error messages,
-including a list of paths searched, when a package cannot be located.
-</p>
-
-<pre>
-$ go build foo/quxx
-can't load package: package foo/quxx: cannot find package "foo/quxx" in any of:
-        /home/you/go/src/pkg/foo/quxx (from $GOROOT)
-        /home/you/src/foo/quxx (from $GOPATH)
-</pre>
-
-<p>
-Second, the <code>go get</code> command no longer allows <code>$GOROOT</code>
-as the default destination when downloading package source.
-To use the <code>go get</code>
-command, a <a href="/doc/code.html#GOPATH">valid <code>$GOPATH</code></a> is now required.
-</p>
-
-<pre>
-$ GOPATH= go get code.google.com/p/foo/quxx
-package code.google.com/p/foo/quxx: cannot download, $GOPATH not set. For more details see: go help gopath
-</pre>
-
-<p>
-Finally, as a result of the previous change, the <code>go get</code> command will also fail
-when <code>$GOPATH</code> and <code>$GOROOT</code> are set to the same value.
-</p>
-
-<pre>
-$ GOPATH=$GOROOT go get code.google.com/p/foo/quxx
-warning: GOPATH set to GOROOT (/home/you/go) has no effect
-package code.google.com/p/foo/quxx: cannot download, $GOPATH must not be set to $GOROOT. For more details see: go help gopath
-</pre>
-
-<h3 id="gotest">Changes to the go test command</h3>
-
-<p>
-The <a href="/cmd/go/#hdr-Test_packages"><code>go test</code></a>
-command no longer deletes the binary when run with profiling enabled,
-to make it easier to analyze the profile.
-The implementation sets the <code>-c</code> flag automatically, so after running,
-</p>
-
-<pre>
-$ go test -cpuprofile cpuprof.out mypackage
-</pre>
-
-<p>
-the file <code>mypackage.test</code> will be left in the directory where <code>go test</code> was run.
-</p>
-
-<p>
-The <a href="/cmd/go/#hdr-Test_packages"><code>go test</code></a>
-command can now generate profiling information
-that reports where goroutines are blocked, that is,
-where they tend to stall waiting for an event such as a channel communication.
-The information is presented as a
-<em>blocking profile</em>
-enabled with the
-<code>-blockprofile</code>
-option of
-<code>go test</code>.
-Run <code>go help test</code> for more information.
-</p>
-
-<h3 id="gofix">Changes to the go fix command</h3>
-
-<p>
-The <a href="/cmd/fix/"><code>fix</code></a> command, usually run as
-<code>go fix</code>, no longer applies fixes to update code from
-before Go 1 to use Go 1 APIs.
-To update pre-Go 1 code to Go 1.1, use a Go 1.0 toolchain
-to convert the code to Go 1.0 first.
-</p>
-
-<h3 id="tags">Build constraints</h3>
-
-<p>
-The "<code>go1.1</code>" tag has been added to the list of default
-<a href="/pkg/go/build/#hdr-Build_Constraints">build constraints</a>.
-This permits packages to take advantage of the new features in Go 1.1 while
-remaining compatible with earlier versions of Go.
-</p>
-
-<p>
-To build a file only with Go 1.1 and above, add this build constraint:
-</p>
-
-<pre>
-// +build go1.1
-</pre>
-
-<p>
-To build a file only with Go 1.0.x, use the converse constraint:
-</p>
-
-<pre>
-// +build !go1.1
-</pre>
-
-<h3 id="platforms">Additional platforms</h3>
-
-<p>
-The Go 1.1 toolchain adds experimental support for <code>freebsd/arm</code>,
-<code>netbsd/386</code>, <code>netbsd/amd64</code>, <code>netbsd/arm</code>,
-<code>openbsd/386</code> and <code>openbsd/amd64</code> platforms.
-</p>
-
-<p>
-An ARMv6 or later processor is required for <code>freebsd/arm</code> or
-<code>netbsd/arm</code>.
-</p>
-
-<p>
-Go 1.1 adds experimental support for <code>cgo</code> on <code>linux/arm</code>.
-</p>
-
-<h3 id="crosscompile">Cross compilation</h3>
-
-<p>
-When cross-compiling, the <code>go</code> tool will disable <code>cgo</code>
-support by default.
-</p>
-
-<p>
-To explicitly enable <code>cgo</code>, set <code>CGO_ENABLED=1</code>.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-The performance of code compiled with the Go 1.1 gc tool suite should be noticeably
-better for most Go programs.
-Typical improvements relative to Go 1.0 seem to be about 30%-40%, sometimes
-much more, but occasionally less or even non-existent.
-There are too many small performance-driven tweaks through the tools and libraries
-to list them all here, but the following major changes are worth noting:
-</p>
-
-<ul>
-<li>The gc compilers generate better code in many cases, most noticeably for
-floating point on the 32-bit Intel architecture.</li>
-<li>The gc compilers do more in-lining, including for some operations
-in the run-time such as <a href="/pkg/builtin/#append"><code>append</code></a>
-and interface conversions.</li>
-<li>There is a new implementation of Go maps with significant reduction in
-memory footprint and CPU time.</li>
-<li>The garbage collector has been made more parallel, which can reduce
-latencies for programs running on multiple CPUs.</li>
-<li>The garbage collector is also more precise, which costs a small amount of
-CPU time but can reduce the size of the heap significantly, especially
-on 32-bit architectures.</li>
-<li>Due to tighter coupling of the run-time and network libraries, fewer
-context switches are required on network operations.</li>
-</ul>
-
-<h2 id="library">Changes to the standard library</h2>
-
-<h3 id="bufio_scanner">bufio.Scanner</h3>
-
-<p>
-The various routines to scan textual input in the
-<a href="/pkg/bufio/"><code>bufio</code></a>
-package,
-<a href="/pkg/bufio/#Reader.ReadBytes"><code>ReadBytes</code></a>,
-<a href="/pkg/bufio/#Reader.ReadString"><code>ReadString</code></a>
-and particularly
-<a href="/pkg/bufio/#Reader.ReadLine"><code>ReadLine</code></a>,
-are needlessly complex to use for simple purposes.
-In Go 1.1, a new type,
-<a href="/pkg/bufio/#Scanner"><code>Scanner</code></a>,
-has been added to make it easier to do simple tasks such as
-read the input as a sequence of lines or space-delimited words.
-It simplifies the problem by terminating the scan on problematic
-input such as pathologically long lines, and having a simple
-default: line-oriented input, with each line stripped of its terminator.
-Here is code to reproduce the input a line at a time:
-</p>
-
-<pre>
-scanner := bufio.NewScanner(os.Stdin)
-for scanner.Scan() {
-    fmt.Println(scanner.Text()) // Println will add back the final '\n'
-}
-if err := scanner.Err(); err != nil {
-    fmt.Fprintln(os.Stderr, "reading standard input:", err)
-}
-</pre>
-
-<p>
-Scanning behavior can be adjusted through a function to control subdividing the input
-(see the documentation for <a href="/pkg/bufio/#SplitFunc"><code>SplitFunc</code></a>),
-but for tough problems or the need to continue past errors, the older interface
-may still be required.
-</p>
-
-<h3 id="net">net</h3>
-
-<p>
-The protocol-specific resolvers in the <a href="/pkg/net/"><code>net</code></a> package were formerly
-lax about the network name passed in.
-Although the documentation was clear
-that the only valid networks for
-<a href="/pkg/net/#ResolveTCPAddr"><code>ResolveTCPAddr</code></a>
-are <code>"tcp"</code>,
-<code>"tcp4"</code>, and <code>"tcp6"</code>, the Go 1.0 implementation silently accepted any string.
-The Go 1.1 implementation returns an error if the network is not one of those strings.
-The same is true of the other protocol-specific resolvers <a href="/pkg/net/#ResolveIPAddr"><code>ResolveIPAddr</code></a>,
-<a href="/pkg/net/#ResolveUDPAddr"><code>ResolveUDPAddr</code></a>, and
-<a href="/pkg/net/#ResolveUnixAddr"><code>ResolveUnixAddr</code></a>.
-</p>
-
-<p>
-The previous implementation of
-<a href="/pkg/net/#ListenUnixgram"><code>ListenUnixgram</code></a>
-returned a
-<a href="/pkg/net/#UDPConn"><code>UDPConn</code></a> as
-a representation of the connection endpoint.
-The Go 1.1 implementation instead returns a
-<a href="/pkg/net/#UnixConn"><code>UnixConn</code></a>
-to allow reading and writing
-with its
-<a href="/pkg/net/#UnixConn.ReadFrom"><code>ReadFrom</code></a>
-and
-<a href="/pkg/net/#UnixConn.WriteTo"><code>WriteTo</code></a>
-methods.
-</p>
-
-<p>
-The data structures
-<a href="/pkg/net/#IPAddr"><code>IPAddr</code></a>,
-<a href="/pkg/net/#TCPAddr"><code>TCPAddr</code></a>, and
-<a href="/pkg/net/#UDPAddr"><code>UDPAddr</code></a>
-add a new string field called <code>Zone</code>.
-Code using untagged composite literals (e.g. <code>net.TCPAddr{ip, port}</code>)
-instead of tagged literals (<code>net.TCPAddr{IP: ip, Port: port}</code>)
-will break due to the new field.
-The Go 1 compatibility rules allow this change: client code must use tagged literals to avoid such breakages.
-</p>
-
-<p>
-<em>Updating</em>:
-To correct breakage caused by the new struct field,
-<code>go fix</code> will rewrite code to add tags for these types.
-More generally, <code>go vet</code> will identify composite literals that
-should be revised to use field tags.
-</p>
-
-<h3 id="reflect">reflect</h3>
-
-<p>
-The <a href="/pkg/reflect/"><code>reflect</code></a> package has several significant additions.
-</p>
-
-<p>
-It is now possible to run a "select" statement using
-the <code>reflect</code> package; see the description of
-<a href="/pkg/reflect/#Select"><code>Select</code></a>
-and
-<a href="/pkg/reflect/#SelectCase"><code>SelectCase</code></a>
-for details.
-</p>
-
-<p>
-The new method
-<a href="/pkg/reflect/#Value.Convert"><code>Value.Convert</code></a>
-(or
-<a href="/pkg/reflect/#Type"><code>Type.ConvertibleTo</code></a>)
-provides functionality to execute a Go conversion or type assertion operation
-on a
-<a href="/pkg/reflect/#Value"><code>Value</code></a>
-(or test for its possibility).
-</p>
-
-<p>
-The new function
-<a href="/pkg/reflect/#MakeFunc"><code>MakeFunc</code></a>
-creates a wrapper function to make it easier to call a function with existing
-<a href="/pkg/reflect/#Value"><code>Values</code></a>,
-doing the standard Go conversions among the arguments, for instance
-to pass an actual <code>int</code> to a formal <code>interface{}</code>.
-</p>
-
-<p>
-Finally, the new functions
-<a href="/pkg/reflect/#ChanOf"><code>ChanOf</code></a>,
-<a href="/pkg/reflect/#MapOf"><code>MapOf</code></a>
-and
-<a href="/pkg/reflect/#SliceOf"><code>SliceOf</code></a>
-construct new
-<a href="/pkg/reflect/#Type"><code>Types</code></a>
-from existing types, for example to construct the type <code>[]T</code> given
-only <code>T</code>.
-</p>
-
-
-<h3 id="time">time</h3>
-<p>
-On FreeBSD, Linux, NetBSD, OS X and OpenBSD, previous versions of the
-<a href="/pkg/time/"><code>time</code></a> package
-returned times with microsecond precision.
-The Go 1.1 implementation on these
-systems now returns times with nanosecond precision.
-Programs that write to an external format with microsecond precision
-and read it back, expecting to recover the original value, will be affected
-by the loss of precision.
-There are two new methods of <a href="/pkg/time/#Time"><code>Time</code></a>,
-<a href="/pkg/time/#Time.Round"><code>Round</code></a>
-and
-<a href="/pkg/time/#Time.Truncate"><code>Truncate</code></a>,
-that can be used to remove precision from a time before passing it to
-external storage.
-</p>
-
-<p>
-The new method
-<a href="/pkg/time/#Time.YearDay"><code>YearDay</code></a>
-returns the one-indexed integral day number of the year specified by the time value.
-</p>
-
-<p>
-The
-<a href="/pkg/time/#Timer"><code>Timer</code></a>
-type has a new method
-<a href="/pkg/time/#Timer.Reset"><code>Reset</code></a>
-that modifies the timer to expire after a specified duration.
-</p>
-
-<p>
-Finally, the new function
-<a href="/pkg/time/#ParseInLocation"><code>ParseInLocation</code></a>
-is like the existing
-<a href="/pkg/time/#Parse"><code>Parse</code></a>
-but parses the time in the context of a location (time zone), ignoring
-time zone information in the parsed string.
-This function addresses a common source of confusion in the time API.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that needs to read and write times using an external format with
-lower precision should be modified to use the new methods.
-</p>
-
-<h3 id="exp_old">Exp and old subtrees moved to go.exp and go.text subrepositories</h3>
-
-<p>
-To make it easier for binary distributions to access them if desired, the <code>exp</code>
-and <code>old</code> source subtrees, which are not included in binary distributions,
-have been moved to the new <code>go.exp</code> subrepository at
-<code>code.google.com/p/go.exp</code>. To access the <code>ssa</code> package,
-for example, run
-</p>
-
-<pre>
-$ go get code.google.com/p/go.exp/ssa
-</pre>
-
-<p>
-and then in Go source,
-</p>
-
-<pre>
-import "code.google.com/p/go.exp/ssa"
-</pre>
-
-<p>
-The old package <code>exp/norm</code> has also been moved, but to a new repository
-<code>go.text</code>, where the Unicode APIs and other text-related packages will
-be developed.
-</p>
-
-<h3 id="new_packages">New packages</h3>
-
-<p>
-There are three new packages.
-</p>
-
-<ul>
-<li>
-The <a href="/pkg/go/format/"><code>go/format</code></a> package provides
-a convenient way for a program to access the formatting capabilities of the
-<a href="/cmd/go/#hdr-Run_gofmt_on_package_sources"><code>go fmt</code></a> command.
-It has two functions,
-<a href="/pkg/go/format/#Node"><code>Node</code></a> to format a Go parser
-<a href="/pkg/go/ast/#Node"><code>Node</code></a>,
-and
-<a href="/pkg/go/format/#Source"><code>Source</code></a>
-to reformat arbitrary Go source code into the standard format as provided by the
-<a href="/cmd/go/#hdr-Run_gofmt_on_package_sources"><code>go fmt</code></a> command.
-</li>
-
-<li>
-The <a href="/pkg/net/http/cookiejar/"><code>net/http/cookiejar</code></a> package provides the basics for managing HTTP cookies.
-</li>
-
-<li>
-The <a href="/pkg/runtime/race/"><code>runtime/race</code></a> package provides low-level facilities for data race detection.
-It is internal to the race detector and does not otherwise export any user-visible functionality.
-</li>
-</ul>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-The following list summarizes a number of minor changes to the library, mostly additions.
-See the relevant package documentation for more information about each change.
-</p>
-
-<ul>
-<li>
-The <a href="/pkg/bytes/"><code>bytes</code></a> package has two new functions,
-<a href="/pkg/bytes/#TrimPrefix"><code>TrimPrefix</code></a>
-and
-<a href="/pkg/bytes/#TrimSuffix"><code>TrimSuffix</code></a>,
-with self-evident properties.
-Also, the <a href="/pkg/bytes/#Buffer"><code>Buffer</code></a> type
-has a new method
-<a href="/pkg/bytes/#Buffer.Grow"><code>Grow</code></a> that
-provides some control over memory allocation inside the buffer.
-Finally, the
-<a href="/pkg/bytes/#Reader"><code>Reader</code></a> type now has a
-<a href="/pkg/strings/#Reader.WriteTo"><code>WriteTo</code></a> method
-so it implements the
-<a href="/pkg/io/#WriterTo"><code>io.WriterTo</code></a> interface.
-</li>
-
-<li>
-The <a href="/pkg/compress/gzip/"><code>compress/gzip</code></a> package has
-a new <a href="/pkg/compress/gzip/#Writer.Flush"><code>Flush</code></a>
-method for its
-<a href="/pkg/compress/gzip/#Writer"><code>Writer</code></a>
-type that flushes its underlying <code>flate.Writer</code>.
-</li>
-
-<li>
-The <a href="/pkg/crypto/hmac/"><code>crypto/hmac</code></a> package has a new function,
-<a href="/pkg/crypto/hmac/#Equal"><code>Equal</code></a>, to compare two MACs.
-</li>
-
-<li>
-The <a href="/pkg/crypto/x509/"><code>crypto/x509</code></a> package
-now supports PEM blocks (see
-<a href="/pkg/crypto/x509/#DecryptPEMBlock"><code>DecryptPEMBlock</code></a> for instance),
-and a new function
-<a href="/pkg/crypto/x509/#ParseECPrivateKey"><code>ParseECPrivateKey</code></a> to parse elliptic curve private keys.
-</li>
-
-<li>
-The <a href="/pkg/database/sql/"><code>database/sql</code></a> package
-has a new
-<a href="/pkg/database/sql/#DB.Ping"><code>Ping</code></a>
-method for its
-<a href="/pkg/database/sql/#DB"><code>DB</code></a>
-type that tests the health of the connection.
-</li>
-
-<li>
-The <a href="/pkg/database/sql/driver/"><code>database/sql/driver</code></a> package
-has a new
-<a href="/pkg/database/sql/driver/#Queryer"><code>Queryer</code></a>
-interface that a
-<a href="/pkg/database/sql/driver/#Conn"><code>Conn</code></a>
-may implement to improve performance.
-</li>
-
-<li>
-The <a href="/pkg/encoding/json/"><code>encoding/json</code></a> package's
-<a href="/pkg/encoding/json/#Decoder"><code>Decoder</code></a>
-has a new method
-<a href="/pkg/encoding/json/#Decoder.Buffered"><code>Buffered</code></a>
-to provide access to the remaining data in its buffer,
-as well as a new method
-<a href="/pkg/encoding/json/#Decoder.UseNumber"><code>UseNumber</code></a>
-to unmarshal a value into the new type
-<a href="/pkg/encoding/json/#Number"><code>Number</code></a>,
-a string, rather than a float64.
-</li>
-
-<li>
-The <a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> package
-has a new function,
-<a href="/pkg/encoding/xml/#EscapeText"><code>EscapeText</code></a>,
-which writes escaped XML output,
-and a method on
-<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a>,
-<a href="/pkg/encoding/xml/#Encoder.Indent"><code>Indent</code></a>,
-to specify indented output.
-</li>
-
-<li>
-In the <a href="/pkg/go/ast/"><code>go/ast</code></a> package, a
-new type <a href="/pkg/go/ast/#CommentMap"><code>CommentMap</code></a>
-and associated methods makes it easier to extract and process comments in Go programs.
-</li>
-
-<li>
-In the <a href="/pkg/go/doc/"><code>go/doc</code></a> package,
-the parser now keeps better track of stylized annotations such as <code>TODO(joe)</code>
-throughout the code,
-information that the <a href="/cmd/godoc/"><code>godoc</code></a>
-command can filter or present according to the value of the <code>-notes</code> flag.
-</li>
-
-<li>
-The undocumented and only partially implemented "noescape" feature of the
-<a href="/pkg/html/template/"><code>html/template</code></a>
-package has been removed; programs that depend on it will break.
-</li>
-
-<li>
-The <a href="/pkg/image/jpeg/"><code>image/jpeg</code></a> package now
-reads progressive JPEG files and handles a few more subsampling configurations.
-</li>
-
-<li>
-The <a href="/pkg/io/"><code>io</code></a> package now exports the
-<a href="/pkg/io/#ByteWriter"><code>io.ByteWriter</code></a> interface to capture the common
-functionality of writing a byte at a time.
-It also exports a new error, <a href="/pkg/io/#ErrNoProgress"><code>ErrNoProgress</code></a>,
-used to indicate a <code>Read</code> implementation is looping without delivering data.
-</li>
-
-<li>
-The <a href="/pkg/log/syslog/"><code>log/syslog</code></a> package now provides better support
-for OS-specific logging features.
-</li>
-
-<li>
-The <a href="/pkg/math/big/"><code>math/big</code></a> package's
-<a href="/pkg/math/big/#Int"><code>Int</code></a> type
-now has methods
-<a href="/pkg/math/big/#Int.MarshalJSON"><code>MarshalJSON</code></a>
-and
-<a href="/pkg/math/big/#Int.UnmarshalJSON"><code>UnmarshalJSON</code></a>
-to convert to and from a JSON representation.
-Also,
-<a href="/pkg/math/big/#Int"><code>Int</code></a>
-can now convert directly to and from a <code>uint64</code> using
-<a href="/pkg/math/big/#Int.Uint64"><code>Uint64</code></a>
-and
-<a href="/pkg/math/big/#Int.SetUint64"><code>SetUint64</code></a>,
-while
-<a href="/pkg/math/big/#Rat"><code>Rat</code></a>
-can do the same with <code>float64</code> using
-<a href="/pkg/math/big/#Rat.Float64"><code>Float64</code></a>
-and
-<a href="/pkg/math/big/#Rat.SetFloat64"><code>SetFloat64</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/mime/multipart/"><code>mime/multipart</code></a> package
-has a new method for its
-<a href="/pkg/mime/multipart/#Writer"><code>Writer</code></a>,
-<a href="/pkg/mime/multipart/#Writer.SetBoundary"><code>SetBoundary</code></a>,
-to define the boundary separator used to package the output.
-The <a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a> also now
-transparently decodes any <code>quoted-printable</code> parts and removes
-the <code>Content-Transfer-Encoding</code> header when doing so.
-</li>
-
-<li>
-The
-<a href="/pkg/net/"><code>net</code></a> package's
-<a href="/pkg/net/#ListenUnixgram"><code>ListenUnixgram</code></a>
-function has changed return types: it now returns a
-<a href="/pkg/net/#UnixConn"><code>UnixConn</code></a>
-rather than a
-<a href="/pkg/net/#UDPConn"><code>UDPConn</code></a>, which was
-clearly a mistake in Go 1.0.
-Since this API change fixes a bug, it is permitted by the Go 1 compatibility rules.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package includes a new type,
-<a href="/pkg/net/#Dialer"><code>Dialer</code></a>, to supply options to
-<a href="/pkg/net/#Dialer.Dial"><code>Dial</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package adds support for
-link-local IPv6 addresses with zone qualifiers, such as <code>fe80::1%lo0</code>.
-The address structures <a href="/pkg/net/#IPAddr"><code>IPAddr</code></a>,
-<a href="/pkg/net/#UDPAddr"><code>UDPAddr</code></a>, and
-<a href="/pkg/net/#TCPAddr"><code>TCPAddr</code></a>
-record the zone in a new field, and functions that expect string forms of these addresses, such as
-<a href="/pkg/net/#Dial"><code>Dial</code></a>,
-<a href="/pkg/net/#ResolveIPAddr"><code>ResolveIPAddr</code></a>,
-<a href="/pkg/net/#ResolveUDPAddr"><code>ResolveUDPAddr</code></a>, and
-<a href="/pkg/net/#ResolveTCPAddr"><code>ResolveTCPAddr</code></a>,
-now accept the zone-qualified form.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package adds
-<a href="/pkg/net/#LookupNS"><code>LookupNS</code></a> to its suite of resolving functions.
-<code>LookupNS</code> returns the <a href="/pkg/net/#NS">NS records</a> for a host name.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package adds protocol-specific
-packet reading and writing methods to
-<a href="/pkg/net/#IPConn"><code>IPConn</code></a>
-(<a href="/pkg/net/#IPConn.ReadMsgIP"><code>ReadMsgIP</code></a>
-and <a href="/pkg/net/#IPConn.WriteMsgIP"><code>WriteMsgIP</code></a>) and
-<a href="/pkg/net/#UDPConn"><code>UDPConn</code></a>
-(<a href="/pkg/net/#UDPConn.ReadMsgUDP"><code>ReadMsgUDP</code></a> and
-<a href="/pkg/net/#UDPConn.WriteMsgUDP"><code>WriteMsgUDP</code></a>).
-These are specialized versions of <a href="/pkg/net/#PacketConn"><code>PacketConn</code></a>'s
-<code>ReadFrom</code> and <code>WriteTo</code> methods that provide access to out-of-band data associated
-with the packets.
- </li>
-
- <li>
-The <a href="/pkg/net/"><code>net</code></a> package adds methods to
-<a href="/pkg/net/#UnixConn"><code>UnixConn</code></a> to allow closing half of the connection
-(<a href="/pkg/net/#UnixConn.CloseRead"><code>CloseRead</code></a> and
-<a href="/pkg/net/#UnixConn.CloseWrite"><code>CloseWrite</code></a>),
-matching the existing methods of <a href="/pkg/net/#TCPConn"><code>TCPConn</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package includes several new additions.
-<a href="/pkg/net/http/#ParseTime"><code>ParseTime</code></a> parses a time string, trying
-several common HTTP time formats.
-The <a href="/pkg/net/http/#Request.PostFormValue"><code>PostFormValue</code></a> method of
-<a href="/pkg/net/http/#Request"><code>Request</code></a> is like
-<a href="/pkg/net/http/#Request.FormValue"><code>FormValue</code></a> but ignores URL parameters.
-The <a href="/pkg/net/http/#CloseNotifier"><code>CloseNotifier</code></a> interface provides a mechanism
-for a server handler to discover when a client has disconnected.
-The <code>ServeMux</code> type now has a
-<a href="/pkg/net/http/#ServeMux.Handler"><code>Handler</code></a> method to access a path's
-<code>Handler</code> without executing it.
-The <code>Transport</code> can now cancel an in-flight request with
-<a href="/pkg/net/http/#Transport.CancelRequest"><code>CancelRequest</code></a>.
-Finally, the Transport is now more aggressive at closing TCP connections when
-a <a href="/pkg/net/http/#Response"><code>Response.Body</code></a> is closed before
-being fully consumed.
-</li>
-
-<li>
-The <a href="/pkg/net/mail/"><code>net/mail</code></a> package has two new functions,
-<a href="/pkg/net/mail/#ParseAddress"><code>ParseAddress</code></a> and
-<a href="/pkg/net/mail/#ParseAddressList"><code>ParseAddressList</code></a>,
-to parse RFC 5322-formatted mail addresses into
-<a href="/pkg/net/mail/#Address"><code>Address</code></a> structures.
-</li>
-
-<li>
-The <a href="/pkg/net/smtp/"><code>net/smtp</code></a> package's
-<a href="/pkg/net/smtp/#Client"><code>Client</code></a> type has a new method,
-<a href="/pkg/net/smtp/#Client.Hello"><code>Hello</code></a>,
-which transmits a <code>HELO</code> or <code>EHLO</code> message to the server.
-</li>
-
-<li>
-The <a href="/pkg/net/textproto/"><code>net/textproto</code></a> package
-has two new functions,
-<a href="/pkg/net/textproto/#TrimBytes"><code>TrimBytes</code></a> and
-<a href="/pkg/net/textproto/#TrimString"><code>TrimString</code></a>,
-which do ASCII-only trimming of leading and trailing spaces.
-</li>
-
-<li>
-The new method <a href="/pkg/os/#FileMode.IsRegular"><code>os.FileMode.IsRegular</code></a> makes it easy to ask if a file is a plain file.
-</li>
-
-<li>
-The <a href="/pkg/os/signal/"><code>os/signal</code></a> package has a new function,
-<a href="/pkg/os/signal/#Stop"><code>Stop</code></a>, which stops the package delivering
-any further signals to the channel.
-</li>
-
-<li>
-The <a href="/pkg/regexp/"><code>regexp</code></a> package
-now supports Unix-original leftmost-longest matches through the
-<a href="/pkg/regexp/#Regexp.Longest"><code>Regexp.Longest</code></a>
-method, while
-<a href="/pkg/regexp/#Regexp.Split"><code>Regexp.Split</code></a> slices
-strings into pieces based on separators defined by the regular expression.
-</li>
-
-<li>
-The <a href="/pkg/runtime/debug/"><code>runtime/debug</code></a> package
-has three new functions regarding memory usage.
-The <a href="/pkg/runtime/debug/#FreeOSMemory"><code>FreeOSMemory</code></a>
-function triggers a run of the garbage collector and then attempts to return unused
-memory to the operating system;
-the <a href="/pkg/runtime/debug/#ReadGCStats"><code>ReadGCStats</code></a>
-function retrieves statistics about the collector; and
-<a href="/pkg/runtime/debug/#SetGCPercent"><code>SetGCPercent</code></a>
-provides a programmatic way to control how often the collector runs,
-including disabling it altogether.
-</li>
-
-<li>
-The <a href="/pkg/sort/"><code>sort</code></a> package has a new function,
-<a href="/pkg/sort/#Reverse"><code>Reverse</code></a>.
-Wrapping the argument of a call to
-<a href="/pkg/sort/#Sort"><code>sort.Sort</code></a>
-with a call to <code>Reverse</code> causes the sort order to be reversed.
-</li>
-
-<li>
-The <a href="/pkg/strings/"><code>strings</code></a> package has two new functions,
-<a href="/pkg/strings/#TrimPrefix"><code>TrimPrefix</code></a>
-and
-<a href="/pkg/strings/#TrimSuffix"><code>TrimSuffix</code></a>
-with self-evident properties, and the new method
-<a href="/pkg/strings/#Reader.WriteTo"><code>Reader.WriteTo</code></a> so the
-<a href="/pkg/strings/#Reader"><code>Reader</code></a>
-type now implements the
-<a href="/pkg/io/#WriterTo"><code>io.WriterTo</code></a> interface.
-</li>
-
-<li>
-The <a href="/pkg/syscall/"><code>syscall</code></a> package's
-<a href="/pkg/syscall/#Fchflags"><code>Fchflags</code></a> function on various BSDs
-(including Darwin) has changed signature.
-It now takes an int as the first parameter instead of a string.
-Since this API change fixes a bug, it is permitted by the Go 1 compatibility rules.
-</li>
-<li>
-The <a href="/pkg/syscall/"><code>syscall</code></a> package also has received many updates
-to make it more inclusive of constants and system calls for each supported operating system.
-</li>
-
-<li>
-The <a href="/pkg/testing/"><code>testing</code></a> package now automates the generation of allocation
-statistics in tests and benchmarks using the new
-<a href="/pkg/testing/#AllocsPerRun"><code>AllocsPerRun</code></a> function. And the
-<a href="/pkg/testing/#B.ReportAllocs"><code>ReportAllocs</code></a>
-method on <a href="/pkg/testing/#B"><code>testing.B</code></a> will enable printing of
-memory allocation statistics for the calling benchmark. It also introduces the
-<a href="/pkg/testing/#BenchmarkResult.AllocsPerOp"><code>AllocsPerOp</code></a> method of
-<a href="/pkg/testing/#BenchmarkResult"><code>BenchmarkResult</code></a>.
-There is also a new
-<a href="/pkg/testing/#Verbose"><code>Verbose</code></a> function to test the state of the <code>-v</code>
-command-line flag,
-and a new
-<a href="/pkg/testing/#B.Skip"><code>Skip</code></a> method of
-<a href="/pkg/testing/#B"><code>testing.B</code></a> and
-<a href="/pkg/testing/#T"><code>testing.T</code></a>
-to simplify skipping an inappropriate test.
-</li>
-
-<li>
-In the <a href="/pkg/text/template/"><code>text/template</code></a>
-and
-<a href="/pkg/html/template/"><code>html/template</code></a> packages,
-templates can now use parentheses to group the elements of pipelines, simplifying the construction of complex pipelines.
-Also, as part of the new parser, the
-<a href="/pkg/text/template/parse/#Node"><code>Node</code></a> interface got two new methods to provide
-better error reporting.
-Although this violates the Go 1 compatibility rules,
-no existing code should be affected because this interface is explicitly intended only to be used
-by the
-<a href="/pkg/text/template/"><code>text/template</code></a>
-and
-<a href="/pkg/html/template/"><code>html/template</code></a>
-packages and there are safeguards to guarantee that.
-</li>
-
-<li>
-The implementation of the <a href="/pkg/unicode/"><code>unicode</code></a> package has been updated to Unicode version 6.2.0.
-</li>
-
-<li>
-In the <a href="/pkg/unicode/utf8/"><code>unicode/utf8</code></a> package,
-the new function <a href="/pkg/unicode/utf8/#ValidRune"><code>ValidRune</code></a> reports whether the rune is a valid Unicode code point.
-To be valid, a rune must be in range and not be a surrogate half.
-</li>
-</ul>
diff --git a/_content/doc/go1.10.html b/_content/doc/go1.10.html
deleted file mode 100644
index 412b240..0000000
--- a/_content/doc/go1.10.html
+++ /dev/null
@@ -1,1446 +0,0 @@
-<!--{
-	"Title": "Go 1.10 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.10</h2>
-
-<p>
-The latest Go release, version 1.10, arrives six months after <a href="go1.9">Go 1.9</a>.
-Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-This release improves <a href="#build">caching of built packages</a>,
-adds <a href="#test">caching of successful test results</a>,
-runs <a href="#test-vet">vet automatically during tests</a>,
-and
-permits <a href="#cgo">passing string values directly between Go and C using cgo</a>.
-A new <a href="#cgo">hard-coded set of safe compiler options</a> may cause
-unexpected <a href="/s/invalidflag"><code>invalid
-flag</code></a> errors in code that built successfully with older
-releases.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-There are no significant changes to the language specification.
-</p>
-
-<p><!-- CL 60230 -->
-A corner case involving shifts of untyped constants has been clarified,
-and as a result the compilers have been updated to allow the index expression
-<code>x[1.0</code>&nbsp;<code>&lt;&lt;</code>&nbsp;<code>s]</code> where <code>s</code> is an unsigned integer;
-the <a href="/pkg/go/types/">go/types</a> package already did.
-</p>
-
-<p><!-- CL 73233 -->
-The grammar for method expressions has been updated to relax the
-syntax to allow any type expression as a receiver;
-this matches what the compilers were already implementing.
-For example, <code>struct{io.Reader}.Read</code> is a valid, if unusual,
-method expression that the compilers already accepted and is
-now permitted by the language grammar.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p>
-There are no new supported operating systems or processor architectures in this release.
-Most of the work has focused on strengthening the support for existing ports,
-in particular <a href="#asm">new instructions in the assembler</a>
-and improvements to the code generated by the compilers.
-</p>
-
-<p id="freebsd">
-As <a href="go1.9#freebsd">announced in the Go 1.9 release notes</a>,
-Go 1.10 now requires FreeBSD 10.3 or later;
-support for FreeBSD 9.3 has been removed.
-</p>
-
-<p id="netbsd">
-Go now runs on NetBSD again but requires the unreleased NetBSD 8.
-Only <code>GOARCH</code> <code>amd64</code> and <code>386</code> have
-been fixed. The <code>arm</code> port is still broken.
-</p>
-
-<p id="mips">
-On 32-bit MIPS systems, the new environment variable settings
-<code>GOMIPS=hardfloat</code> (the default) and
-<code>GOMIPS=softfloat</code> select whether to use
-hardware instructions or software emulation for floating-point computations.
-</p>
-
-<p id="openbsd">
-Go 1.10 is the last release that will run on OpenBSD 6.0.
-Go 1.11 will require OpenBSD 6.2.
-</p>
-
-<p id="darwin">
-Go 1.10 is the last release that will run on OS X 10.8 Mountain Lion or OS X 10.9 Mavericks.
-Go 1.11 will require OS X 10.10 Yosemite or later.
-</p>
-
-<p id="windows">
-Go 1.10 is the last release that will run on Windows XP or Windows Vista.
-Go 1.11 will require Windows 7 or later.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="goroot">Default GOROOT &amp; GOTMPDIR</h3>
-
-<p>
-If the environment variable <code>$GOROOT</code> is unset,
-the go tool previously used the default <code>GOROOT</code>
-set during toolchain compilation.
-Now, before falling back to that default, the go tool attempts to
-deduce <code>GOROOT</code> from its own executable path.
-This allows binary distributions to be unpacked anywhere in the
-file system and then be used without setting <code>GOROOT</code>
-explicitly.
-</p>
-
-<p>
-By default, the go tool creates its temporary files and directories
-in the system temporary directory (for example, <code>$TMPDIR</code> on Unix).
-If the new environment variable <code>$GOTMPDIR</code> is set,
-the go tool will create its temporary files and directories in that directory instead.
-</p>
-
-<h3 id="build">Build &amp; Install</h3>
-
-<p>
-The <code>go</code>&nbsp;<code>build</code> command now detects out-of-date packages
-purely based on the content of source files, specified build flags, and metadata stored in the compiled packages.
-Modification times are no longer consulted or relevant.
-The old advice to add <code>-a</code> to force a rebuild in cases where
-the modification times were misleading for one reason or another
-(for example, changes in build flags) is no longer necessary:
-builds now always detect when packages must be rebuilt.
-(If you observe otherwise, please file a bug.)
-</p>
-
-<p>
-The <code>go</code>&nbsp;<code>build</code> <code>-asmflags</code>, <code>-gcflags</code>, <code>-gccgoflags</code>, and <code>-ldflags</code> options
-now apply by default only to the packages listed directly on the command line.
-For example, <code>go</code> <code>build</code> <code>-gcflags=-m</code> <code>mypkg</code>
-passes the compiler the <code>-m</code> flag when building <code>mypkg</code>
-but not its dependencies.
-The new, more general form <code>-asmflags=pattern=flags</code> (and similarly for the others)
-applies the <code>flags</code> only to the packages matching the pattern.
-For example: <code>go</code> <code>install</code> <code>-ldflags=cmd/gofmt=-X=main.version=1.2.3</code> <code>cmd/...</code>
-installs all the commands matching <code>cmd/...</code> but only applies the <code>-X</code> option
-to the linker flags for <code>cmd/gofmt</code>.
-For more details, see <a href="/cmd/go/#hdr-Compile_packages_and_dependencies"><code>go</code> <code>help</code> <code>build</code></a>.
-</p>
-
-<p>
-The <code>go</code>&nbsp;<code>build</code> command now maintains a cache of
-recently built packages, separate from the installed packages in <code>$GOROOT/pkg</code> or <code>$GOPATH/pkg</code>.
-The effect of the cache should be to speed builds that do not explicitly install packages
-or when switching between different copies of source code (for example, when changing
-back and forth between different branches in a version control system).
-The old advice to add the <code>-i</code> flag for speed, as in <code>go</code> <code>build</code> <code>-i</code>
-or <code>go</code> <code>test</code> <code>-i</code>,
-is no longer necessary: builds run just as fast without <code>-i</code>.
-For more details, see <a href="/cmd/go/#hdr-Build_and_test_caching"><code>go</code> <code>help</code> <code>cache</code></a>.
-</p>
-
-<p>
-The <code>go</code>&nbsp;<code>install</code> command now installs only the
-packages and commands listed directly on the command line.
-For example, <code>go</code> <code>install</code> <code>cmd/gofmt</code>
-installs the gofmt program but not any of the packages on which it depends.
-The new build cache makes future commands still run as quickly as if the
-dependencies had been installed.
-To force the installation of dependencies, use the new
-<code>go</code> <code>install</code> <code>-i</code> flag.
-Installing dependency packages should not be necessary in general,
-and the very concept of installed packages may disappear in a future release.
-</p>
-
-<p>
-Many details of the <code>go</code>&nbsp;<code>build</code> implementation have changed to support these improvements.
-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 <a href="/cmd/go/#hdr-File_types"><code>go</code> <code>help</code> <code>filetype</code></a>.
-</p>
-
-<h3 id="test">Test</h3>
-
-<p>
-The <code>go</code>&nbsp;<code>test</code> command now caches test results:
-if the test executable and command line match a previous run
-and the files and environment variables consulted by that run
-have not changed either, <code>go</code> <code>test</code> will print
-the previous test output, replacing the elapsed time with the string “(cached).”
-Test caching applies only to successful test results;
-only to <code>go</code> <code>test</code>
-commands with an explicit list of packages; and
-only to command lines using a subset of the
-<code>-cpu</code>, <code>-list</code>, <code>-parallel</code>,
-<code>-run</code>, <code>-short</code>, and <code>-v</code> test flags.
-The idiomatic way to bypass test caching is to use <code>-count=1</code>.
-</p>
-
-<p id="test-vet">
-The <code>go</code>&nbsp;<code>test</code> command now automatically runs
-<code>go</code> <code>vet</code> on the package being tested,
-to identify significant problems before running the test.
-Any such problems are treated like build errors and prevent execution of the test.
-Only a high-confidence subset of the available <code>go</code> <code>vet</code>
-checks are enabled for this automatic check.
-To disable the running of <code>go</code> <code>vet</code>, use
-<code>go</code> <code>test</code> <code>-vet=off</code>.
-</p>
-
-<p>
-The <code>go</code> <code>test</code> <code>-coverpkg</code> flag now
-interprets its argument as a comma-separated list of patterns to match against
-the dependencies of each test, not as a list of packages to load anew.
-For example, <code>go</code> <code>test</code> <code>-coverpkg=all</code>
-is now a meaningful way to run a test with coverage enabled for the test package
-and all its dependencies.
-Also, the <code>go</code> <code>test</code> <code>-coverprofile</code> option is now
-supported when running multiple tests.
-</p>
-
-<p>
-In case of failure due to timeout, tests are now more likely to write their profiles before exiting.
-</p>
-
-<p>
-The <code>go</code>&nbsp;<code>test</code> command now always
-merges the standard output and standard error from a given test binary execution
-and writes both to <code>go</code> <code>test</code>'s standard output.
-In past releases, <code>go</code> <code>test</code> only applied this
-merging most of the time.
-</p>
-
-<p>
-The <code>go</code>&nbsp;<code>test</code> <code>-v</code> output
-now includes <code>PAUSE</code> and <code>CONT</code> status update
-lines to mark when <a href="/pkg/testing/#T.Parallel">parallel tests</a> pause and continue.
-</p>
-
-<p>
-The new <code>go</code> <code>test</code> <code>-failfast</code> flag
-disables running additional tests after any test fails.
-Note that tests running in parallel with the failing test are allowed to complete.
-</p>
-
-<p>
-Finally, the new <code>go</code> <code>test</code> <code>-json</code> flag
-filters test output through the new command
-<code>go</code> <code>tool</code> <code>test2json</code>
-to produce a machine-readable JSON-formatted description of test execution.
-This allows the creation of rich presentations of test execution
-in IDEs and other tools.
-</p>
-
-
-<p>
-For more details about all these changes,
-see <a href="/cmd/go/#hdr-Test_packages"><code>go</code> <code>help</code> <code>test</code></a>
-and the <a href="/cmd/test2json/">test2json documentation</a>.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p>
-Options specified by cgo using <code>#cgo CFLAGS</code> and the like
-are now checked against a list of permitted options.
-This closes a security hole in which a downloaded package uses
-compiler options like
-<span style="white-space: nowrap"><code>-fplugin</code></span>
-to run arbitrary code on the machine where it is being built.
-This can cause a build error such as <code>invalid flag in #cgo CFLAGS</code>.
-For more background, and how to handle this error, see
-<a href="/s/invalidflag">https://golang.org/s/invalidflag</a>.
-</p>
-
-<p>
-Cgo now implements a C typedef like “<code>typedef</code> <code>X</code> <code>Y</code>” using a Go type alias,
-so that Go code may use the types <code>C.X</code> and <code>C.Y</code> interchangeably.
-It also now supports the use of niladic function-like macros.
-Also, the documentation has been updated to clarify that
-Go structs and Go arrays are not supported in the type signatures of cgo-exported functions.
-</p>
-
-<p>
-Cgo now supports direct access to Go string values from C.
-Functions in the C preamble may use the type <code>_GoString_</code>
-to accept a Go string as an argument.
-C code may call <code>_GoStringLen</code> and <code>_GoStringPtr</code>
-for direct access to the contents of the string.
-A value of type <code>_GoString_</code>
-may be passed in a call to an exported Go function that takes an argument of Go type <code>string</code>.
-</p>
-
-<p>
-During toolchain bootstrap, the environment variables <code>CC</code> and <code>CC_FOR_TARGET</code> specify
-the default C compiler that the resulting toolchain will use for host and target builds, respectively.
-However, if the toolchain will be used with multiple targets, it may be necessary to specify a different C compiler for each
-(for example, a different compiler for <code>darwin/arm64</code> versus <code>linux/ppc64le</code>).
-The new set of environment variables <code>CC_FOR_<i>goos</i>_<i>goarch</i></code>
-allows specifying a different default C compiler for each target.
-Note that these variables only apply during toolchain bootstrap,
-to set the defaults used by the resulting toolchain.
-Later <code>go</code> <code>build</code> commands use the <code>CC</code> environment
-variable or else the built-in default.
-</p>
-
-<p>
-Cgo now translates some C types that would normally map to a pointer
-type in Go, to a <code>uintptr</code> instead. These types include
-the <code>CFTypeRef</code> hierarchy in Darwin's CoreFoundation
-framework and the <code>jobject</code> hierarchy in Java's JNI
-interface.
-</p>
-
-<p>
-These types must be <code>uintptr</code> on the Go side because they
-would otherwise confuse the Go garbage collector; they are sometimes
-not really pointers but data structures encoded in a pointer-sized integer.
-Pointers to Go memory must not be stored in these <code>uintptr</code> values.
-</p>
-
-<p>
-Because of this change, values of the affected types need to be
-zero-initialized with the constant <code>0</code> instead of the
-constant <code>nil</code>. Go 1.10 provides <code>gofix</code>
-modules to help with that rewrite:
-</p>
-
-<pre>
-go tool fix -r cftype &lt;pkg&gt;
-go tool fix -r jni &lt;pkg&gt;
-</pre>
-
-<p>
-For more details, see the <a href="/cmd/cgo/">cgo documentation</a>.
-</p>
-
-<h3 id="doc">Doc</h3>
-
-<p>
-The <code>go</code>&nbsp;<code>doc</code> tool now adds functions returning slices of <code>T</code> or <code>*T</code>
-to the display of type <code>T</code>, similar to the existing behavior for functions returning single <code>T</code> or <code>*T</code> results.
-For example:
-</p>
-
-<pre>
-$ go doc mail.Address
-package mail // import "net/mail"
-
-type Address struct {
-	Name    string
-	Address string
-}
-    Address represents a single mail address.
-
-func ParseAddress(address string) (*Address, error)
-func ParseAddressList(list string) ([]*Address, error)
-func (a *Address) String() string
-$
-</pre>
-
-<p>
-Previously, <code>ParseAddressList</code> was only shown in the package overview (<code>go</code> <code>doc</code> <code>mail</code>).
-</p>
-
-<h3 id="fix">Fix</h3>
-
-<p>
-The <code>go</code>&nbsp;<code>fix</code> tool now replaces imports of <code>"golang.org/x/net/context"</code>
-with <code>"context"</code>.
-(Forwarding aliases in the former make it completely equivalent to the latter when using Go 1.9 or later.)
-</p>
-
-<h3 id="get">Get</h3>
-
-<p>
-The <code>go</code>&nbsp;<code>get</code> command now supports Fossil source code repositories.
-</p>
-
-<h3 id="pprof">Pprof</h3>
-
-<p>
-The blocking and mutex profiles produced by the <code>runtime/pprof</code> package
-now include symbol information, so they can be viewed
-in <code>go</code> <code>tool</code> <code>pprof</code>
-without the binary that produced the profile.
-(All other profile types were changed to include symbol information in Go 1.9.)
-</p>
-
-<p>
-The <a href="/cmd/pprof/"><code>go</code>&nbsp;<code>tool</code>&nbsp;<code>pprof</code></a>
-profile visualizer has been updated to git version 9e20b5b (2017-11-08)
-from <a href="https://github.com/google/pprof">github.com/google/pprof</a>,
-which includes an updated web interface.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<p>
-The <a href="/cmd/vet/"><code>go</code>&nbsp;<code>vet</code></a> command now always has access to
-complete, up-to-date type information when checking packages, even for packages using cgo or vendored imports.
-The reports should be more accurate as a result.
-Note that only <code>go</code>&nbsp;<code>vet</code> has access to this information;
-the more low-level <code>go</code>&nbsp;<code>tool</code>&nbsp;<code>vet</code> does not
-and should be avoided except when working on <code>vet</code> itself.
-(As of Go 1.9, <code>go</code>&nbsp;<code>vet</code> provides access to all the same flags as
-<code>go</code>&nbsp;<code>tool</code>&nbsp;<code>vet</code>.)
-</p>
-
-<h3 id="diag">Diagnostics</h3>
-
-<p>
-This release includes a new <a href="/doc/diagnostics.html">overview of available Go program diagnostic tools</a>.
-</p>
-
-<h3 id="gofmt">Gofmt</h3>
-
-<p>
-Two minor details of the default formatting of Go source code have changed.
-First, certain complex three-index slice expressions previously formatted like
-<code>x[i+1</code>&nbsp;<code>:</code>&nbsp;<code>j:k]</code> and now
-format with more consistent spacing: <code>x[i+1</code>&nbsp;<code>:</code>&nbsp;<code>j</code>&nbsp;<code>:</code>&nbsp;<code>k]</code>.
-Second, single-method interface literals written on a single line,
-which are sometimes used in type assertions,
-are no longer split onto multiple lines.
-</p>
-
-<p>
-Note that these kinds of minor updates to gofmt are expected from time to time.
-In general, we recommend against building systems that check that source code
-matches the output of a specific version of gofmt.
-For example, a continuous integration test that fails if any code already checked into
-a repository is not “properly formatted” is inherently fragile and not recommended.
-</p>
-
-<p>
-If multiple programs must agree about which version of gofmt is used to format a source file,
-we recommend that they do this by arranging to invoke the same gofmt binary.
-For example, in the Go open source repository, our Git pre-commit hook is written in Go
-and could import <code>go/format</code> directly, but instead it invokes the <code>gofmt</code>
-binary found in the current path, so that the pre-commit hook need not be recompiled
-each time <code>gofmt</code> changes.
-</p>
-
-<h3 id="compiler">Compiler Toolchain</h3>
-
-<p>
-The compiler includes many improvements to the performance of generated code,
-spread fairly evenly across the supported architectures.
-</p>
-
-<p>
-The DWARF debug information recorded in binaries has been improved in a few ways:
-constant values are now recorded;
-line number information is more accurate, making source-level stepping through a program work better;
-and each package is now presented as its own DWARF compilation unit.
-</p>
-
-<p>
-The various <a href="https://docs.google.com/document/d/1nr-TQHw_er6GOQRsF6T43GGhFDelrAP0NqSS_00RgZQ/edit">build modes</a>
-have been ported to more systems.
-Specifically, <code>c-shared</code> now works on <code>linux/ppc64le</code>, <code>windows/386</code>, and <code>windows/amd64</code>;
-<code>pie</code> now works on <code>darwin/amd64</code> and also forces the use of external linking on all systems;
-and <code>plugin</code> now works on <code>linux/ppc64le</code> and <code>darwin/amd64</code>.
-</p>
-
-<p>
-The <code>linux/ppc64le</code> port now requires the use of external linking
-with any programs that use cgo, even uses by the standard library.
-</p>
-
-<h3 id="asm">Assembler</h3>
-
-<p>
-For the ARM 32-bit port, the assembler now supports the instructions
-<code><small>BFC</small></code>,
-<code><small>BFI</small></code>,
-<code><small>BFX</small></code>,
-<code><small>BFXU</small></code>,
-<code><small>FMULAD</small></code>,
-<code><small>FMULAF</small></code>,
-<code><small>FMULSD</small></code>,
-<code><small>FMULSF</small></code>,
-<code><small>FNMULAD</small></code>,
-<code><small>FNMULAF</small></code>,
-<code><small>FNMULSD</small></code>,
-<code><small>FNMULSF</small></code>,
-<code><small>MULAD</small></code>,
-<code><small>MULAF</small></code>,
-<code><small>MULSD</small></code>,
-<code><small>MULSF</small></code>,
-<code><small>NMULAD</small></code>,
-<code><small>NMULAF</small></code>,
-<code><small>NMULD</small></code>,
-<code><small>NMULF</small></code>,
-<code><small>NMULSD</small></code>,
-<code><small>NMULSF</small></code>,
-<code><small>XTAB</small></code>,
-<code><small>XTABU</small></code>,
-<code><small>XTAH</small></code>,
-and
-<code><small>XTAHU</small></code>.
-</p>
-
-<p>
-For the ARM 64-bit port, the assembler now supports the
-<code><small>VADD</small></code>,
-<code><small>VADDP</small></code>,
-<code><small>VADDV</small></code>,
-<code><small>VAND</small></code>,
-<code><small>VCMEQ</small></code>,
-<code><small>VDUP</small></code>,
-<code><small>VEOR</small></code>,
-<code><small>VLD1</small></code>,
-<code><small>VMOV</small></code>,
-<code><small>VMOVI</small></code>,
-<code><small>VMOVS</small></code>,
-<code><small>VORR</small></code>,
-<code><small>VREV32</small></code>,
-and
-<code><small>VST1</small></code>
-instructions.
-</p>
-
-<p>
-For the PowerPC 64-bit port, the assembler now supports the POWER9 instructions
-<code><small>ADDEX</small></code>,
-<code><small>CMPEQB</small></code>,
-<code><small>COPY</small></code>,
-<code><small>DARN</small></code>,
-<code><small>LDMX</small></code>,
-<code><small>MADDHD</small></code>,
-<code><small>MADDHDU</small></code>,
-<code><small>MADDLD</small></code>,
-<code><small>MFVSRLD</small></code>,
-<code><small>MTVSRDD</small></code>,
-<code><small>MTVSRWS</small></code>,
-<code><small>PASTECC</small></code>,
-<code><small>VCMPNEZB</small></code>,
-<code><small>VCMPNEZBCC</small></code>,
-and
-<code><small>VMSUMUDM</small></code>.
-</p>
-
-<p>
-For the S390X port, the assembler now supports the
-<code><small>TMHH</small></code>,
-<code><small>TMHL</small></code>,
-<code><small>TMLH</small></code>,
-and
-<code><small>TMLL</small></code>
-instructions.
-</p>
-
-<p>
-For the X86 64-bit port, the assembler now supports 359 new instructions,
-including the full AVX, AVX2, BMI, BMI2, F16C, FMA3, SSE2, SSE3, SSSE3, SSE4.1, and SSE4.2 extension sets.
-The assembler also no longer implements <code><small>MOVL</small></code>&nbsp;<code><small>$0,</small></code>&nbsp;<code><small>AX</small></code>
-as an <code><small>XORL</small></code> instruction,
-to avoid clearing the condition flags unexpectedly.
-</p>
-
-<h3 id="gccgo">Gccgo</h3>
-
-<p>
-Due to the alignment of Go's semiannual release schedule with GCC's
-annual release schedule,
-GCC release 7 contains the Go 1.8.3 version of gccgo.
-We expect that the next release, GCC 8, will contain the Go 1.10
-version of gccgo.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p>
-The behavior of nested calls to
-<a href="/pkg/runtime/#LockOSThread"><code>LockOSThread</code></a> and
-<a href="/pkg/runtime/#UnlockOSThread"><code>UnlockOSThread</code></a>
-has changed.
-These functions control whether a goroutine is locked to a specific operating system thread,
-so that the goroutine only runs on that thread, and the thread only runs that goroutine.
-Previously, calling <code>LockOSThread</code> more than once in a row
-was equivalent to calling it once, and a single <code>UnlockOSThread</code>
-always unlocked the thread.
-Now, the calls nest: if <code>LockOSThread</code> is called multiple times,
-<code>UnlockOSThread</code> must be called the same number of times
-in order to unlock the thread.
-Existing code that was careful not to nest these calls will remain correct.
-Existing code that incorrectly assumed the calls nested will become correct.
-Most uses of these functions in public Go source code falls into the second category.
-</p>
-
-<p>
-Because one common use of <code>LockOSThread</code> and <code>UnlockOSThread</code>
-is to allow Go code to reliably modify thread-local state (for example, Linux or Plan 9 name spaces),
-the runtime now treats locked threads as unsuitable for reuse or for creating new threads.
-</p>
-
-<p>
-Stack traces no longer include implicit wrapper functions (previously marked <code>&lt;autogenerated&gt;</code>),
-unless a fault or panic happens in the wrapper itself.
-As a result, skip counts passed to functions like <a href="/pkg/runtime/#Caller"><code>Caller</code></a>
-should now always match the structure of the code as written, rather than depending on
-optimization decisions and implementation details.
-</p>
-
-<p>
-The garbage collector has been modified to reduce its impact on allocation latency.
-It now uses a smaller fraction of the overall CPU when running, but it may run more of the time.
-The total CPU consumed by the garbage collector has not changed significantly.
-</p>
-
-<p>
-The <a href="/pkg/runtime/#GOROOT"><code>GOROOT</code></a> function
-now defaults (when the <code>$GOROOT</code> environment variable is not set)
-to the <code>GOROOT</code> or <code>GOROOT_FINAL</code> in effect
-at the time the calling program was compiled.
-Previously it used the <code>GOROOT</code> or <code>GOROOT_FINAL</code> in effect
-at the time the toolchain that compiled the calling program was compiled.
-</p>
-
-<p>
-There is no longer a limit on the <a href="/pkg/runtime/#GOMAXPROCS"><code>GOMAXPROCS</code></a> setting.
-(In Go 1.9 the limit was 1024.)
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-As always, the changes are so general and varied that precise
-statements about performance are difficult to make.  Most programs
-should run a bit faster, due to speedups in the garbage collector,
-better generated code, and optimizations in the core library.
-</p>
-
-<h2 id="gc">Garbage Collector</h2>
-
-<p>
-Many applications should experience significantly lower allocation latency and overall performance overhead when the garbage collector is active.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<p>
-All of the changes to the standard library are minor.
-The changes in <a href="#bytes">bytes</a>
-and <a href="#net/url">net/url</a> are the most likely to require updating of existing programs.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-As always, there are various minor changes and updates to the library,
-made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-in mind.
-</p>
-
-<dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
-<dd>
-<p>
-In general, the handling of special header formats is significantly improved and expanded.
-</p>
-<p>
-<a href="/pkg/archive/tar/#FileInfoHeader"><code>FileInfoHeader</code></a> has always
-recorded the Unix UID and GID numbers from its <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> argument
-(specifically, from the system-dependent information returned by the <code>FileInfo</code>'s <code>Sys</code> method)
-in the returned <a href="/pkg/archive/tar/#Header"><code>Header</code></a>.
-Now it also records the user and group names corresponding to those IDs,
-as well as the major and minor device numbers for device files.
-</p>
-<p>
-The new <a href="/pkg/archive/tar/#Header"><code>Header.Format</code></a> field
-of type <a href="/pkg/archive/tar/#Format"><code>Format</code></a>
-controls which tar header format the <a href="/pkg/archive/tar/#Writer"><code>Writer</code></a> uses.
-The default, as before, is to select the most widely-supported header type
-that can encode the fields needed by the header (USTAR if possible, or else PAX if possible, or else GNU).
-The <a href="/pkg/archive/tar/#Reader"><code>Reader</code></a> sets <code>Header.Format</code> for each header it reads.
-</p>
-<p>
-<code>Reader</code> and the <code>Writer</code> now support arbitrary PAX records,
-using the new <a href="/pkg/archive/tar/#Header"><code>Header.PAXRecords</code></a> field,
-a generalization of the existing <code>Xattrs</code> field.
-</p>
-<p>
-The <code>Reader</code> no longer insists that the file name or link name in GNU headers
-be valid UTF-8.
-</p>
-<p>
-When writing PAX- or GNU-format headers, the <code>Writer</code> now includes
-the <code>Header.AccessTime</code> and <code>Header.ChangeTime</code> fields (if set).
-When writing PAX-format headers, the times include sub-second precision.
-</p>
-</dl>
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-<dd>
-<p>
-Go 1.10 adds more complete support for times and character set encodings in ZIP archives.
-</p>
-<p>
-The original ZIP format used the standard MS-DOS encoding of year, month, day, hour, minute, and second into fields in two 16-bit values.
-That encoding cannot represent time zones or odd seconds, so multiple extensions have been
-introduced to allow richer encodings.
-In Go 1.10, the <a href="/pkg/archive/zip/#Reader"><code>Reader</code></a> and <a href="/pkg/archive/zip/#Writer"><code>Writer</code></a>
-now support the widely-understood Info-Zip extension that encodes the time separately in the 32-bit Unix “seconds since epoch” form.
-The <a href="/pkg/archive/zip/#FileHeader"><code>FileHeader</code></a>'s new <code>Modified</code> field of type <a href="/pkg/time/#Time"><code>time.Time</code></a>
-obsoletes the <code>ModifiedTime</code> and <code>ModifiedDate</code> fields, which continue to hold the MS-DOS encoding.
-The <code>Reader</code> and <code>Writer</code> now adopt the common
-convention that a ZIP archive storing a time zone-independent Unix time
-also stores the local time in the MS-DOS field,
-so that the time zone offset can be inferred.
-For compatibility, the <a href="/pkg/archive/zip/#FileHeader.ModTime"><code>ModTime</code></a> and
-<a href="/pkg/archive/zip/#FileHeader.SetModTime"><code>SetModTime</code></a> methods
-behave the same as in earlier releases; new code should use <code>Modified</code> directly.
-</p>
-<p>
-The header for each file in a ZIP archive has a flag bit indicating whether
-the name and comment fields are encoded as UTF-8, as opposed to a system-specific default encoding.
-In Go 1.8 and earlier, the <code>Writer</code> never set the UTF-8 bit.
-In Go 1.9, the <code>Writer</code> changed to set the UTF-8 bit almost always.
-This broke the creation of ZIP archives containing Shift-JIS file names.
-In Go 1.10, the <code>Writer</code> now sets the UTF-8 bit only when
-both the name and the comment field are valid UTF-8 and at least one is non-ASCII.
-Because non-ASCII encodings very rarely look like valid UTF-8, the new
-heuristic should be correct nearly all the time.
-Setting a <code>FileHeader</code>'s new <code>NonUTF8</code> field to true
-disables the heuristic entirely for that file.
-</p>
-<p>
-The <code>Writer</code> also now supports setting the end-of-central-directory record's comment field,
-by calling the <code>Writer</code>'s new <a href="/pkg/archive/zip/#Writer.SetComment"><code>SetComment</code></a> method.
-</p>
-</dl>
-
-<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
-<dd>
-<p>
-The new <a href="/pkg/bufio/#Reader.Size"><code>Reader.Size</code></a>
-and <a href="/pkg/bufio/#Writer.Size"><code>Writer.Size</code></a>
-methods report the <code>Reader</code> or <code>Writer</code>'s underlying buffer size.
-</p>
-</dl>
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-<dd>
-<p>
-The
-<a href="/pkg/bytes/#Fields"><code>Fields</code></a>,
-<a href="/pkg/bytes/#FieldsFunc"><code>FieldsFunc</code></a>,
-<a href="/pkg/bytes/#Split"><code>Split</code></a>,
-and
-<a href="/pkg/bytes/#SplitAfter"><code>SplitAfter</code></a>
-functions have always returned subslices of their inputs.
-Go 1.10 changes each returned subslice to have capacity equal to its length,
-so that appending to one cannot overwrite adjacent data in the original input.
-</p>
-</dl>
-
-<dl id="crypto/cipher"><dt><a href="/pkg/crypto/cipher/">crypto/cipher</a></dt>
-<dd>
-<p>
-<a href="/pkg/crypto/cipher/#NewOFB"><code>NewOFB</code></a> now panics if given
-an initialization vector of incorrect length, like the other constructors in the
-package always have.
-(Previously it returned a nil <code>Stream</code> implementation.)
-</p>
-</dl>
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-<dd>
-<p>
-The TLS server now advertises support for SHA-512 signatures when using TLS 1.2.
-The server already supported the signatures, but some clients would not select
-them unless explicitly advertised.
-</p>
-</dl>
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-<dd>
-<p>
-<a href="/pkg/crypto/x509/#Certificate.Verify"><code>Certificate.Verify</code></a>
-now enforces the name constraints for all
-names contained in the certificate, not just the one name that a client has asked about.
-Extended key usage restrictions are similarly now checked all at once.
-As a result, after a certificate has been validated, now it can be trusted in its entirety.
-It is no longer necessary to revalidate the certificate for each additional name
-or key usage.
-</p>
-
-<p>
-Parsed certificates also now report URI names and IP, email, and URI constraints, using the new
-<a href="/pkg/crypto/x509/#Certificate"><code>Certificate</code></a> fields
-<code>URIs</code>, <code>PermittedIPRanges</code>, <code>ExcludedIPRanges</code>,
-<code>PermittedEmailAddresses</code>, <code>ExcludedEmailAddresses</code>,
-<code>PermittedURIDomains</code>, and <code>ExcludedURIDomains</code>. Certificates with
-invalid values for those fields are now rejected.
-</p>
-
-<p>
-The new <a href="/pkg/crypto/x509/#MarshalPKCS1PublicKey"><code>MarshalPKCS1PublicKey</code></a>
-and <a href="/pkg/crypto/x509/#ParsePKCS1PublicKey"><code>ParsePKCS1PublicKey</code></a>
-functions convert an RSA public key to and from PKCS#1-encoded form.
-</p>
-
-<p>
-The new <a href="/pkg/crypto/x509/#MarshalPKCS8PrivateKey"><code>MarshalPKCS8PrivateKey</code></a>
-function converts a private key to PKCS#8-encoded form.
-(<a href="/pkg/crypto/x509/#ParsePKCS8PrivateKey"><code>ParsePKCS8PrivateKey</code></a>
-has existed since Go 1.)
-</p>
-</dl>
-
-<dl id="crypto/x509/pkix"><dt><a href="/pkg/crypto/x509/pkix/">crypto/x509/pkix</a></dt>
-<dd>
-<p>
-<a href="/pkg/crypto/x509/pkix/#Name"><code>Name</code></a> now implements a
-<a href="/pkg/crypto/x509/pkix/#Name.String"><code>String</code></a> method that
-formats the X.509 distinguished name in the standard RFC 2253 format.
-</p>
-</dl>
-
-<dl id="database/sql/driver"><dt><a href="/pkg/database/sql/driver/">database/sql/driver</a></dt>
-<dd>
-<p>
-Drivers that currently hold on to the destination buffer provided by
-<a href="/pkg/database/sql/driver/#Rows.Next"><code>driver.Rows.Next</code></a> should ensure they no longer
-write to a buffer assigned to the destination array outside of that call.
-Drivers must be careful that underlying buffers are not modified when closing
-<a href="/pkg/database/sql/driver/#Rows"><code>driver.Rows</code></a>.
-</p>
-<p>
-Drivers that want to construct a <a href="/pkg/database/sql/#DB"><code>sql.DB</code></a> for
-their clients can now implement the <a href="/pkg/database/sql/driver/#Connector"><code>Connector</code></a> interface
-and call the new <a href="/pkg/database/sql/#OpenDB"><code>sql.OpenDB</code></a> function,
-instead of needing to encode all configuration into a string
-passed to  <a href="/pkg/database/sql/#Open"><code>sql.Open</code></a>.
-</p>
-<p>
-Drivers that want to parse the configuration string only once per <code>sql.DB</code>
-instead of once per <a href="/pkg/database/sql/#Conn"><code>sql.Conn</code></a>,
-or that want access to each <code>sql.Conn</code>'s underlying context,
-can make their <a href="/pkg/database/sql/driver/#Driver"><code>Driver</code></a>
-implementations also implement <a href="/pkg/database/sql/driver/#DriverContext"><code>DriverContext</code></a>'s
-new <code>OpenConnector</code> method.
-</p>
-<p>
-Drivers that implement <a href="/pkg/database/sql/driver/#ExecerContext"><code>ExecerContext</code></a>
-no longer need to implement <a href="/pkg/database/sql/driver/#Execer"><code>Execer</code></a>;
-similarly, drivers that implement <a href="/pkg/database/sql/driver/#QueryerContext"><code>QueryerContext</code></a>
-no longer need to implement <a href="/pkg/database/sql/driver/#Queryer"><code>Queryer</code></a>.
-Previously, even if the context-based interfaces were implemented they were ignored
-unless the non-context-based interfaces were also implemented.
-</p>
-<p>
-To allow drivers to better isolate different clients using a cached driver connection in succession,
-if a <a href="/pkg/database/sql/driver/#Conn"><code>Conn</code></a> implements the new
-<a href="/pkg/database/sql/driver/#SessionResetter"><code>SessionResetter</code></a> interface,
-<code>database/sql</code> will now call <code>ResetSession</code> before
-reusing the <code>Conn</code> for a new client.
-</p>
-</dl>
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-<dd>
-<p>
-This release adds 348 new relocation constants divided between the relocation types
-<a href="/pkg/debug/elf/#R_386"><code>R_386</code></a>,
-<a href="/pkg/debug/elf/#R_AARCH64"><code>R_AARCH64</code></a>,
-<a href="/pkg/debug/elf/#R_ARM"><code>R_ARM</code></a>,
-<a href="/pkg/debug/elf/#R_PPC64"><code>R_PPC64</code></a>,
-and
-<a href="/pkg/debug/elf/#R_X86_64"><code>R_X86_64</code></a>.
-</p>
-</dl>
-
-<dl id="debug/macho"><dt><a href="/pkg/debug/macho/">debug/macho</a></dt>
-<dd>
-<p>
-Go 1.10 adds support for reading relocations from Mach-O sections,
-using the <a href="/pkg/debug/macho#Section"><code>Section</code></a> struct's new <code>Relocs</code> field
-and the new <a href="/pkg/debug/macho/#Reloc"><code>Reloc</code></a>,
-<a href="/pkg/debug/macho/#RelocTypeARM"><code>RelocTypeARM</code></a>,
-<a href="/pkg/debug/macho/#RelocTypeARM64"><code>RelocTypeARM64</code></a>,
-<a href="/pkg/debug/macho/#RelocTypeGeneric"><code>RelocTypeGeneric</code></a>,
-and
-<a href="/pkg/debug/macho/#RelocTypeX86_64"><code>RelocTypeX86_64</code></a>
-types and associated constants.
-</p>
-<p>
-Go 1.10 also adds support for the <code>LC_RPATH</code> load command,
-represented by the types
-<a href="/pkg/debug/macho/#RpathCmd"><code>RpathCmd</code></a> and
-<a href="/pkg/debug/macho/#Rpath"><code>Rpath</code></a>,
-and new <a href="/pkg/debug/macho/#pkg-constants">named constants</a>
-for the various flag bits found in headers.
-</p>
-</dl>
-
-<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
-<dd>
-<p>
-<a href="/pkg/encoding/asn1/#Marshal"><code>Marshal</code></a> now correctly encodes
-strings containing asterisks as type UTF8String instead of PrintableString,
-unless the string is in a struct field with a tag forcing the use of PrintableString.
-<code>Marshal</code> also now respects struct tags containing <code>application</code> directives.
-</p>
-<p>
-The new <a href="/pkg/encoding/asn1/#MarshalWithParams"><code>MarshalWithParams</code></a>
-function marshals its argument as if the additional params were its associated
-struct field tag.
-</p>
-<p>
-<a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a> now respects
-struct field tags using the <code>explicit</code> and <code>tag</code>
-directives.
-</p>
-<p>
-Both <code>Marshal</code> and <code>Unmarshal</code> now support a new struct field tag
-<code>numeric</code>, indicating an ASN.1 NumericString.
-</p>
-</dl>
-
-<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
-<dd>
-<p>
-<a href="/pkg/encoding/csv/#Reader"><code>Reader</code></a> now disallows the use of
-nonsensical <code>Comma</code> and <code>Comment</code> settings,
-such as NUL, carriage return, newline, invalid runes, and the Unicode replacement character,
-or setting <code>Comma</code> and <code>Comment</code> equal to each other.
-</p>
-<p>
-In the case of a syntax error in a CSV record that spans multiple input lines, <code>Reader</code>
-now reports the line on which the record started in the <a href="/pkg/encoding/csv/#ParseError"><code>ParseError</code></a>'s new <code>StartLine</code> field.
-</p>
-</dl>
-
-<dl id="encoding/hex"><dt><a href="/pkg/encoding/hex/">encoding/hex</a></dt>
-<dd>
-<p>
-The new functions
-<a href="/pkg/encoding/hex/#NewEncoder"><code>NewEncoder</code></a>
-and
-<a href="/pkg/encoding/hex/#NewDecoder"><code>NewDecoder</code></a>
-provide streaming conversions to and from hexadecimal,
-analogous to equivalent functions already in
-<a href="/pkg/encoding/base32/">encoding/base32</a>
-and
-<a href="/pkg/encoding/base64/">encoding/base64</a>.
-</p>
-
-<p>
-When the functions
-<a href="/pkg/encoding/hex/#Decode"><code>Decode</code></a>
-and
-<a href="/pkg/encoding/hex/#DecodeString"><code>DecodeString</code></a>
-encounter malformed input,
-they now return the number of bytes already converted
-along with the error.
-Previously they always returned a count of 0 with any error.
-</p>
-</dl>
-
-<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
-<dd>
-<p>
-The <a href="/pkg/encoding/json/#Decoder"><code>Decoder</code></a>
-adds a new method
-<a href="/pkg/encoding/json/#Decoder.DisallowUnknownFields"><code>DisallowUnknownFields</code></a>
-that causes it to report inputs with unknown JSON fields as a decoding error.
-(The default behavior has always been to discard unknown fields.)
-</p>
-
-<p>
-As a result of <a href="#reflect">fixing a reflect bug</a>,
-<a href="/pkg/encoding/json/#Unmarshal"><code>Unmarshal</code></a>
-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.
-<code>Unmarshal</code> now returns an error in this case.
-</p>
-</dl>
-
-<dl id="encoding/pem"><dt><a href="/pkg/encoding/pem/">encoding/pem</a></dt>
-<dd>
-<p>
-<a href="/pkg/encoding/pem/#Encode"><code>Encode</code></a>
-and
-<a href="/pkg/encoding/pem/#EncodeToMemory"><code>EncodeToMemory</code></a>
-no longer generate partial output when presented with a
-block that is impossible to encode as PEM data.
-</p>
-</dl>
-
-<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
-<dd>
-<p>
-The new function
-<a href="/pkg/encoding/xml/#NewTokenDecoder"><code>NewTokenDecoder</code></a>
-is like
-<a href="/pkg/encoding/xml/#NewDecoder"><code>NewDecoder</code></a>
-but creates a decoder reading from a <a href="/pkg/encoding/xml/#TokenReader"><code>TokenReader</code></a>
-instead of an XML-formatted byte stream.
-This is meant to enable the construction of XML stream transformers in client libraries.
-</p>
-</dl>
-
-<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
-<dd>
-<p>
-The default
-<a href="/pkg/flag/#Usage"><code>Usage</code></a> function now prints
-its first line of output to
-<code>CommandLine.Output()</code>
-instead of assuming <code>os.Stderr</code>,
-so that the usage message is properly redirected for
-clients using <code>CommandLine.SetOutput</code>.
-</p>
-<p>
-<a href="/pkg/flag/#PrintDefaults"><code>PrintDefaults</code></a> now
-adds appropriate indentation after newlines in flag usage strings,
-so that multi-line usage strings display nicely.
-</p>
-<p>
-<a href="/pkg/flag/#FlagSet"><code>FlagSet</code></a> adds new methods
-<a href="/pkg/flag/#FlagSet.ErrorHandling"><code>ErrorHandling</code></a>,
-<a href="/pkg/flag/#FlagSet.Name"><code>Name</code></a>,
-and
-<a href="/pkg/flag/#FlagSet.Output"><code>Output</code></a>,
-to retrieve the settings passed to
-<a href="/pkg/flag/#NewFlagSet"><code>NewFlagSet</code></a>
-and
-<a href="/pkg/flag/#FlagSet.SetOutput"><code>FlagSet.SetOutput</code></a>.
-</p>
-</dl>
-
-<dl id="go/doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
-<dd>
-<p>
-To support the <a href="#doc">doc change</a> described above,
-functions returning slices of <code>T</code>, <code>*T</code>, <code>**T</code>, and so on
-are now reported in <code>T</code>'s <a href="/pkg/go/doc/#Type"><code>Type</code></a>'s <code>Funcs</code> list,
-instead of in the <a href="/pkg/go/doc/#Package"><code>Package</code></a>'s <code>Funcs</code> list.
-</p>
-</dl>
-
-<dl id="go/importer"><dt><a href="/pkg/go/importer/">go/importer</a></dt>
-<dd>
-<p>
-The <a href="/pkg/go/importer/#For"><code>For</code></a> function now accepts a non-nil lookup argument.
-</p>
-</dl>
-
-<dl id="go/printer"><dt><a href="/pkg/go/printer/">go/printer</a></dt>
-<dd>
-<p>
-The changes to the default formatting of Go source code
-discussed in the <a href="#gofmt">gofmt section</a> above
-are implemented in the <a href="/pkg/go/printer/">go/printer</a> package
-and also affect the output of the higher-level <a href="/pkg/go/format/">go/format</a> package.
-</p>
-</dl>
-
-<dl id="hash"><dt><a href="/pkg/hash/">hash</a></dt>
-<dd>
-<p>
-Implementations of the <a href="/pkg/hash/#Hash"><code>Hash</code></a> interface are now
-encouraged to implement <a href="/pkg/encoding/#BinaryMarshaler"><code>encoding.BinaryMarshaler</code></a>
-and <a href="/pkg/encoding/#BinaryUnmarshaler"><code>encoding.BinaryUnmarshaler</code></a>
-to allow saving and recreating their internal state,
-and all implementations in the standard library
-(<a href="/pkg/hash/crc32/">hash/crc32</a>, <a href="/pkg/crypto/sha256/">crypto/sha256</a>, and so on)
-now implement those interfaces.
-</p>
-</dl>
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-<dd>
-<p>
-The new <a href="/pkg/html/template#Srcset"><code>Srcset</code></a> content
-type allows for proper handling of values within the
-<a href="https://w3c.github.io/html/semantics-embedded-content.html#element-attrdef-img-srcset"><code>srcset</code></a>
-attribute of <code>img</code> tags.
-</p>
-</dl>
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-<dd>
-<p>
-<a href="/pkg/math/big/#Int"><code>Int</code></a> now supports conversions to and from bases 2 through 62
-in its <a href="/pkg/math/big/#Int.SetString"><code>SetString</code></a> and <a href="/pkg/math/big/#Text"><code>Text</code></a> methods.
-(Previously it only allowed bases 2 through 36.)
-The value of the constant <code>MaxBase</code> has been updated.
-</p>
-<p>
-<a href="/pkg/math/big/#Int"><code>Int</code></a> adds a new
-<a href="/pkg/math/big/#CmpAbs"><code>CmpAbs</code></a> method
-that is like <a href="/pkg/math/big/#Cmp"><code>Cmp</code></a> but
-compares only the absolute values (not the signs) of its arguments.
-</p>
-<p>
-<a href="/pkg/math/big/#Float"><code>Float</code></a> adds a new
-<a href="/pkg/math/big/#Float.Sqrt"><code>Sqrt</code></a> method to
-compute square roots.
-</p>
-</dl>
-
-<dl id="math/cmplx"><dt><a href="/pkg/math/cmplx/">math/cmplx</a></dt>
-<dd>
-<p>
-Branch cuts and other boundary cases in
-<a href="/pkg/math/cmplx/#Asin"><code>Asin</code></a>,
-<a href="/pkg/math/cmplx/#Asinh"><code>Asinh</code></a>,
-<a href="/pkg/math/cmplx/#Atan"><code>Atan</code></a>,
-and
-<a href="/pkg/math/cmplx/#Sqrt"><code>Sqrt</code></a>
-have been corrected to match the definitions used in the C99 standard.
-</p>
-</dl>
-
-<dl id="math/rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
-<dd>
-<p>
-The new <a href="/pkg/math/rand/#Shuffle"><code>Shuffle</code></a> function and corresponding
-<a href="/pkg/math/rand/#Rand.Shuffle"><code>Rand.Shuffle</code></a> method
-shuffle an input sequence.
-</p>
-</dl>
-
-<dl id="math"><dt><a href="/pkg/math/">math</a></dt>
-<dd>
-<p>
-The new functions
-<a href="/pkg/math/#Round"><code>Round</code></a>
-and
-<a href="/pkg/math/#RoundToEven"><code>RoundToEven</code></a>
-round their arguments to the nearest floating-point integer;
-<code>Round</code> rounds a half-integer to its larger integer neighbor (away from zero)
-while <code>RoundToEven</code> rounds a half-integer to its even integer neighbor.
-</p>
-
-<p>
-The new functions
-<a href="/pkg/math/#Erfinv"><code>Erfinv</code></a>
-and
-<a href="/pkg/math/#Erfcinv"><code>Erfcinv</code></a>
-compute the inverse error function and the
-inverse complementary error function.
-</p>
-</dl>
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-<dd>
-<p>
-<a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a>
-now accepts parts with empty filename attributes.
-</p>
-</dl>
-
-<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
-<dd>
-<p>
-<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a> now discards
-invalid attribute values; previously it returned those values as empty strings.
-</p>
-</dl>
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-<dd>
-<p>
-The <a href="/pkg/net/#Conn"><code>Conn</code></a> and
-<a href="/pkg/net/#Conn"><code>Listener</code></a> implementations
-in this package now guarantee that when <code>Close</code> returns,
-the underlying file descriptor has been closed.
-(In earlier releases, if the <code>Close</code> stopped pending I/O
-in other goroutines, the closing of the file descriptor could happen in one of those
-goroutines shortly after <code>Close</code> returned.)
-</p>
-
-<p>
-<a href="/pkg/net/#TCPListener"><code>TCPListener</code></a> and
-<a href="/pkg/net/#UnixListener"><code>UnixListener</code></a>
-now implement
-<a href="/pkg/syscall/#Conn"><code>syscall.Conn</code></a>,
-to allow setting options on the underlying file descriptor
-using <a href="/pkg/syscall/#RawConn"><code>syscall.RawConn.Control</code></a>.
-</p>
-
-<p>
-The <code>Conn</code> implementations returned by <a href="/pkg/net/#Pipe"><code>Pipe</code></a>
-now support setting read and write deadlines.
-</p>
-
-<p>
-The <a href="/pkg/net/#IPConn.ReadMsgIP"><code>IPConn.ReadMsgIP</code></a>,
-<a href="/pkg/net/#IPConn.WriteMsgIP"><code>IPConn.WriteMsgIP</code></a>,
-<a href="/pkg/net/#UDPConn.ReadMsgUDP"><code>UDPConn.ReadMsgUDP</code></a>,
-and
-<a href="/pkg/net/#UDPConn.WriteMsgUDP"><code>UDPConn.WriteMsgUDP</code></a>,
-methods are now implemented on Windows.
-</p>
-</dl>
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-<dd>
-<p>
-On the client side, an HTTP proxy (most commonly configured by
-<a href="/pkg/net/http/#ProxyFromEnvironment"><code>ProxyFromEnvironment</code></a>)
-can now be specified as an <code>https://</code> URL,
-meaning that the client connects to the proxy over HTTPS before issuing a standard, proxied HTTP request.
-(Previously, HTTP proxy URLs were required to begin with <code>http://</code> or <code>socks5://</code>.)
-</p>
-<p>
-On the server side, <a href="/pkg/net/http/#FileServer"><code>FileServer</code></a> and its single-file equivalent <a href="/pkg/net/http/#ServeFile"><code>ServeFile</code></a>
-now apply <code>If-Range</code> checks to <code>HEAD</code> requests.
-<code>FileServer</code> also now reports directory read failures to the <a href="/pkg/net/http/#Server"><code>Server</code></a>'s <code>ErrorLog</code>.
-The content-serving handlers also now omit the <code>Content-Type</code> header when serving zero-length content.
-</p>
-<p>
-<a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>'s <code>WriteHeader</code> method now panics
-if passed an invalid (non-3-digit) status code.
-</p>
-<p>
-<!-- CL 46631 -->
-The <code>Server</code> will no longer add an implicit Content-Type when a <code>Handler</code> does not write any output.
-</p>
-<p>
-<a href="/pkg/net/http/#Redirect"><code>Redirect</code></a> now sets the <code>Content-Type</code> header before writing its HTTP response.
-</p>
-</dl>
-
-<dl id="net/mail"><dt><a href="/pkg/net/mail/">net/mail</a></dt>
-<dd>
-<p>
-<a href="/pkg/net/mail/#ParseAddress"><code>ParseAddress</code></a> and
-<a href="/pkg/net/mail/#ParseAddressList"><code>ParseAddressList</code></a>
-now support a variety of obsolete address formats.
-</p>
-</dl>
-
-<dl id="net/smtp"><dt><a href="/pkg/net/smtp/">net/smtp</a></dt>
-<dd>
-<p>
-The <a href="/pkg/net/smtp/#Client"><code>Client</code></a> adds a new
-<a href="/pkg/net/smtp/#Client.Noop"><code>Noop</code></a> method,
-to test whether the server is still responding.
-It also now defends against possible SMTP injection in the inputs
-to the <a href="/pkg/net/smtp/#Client.Hello"><code>Hello</code></a>
-and <a href="/pkg/net/smtp/#Client.Verify"><code>Verify</code></a> methods.
-</p>
-</dl>
-
-<dl id="net/textproto"><dt><a href="/pkg/net/textproto/">net/textproto</a></dt>
-<dd>
-<p>
-<a href="/pkg/net/textproto/#ReadMIMEHeader"><code>ReadMIMEHeader</code></a>
-now rejects any header that begins with a continuation (indented) header line.
-Previously a header with an indented first line was treated as if the first line
-were not indented.
-</p>
-</dl>
-
-<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-<dd>
-<p>
-<a href="/pkg/net/url/#ResolveReference"><code>ResolveReference</code></a>
-now preserves multiple leading slashes in the target URL.
-Previously it rewrote multiple leading slashes to a single slash,
-which resulted in the <a href="/pkg/net/http/#Client"><code>http.Client</code></a>
-following certain redirects incorrectly.
-</p>
-<p>
-For example, this code's output has changed:
-</p>
-<pre>
-base, _ := url.Parse("http://host//path//to/page1")
-target, _ := url.Parse("page2")
-fmt.Println(base.ResolveReference(target))
-</pre>
-<p>
-Note the doubled slashes around <code>path</code>.
-In Go 1.9 and earlier, the resolved URL was <code>http://host/path//to/page2</code>:
-the doubled slash before <code>path</code> was incorrectly rewritten
-to a single slash, while the doubled slash after <code>path</code> was
-correctly preserved.
-Go 1.10 preserves both doubled slashes, resolving to <code>http://host//path//to/page2</code>
-as required by <a href="https://tools.ietf.org/html/rfc3986#section-5.2">RFC 3986</a>.
-</p>
-
-<p>This change may break existing buggy programs that unintentionally
-construct a base URL with a leading doubled slash in the path and inadvertently
-depend on <code>ResolveReference</code> to correct that mistake.
-For example, this can happen if code adds a host prefix
-like <code>http://host/</code> to a path like <code>/my/api</code>,
-resulting in a URL with a doubled slash: <code>http://host//my/api</code>.
-</p>
-
-<p>
-<a href="/pkg/net/url/#UserInfo"><code>UserInfo</code></a>'s methods
-now treat a nil receiver as equivalent to a pointer to a zero <code>UserInfo</code>.
-Previously, they panicked.
-</p>
-</dl>
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-<dd>
-<p>
-<a href="/pkg/os/#File"><code>File</code></a> adds new methods
-<a href="/pkg/os/#File.SetDeadline"><code>SetDeadline</code></a>,
-<a href="/pkg/os/#File.SetReadDeadline"><code>SetReadDeadline</code></a>,
-and
-<a href="/pkg/os/#File.SetWriteDeadline"><code>SetWriteDeadline</code></a>
-that allow setting I/O deadlines when the
-underlying file descriptor supports non-blocking I/O operations.
-The definition of these methods matches those in <a href="/pkg/net/#Conn"><code>net.Conn</code></a>.
-If an I/O method fails due to missing a deadline, it will return a
-timeout error; the
-new <a href="/pkg/os/#IsTimeout"><code>IsTimeout</code></a> function
-reports whether an error represents a timeout.
-</p>
-
-<p>
-Also matching <code>net.Conn</code>,
-<code>File</code>'s
-<a href="/pkg/os/#File.Close"><code>Close</code></a> method
-now guarantee that when <code>Close</code> returns,
-the underlying file descriptor has been closed.
-(In earlier releases,
-if the <code>Close</code> stopped pending I/O
-in other goroutines, the closing of the file descriptor could happen in one of those
-goroutines shortly after <code>Close</code> returned.)
-</p>
-
-<p>
-On BSD, macOS, and Solaris systems,
-<a href="/pkg/os/#Chtimes"><code>Chtimes</code></a>
-now supports setting file times with nanosecond precision
-(assuming the underlying file system can represent them).
-</p>
-</dl>
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-<dd>
-<p>
-The <a href="/pkg/reflect/#Copy"><code>Copy</code></a> function now allows copying
-from a string into a byte array or byte slice, to match the
-<a href="/pkg/builtin/#copy">built-in copy function</a>.
-</p>
-
-<p>
-In structs, embedded pointers to unexported struct types were
-previously incorrectly reported with an empty <code>PkgPath</code>
-in the corresponding <a href="/pkg/reflect/#StructField">StructField</a>,
-with the result that for those fields,
-and <a href="/pkg/reflect/#Value.CanSet"><code>Value.CanSet</code></a>
-incorrectly returned true and
-<a href="/pkg/reflect/#Value.Set"><code>Value.Set</code></a>
-incorrectly succeeded.
-The underlying metadata has been corrected;
-for those fields,
-<code>CanSet</code> now correctly returns false
-and <code>Set</code> now correctly panics.
-This may affect reflection-based unmarshalers
-that could previously unmarshal into such fields
-but no longer can.
-For example, see the <a href="#encoding/json"><code>encoding/json</code> notes</a>.
-</p>
-</dl>
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-<dd>
-<p>
-As <a href="#pprof">noted above</a>, the blocking and mutex profiles
-now include symbol information so that they can be viewed without needing
-the binary that generated them.
-</p>
-</dl>
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-<dd>
-<p>
-<a href="/pkg/strconv/#ParseUint"><code>ParseUint</code></a> now returns
-the maximum magnitude integer of the appropriate size
-with any <code>ErrRange</code> error, as it was already documented to do.
-Previously it returned 0 with <code>ErrRange</code> errors.
-</p>
-</dl>
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-<dd>
-<p>
-A new type
-<a href="/pkg/strings/#Builder"><code>Builder</code></a> is a replacement for
-<a href="/pkg/bytes/#Buffer"><code>bytes.Buffer</code></a> for the use case of
-accumulating text into a <code>string</code> result.
-The <code>Builder</code>'s API is a restricted subset of <code>bytes.Buffer</code>'s
-that allows it to safely avoid making a duplicate copy of the data
-during the <a href="/pkg/strings/#Builder.String"><code>String</code></a> method.
-</p>
-</dl>
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-<dd>
-<p>
-On Windows,
-the new <a href="/pkg/syscall/#SysProcAttr"><code>SysProcAttr</code></a> field <code>Token</code>,
-of type <a href="/pkg/syscall/#Token"><code>Token</code></a> allows the creation of a process that
-runs as another user during <a href="/pkg/syscall/#StartProcess"><code>StartProcess</code></a>
-(and therefore also during <a href="/pkg/os/#StartProcess"><code>os.StartProcess</code></a> and
-<a href="/pkg/os/exec/#Cmd.Start"><code>exec.Cmd.Start</code></a>).
-The new function <a href="/pkg/syscall/#CreateProcessAsUser"><code>CreateProcessAsUser</code></a>
-gives access to the underlying system call.
-</p>
-
-<p>
-On BSD, macOS, and Solaris systems, <a href="/pkg/syscall/#UtimesNano"><code>UtimesNano</code></a>
-is now implemented.
-</p>
-</dl>
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-<dd>
-<p>
-<a href="/pkg/time/#LoadLocation"><code>LoadLocation</code></a> now uses the directory
-or uncompressed zip file named by the <code>$ZONEINFO</code>
-environment variable before looking in the default system-specific list of
-known installation locations or in <code>$GOROOT/lib/time/zoneinfo.zip</code>.
-</p>
-<p>
-The new function <a href="/pkg/time/#LoadLocationFromTZData"><code>LoadLocationFromTZData</code></a>
-allows conversion of IANA time zone file data to a <a href="/pkg/time/#Location"><code>Location</code></a>.
-</p>
-</dl>
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-<dd>
-<p>
-The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-support throughout the system has been upgraded from Unicode 9.0 to
-<a href="http://www.unicode.org/versions/Unicode10.0.0/">Unicode 10.0</a>,
-which adds 8,518 new characters, including four new scripts, one new property,
-a Bitcoin currency symbol, and 56 new emoji.
-</p>
-</dl>
diff --git a/_content/doc/go1.11.html b/_content/doc/go1.11.html
deleted file mode 100644
index 394e711..0000000
--- a/_content/doc/go1.11.html
+++ /dev/null
@@ -1,932 +0,0 @@
-<!--{
-	"Title": "Go 1.11 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.11</h2>
-
-<p>
-  The latest Go release, version 1.11, arrives six months after <a href="go1.10">Go 1.10</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  There are no changes to the language specification.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p> <!-- CL 94255, CL 115038, etc -->
-  As <a href="go1.10#ports">announced in the Go 1.10 release notes</a>, Go 1.11 now requires
-  OpenBSD 6.2 or later, macOS 10.10 Yosemite or later, or Windows 7 or later;
-  support for previous versions of these operating systems has been removed.
-</p>
-
-<p> <!-- CL 121657 -->
-  Go 1.11 supports the upcoming OpenBSD 6.4 release. Due to changes in
-  the OpenBSD kernel, older versions of Go will not work on OpenBSD 6.4.
-</p>
-
-<p>
-  There are <a href="/issue/25206">known issues</a> with NetBSD on i386 hardware.
-</p>
-
-<p><!-- CL 107935 -->
-  The race detector is now supported on <code>linux/ppc64le</code>
-  and, to a lesser extent, on <code>netbsd/amd64</code>. The NetBSD race detector support
-  has <a href="/issue/26403">known issues</a>.
-</p>
-
-<p><!-- CL 109255 -->
-  The memory sanitizer (<code>-msan</code>) is now supported on <code>linux/arm64</code>.
-</p>
-
-<p><!-- CL 93875 -->
-  The build modes <code>c-shared</code> and <code>c-archive</code> are now supported on
-  <code>freebsd/amd64</code>.
-</p>
-
-<p id="mips"><!-- CL 108475 -->
-  On 64-bit MIPS systems, the new environment variable settings
-  <code>GOMIPS64=hardfloat</code> (the default) and
-  <code>GOMIPS64=softfloat</code> select whether to use
-  hardware instructions or software emulation for floating-point computations.
-  For 32-bit systems, the environment variable is still <code>GOMIPS</code>,
-  as <a href="go1.10#mips">added in Go 1.10</a>.
-</p>
-
-<p><!-- CL 107475 -->
-  On soft-float ARM systems (<code>GOARM=5</code>), Go now uses a more
-  efficient software floating point interface. This is transparent to
-  Go code, but ARM assembly that uses floating-point instructions not
-  guarded on GOARM will break and must be ported to
-  the <a href="/cl/107475">new interface</a>.
-</p>
-
-<p><!-- CL 94076 -->
-  Go 1.11 on ARMv7 no longer requires a Linux kernel configured
-  with <code>KUSER_HELPERS</code>. This setting is enabled in default
-  kernel configurations, but is sometimes disabled in stripped-down
-  configurations.
-</p>
-
-<h3 id="wasm">WebAssembly</h3>
-<p>
-  Go 1.11 adds an experimental port to <a href="https://webassembly.org">WebAssembly</a>
-  (<code>js/wasm</code>).
-</p>
-<p>
-  Go programs currently compile to one WebAssembly module that
-  includes the Go runtime for goroutine scheduling, garbage
-  collection, maps, etc.
-  As a result, the resulting size is at minimum around
-  2 MB, or 500 KB compressed. Go programs can call into JavaScript
-  using the new experimental
-  <a href="/pkg/syscall/js/"><code>syscall/js</code></a> package.
-  Binary size and interop with other languages has not yet been a
-  priority but may be addressed in future releases.
-</p>
-<p>
-  As a result of the addition of the new <code>GOOS</code> value
-  "<code>js</code>" and <code>GOARCH</code> value "<code>wasm</code>",
-  Go files named <code>*_js.go</code> or <code>*_wasm.go</code> will
-  now be <a href="/pkg/go/build/#hdr-Build_Constraints">ignored by Go
-  tools</a> except when those GOOS/GOARCH values are being used.
-  If you have existing filenames matching those patterns, you will need to rename them.
-</p>
-<p>
-  More information can be found on the
-  <a href="/wiki/WebAssembly">WebAssembly wiki page</a>.
-</p>
-
-<h3 id="riscv">RISC-V GOARCH values reserved</h3>
-<p><!-- CL 106256 -->
-  The main Go compiler does not yet support the RISC-V architecture <!-- is gonna change everything -->
-  but we've reserved the <code>GOARCH</code> values
-  "<code>riscv</code>" and "<code>riscv64</code>", as used by Gccgo,
-  which does support RISC-V. This means that Go files
-  named <code>*_riscv.go</code> will now also
-  be <a href="/pkg/go/build/#hdr-Build_Constraints">ignored by Go
-  tools</a> except when those GOOS/GOARCH values are being used.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="modules">Modules, package versioning, and dependency management</h3>
-<p>
-  Go 1.11 adds preliminary support for a <a href="/cmd/go/#hdr-Modules__module_versions__and_more">new concept called “modules,”</a>
-  an alternative to GOPATH with integrated support for versioning and
-  package distribution.
-  Using modules, developers are no longer confined to working inside GOPATH,
-  version dependency information is explicit yet lightweight,
-  and builds are more reliable and reproducible.
-</p>
-
-<p>
-  Module support is considered experimental.
-  Details are likely to change in response to feedback from Go 1.11 users,
-  and we have more tools planned.
-  Although the details of module support may change, projects that convert
-  to modules using Go 1.11 will continue to work with Go 1.12 and later.
-  If you encounter bugs using modules,
-  please <a href="/issue/new">file issues</a>
-  so we can fix them. For more information, see the
-  <a href="/cmd/go#hdr-Modules__module_versions__and_more"><code>go</code> command documentation</a>.
-</p>
-
-<h3 id="importpath">Import path restriction</h3>
-
-<p>
-  Because Go module support assigns special meaning to the
-  <code>@</code> symbol in command line operations,
-  the <code>go</code> command now disallows the use of
-  import paths containing <code>@</code> symbols.
-  Such import paths were never allowed by <code>go</code> <code>get</code>,
-  so this restriction can only affect users building
-  custom GOPATH trees by other means.
-</p>
-
-<h3 id="gopackages">Package loading</h3>
-
-<p>
-  The new package
-  <a href="https://godoc.org/golang.org/x/tools/go/packages"><code>golang.org/x/tools/go/packages</code></a>
-  provides a simple API for locating and loading packages of Go source code.
-  Although not yet part of the standard library, for many tasks it
-  effectively replaces the <a href="/pkg/go/build"><code>go/build</code></a>
-  package, whose API is unable to fully support modules.
-  Because it runs an external query command such as
-  <a href="/cmd/go/#hdr-List_packages"><code>go list</code></a>
-  to obtain information about Go packages, it enables the construction of
-  analysis tools that work equally well with alternative build systems
-  such as <a href="https://bazel.build">Bazel</a>
-  and <a href="https://buckbuild.com">Buck</a>.
-</p>
-
-<h3 id="gocache">Build cache requirement</h3>
-
-<p>
-  Go 1.11 will be the last release to support setting the environment
-  variable <code>GOCACHE=off</code> to disable the
-  <a href="/cmd/go/#hdr-Build_and_test_caching">build cache</a>,
-  introduced in Go 1.10.
-  Starting in Go 1.12, the build cache will be required,
-  as a step toward eliminating <code>$GOPATH/pkg</code>.
-  The module and package loading support described above
-  already require that the build cache be enabled.
-  If you have disabled the build cache to avoid problems you encountered,
-  please <a href="/issue/new">file an issue</a> to let us know about them.
-</p>
-
-<h3 id="compiler">Compiler toolchain</h3>
-
-<p><!-- CL 109918 -->
-  More functions are now eligible for inlining by default, including
-  functions that call <code>panic</code>.
-</p>
-
-<p><!-- CL 97375 -->
-  The compiler toolchain now supports column information
-  in <a href="/cmd/compile/#hdr-Compiler_Directives">line
-  directives</a>.
-</p>
-
-<p><!-- CL 106797 -->
-  A new package export data format has been introduced.
-  This should be transparent to end users, except for speeding up
-  build times for large Go projects.
-  If it does cause problems, it can be turned off again by
-  passing <code>-gcflags=all=-iexport=false</code> to
-  the <code>go</code> tool when building a binary.
-</p>
-
-<p><!-- CL 100459 -->
-  The compiler now rejects unused variables declared in a type switch
-  guard, such as <code>x</code> in the following example:
-</p>
-<pre>
-func f(v interface{}) {
-	switch x := v.(type) {
-	}
-}
-</pre>
-<p>
-  This was already rejected by both <code>gccgo</code>
-  and <a href="/pkg/go/types/">go/types</a>.
-</p>
-
-<h3 id="assembler">Assembler</h3>
-
-<p><!-- CL 113315 -->
-  The assembler for <code>amd64</code> now accepts AVX512 instructions.
-</p>
-
-<h3 id="debugging">Debugging</h3>
-
-<p><!-- CL 100738, CL 93664 -->
-  The compiler now produces significantly more accurate debug
-  information for optimized binaries, including variable location
-  information, line numbers, and breakpoint locations.
-
-  This should make it possible to debug binaries
-  compiled <em>without</em> <code>-N</code>&nbsp;<code>-l</code>.
-
-  There are still limitations to the quality of the debug information,
-  some of which are fundamental, and some of which will continue to
-  improve with future releases.
-</p>
-
-<p><!-- CL 118276 -->
-  DWARF sections are now compressed by default because of the expanded
-  and more accurate debug information produced by the compiler.
-
-  This is transparent to most ELF tools (such as debuggers on Linux
-  and *BSD) and is supported by the Delve debugger on all platforms,
-  but has limited support in the native tools on macOS and Windows.
-
-  To disable DWARF compression,
-  pass <code>-ldflags=-compressdwarf=false</code> to
-  the <code>go</code> tool when building a binary.
-</p>
-
-<p><!-- CL 109699 -->
-  Go 1.11 adds experimental support for calling Go functions from
-  within a debugger.
-
-  This is useful, for example, to call <code>String</code> methods
-  when paused at a breakpoint.
-
-  This is currently only supported by Delve (version 1.1.0 and up).
-</p>
-
-<h3 id="test">Test</h3>
-
-<p>
-  Since Go 1.10, the <code>go</code>&nbsp;<code>test</code> command runs
-  <code>go</code>&nbsp;<code>vet</code> on the package being tested,
-  to identify problems before running the test. Since <code>vet</code>
-  typechecks the code with <a href="/pkg/go/types/">go/types</a>
-  before running, tests that do not typecheck will now fail.
-
-  In particular, tests that contain an unused variable inside a
-  closure compiled with Go 1.10, because the Go compiler incorrectly
-  accepted them (<a href="/issues/3059">Issue #3059</a>),
-  but will now fail, since <code>go/types</code> correctly reports an
-  "unused variable" error in this case.
-</p>
-
-<p><!-- CL 102696 -->
-  The <code>-memprofile</code> flag
-  to <code>go</code>&nbsp;<code>test</code> now defaults to the
-  "allocs" profile, which records the total bytes allocated since the
-  test began (including garbage-collected bytes).
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<p><!-- CL 108555 -->
-  The <a href="/cmd/vet/"><code>go</code>&nbsp;<code>vet</code></a>
-  command now reports a fatal error when the package under analysis
-  does not typecheck. Previously, a type checking error simply caused
-  a warning to be printed, and <code>vet</code> to exit with status 1.
-</p>
-
-<p><!-- CL 108559 -->
-  Additionally, <a href="/cmd/vet"><code>go</code>&nbsp;<code>vet</code></a>
-  has become more robust when format-checking <code>printf</code> wrappers.
-  Vet now detects the mistake in this example:
-</p>
-
-<pre>
-func wrapper(s string, args ...interface{}) {
-	fmt.Printf(s, args...)
-}
-
-func main() {
-	wrapper("%s", 42)
-}
-</pre>
-
-<h3 id="trace">Trace</h3>
-
-<p><!-- CL 63274 -->
-  With the new <code>runtime/trace</code>
-  package's <a href="/pkg/runtime/trace/#hdr-User_annotation">user
-  annotation API</a>, users can record application-level information
-  in execution traces and create groups of related goroutines.
-  The <code>go</code>&nbsp;<code>tool</code>&nbsp;<code>trace</code>
-  command visualizes this information in the trace view and the new
-  user task/region analysis page.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p>
-Since Go 1.10, cgo has translated some C pointer types to the Go
-type <code>uintptr</code>. These types include
-the <code>CFTypeRef</code> hierarchy in Darwin's CoreFoundation
-framework and the <code>jobject</code> hierarchy in Java's JNI
-interface. In Go 1.11, several improvements have been made to the code
-that detects these types. Code that uses these types may need some
-updating. See the <a href="go1.10.html#cgo">Go 1.10 release notes</a> for
-details. <!-- CL 126275, CL 127156, CL 122217, CL 122575, CL 123177 -->
-</p>
-
-<h3 id="go_command">Go command</h3>
-
-<p><!-- CL 126656 -->
-  The environment variable <code>GOFLAGS</code> may now be used
-  to set default flags for the <code>go</code> command.
-  This is useful in certain situations.
-  Linking can be noticeably slower on underpowered systems due to DWARF,
-  and users may want to set <code>-ldflags=-w</code> by default.
-  For modules, some users and CI systems will want vendoring always,
-  so they should set <code>-mod=vendor</code> by default.
-  For more information, see the <a href="/cmd/go/#hdr-Environment_variables"><code>go</code>
-  command documentation</a>.
-</p>
-
-<h3 id="godoc">Godoc</h3>
-
-<p>
-  Go 1.11 will be the last release to support <code>godoc</code>'s command-line interface.
-  In future releases, <code>godoc</code> will only be a web server. Users should use
-  <code>go</code> <code>doc</code> for command-line help output instead.
-</p>
-
-<p><!-- CL 85396, CL 124495 -->
-  The <code>godoc</code> web server now shows which version of Go introduced
-  new API features. The initial Go version of types, funcs, and methods are shown
-  right-aligned. For example, see <a href="/pkg/os/#UserCacheDir"><code>UserCacheDir</code></a>, with "1.11"
-  on the right side. For struct fields, inline comments are added when the struct field was
-  added in a Go version other than when the type itself was introduced.
-  For a struct field example, see
-  <a href="/pkg/net/http/httptrace/#ClientTrace.Got1xxResponse"><code>ClientTrace.Got1xxResponse</code></a>.
-</p>
-
-<h3 id="gofmt">Gofmt</h3>
-
-<p>
-  One minor detail of the default formatting of Go source code has changed.
-  When formatting expression lists with inline comments, the comments were
-  aligned according to a heuristic.
-  However, in some cases the alignment would be split up too easily, or
-  introduce too much whitespace.
-  The heuristic has been changed to behave better for human-written code.
-</p>
-
-<p>
-  Note that these kinds of minor updates to gofmt are expected from time to
-  time.
-  In general, systems that need consistent formatting of Go source code should
-  use a specific version of the <code>gofmt</code> binary.
-  See the <a href="/pkg/go/format/">go/format</a> package documentation for more
-  information.
-</p>
-
-<h3 id="run">Run</h3>
-
-<p>
-  <!-- CL 109341 -->
-  The <a href="/cmd/go/"><code>go</code>&nbsp;<code>run</code></a>
-  command now allows a single import path, a directory name or a
-  pattern matching a single package.
-  This allows <code>go</code>&nbsp;<code>run</code>&nbsp;<code>pkg</code> or <code>go</code>&nbsp;<code>run</code>&nbsp;<code>dir</code>, most importantly <code>go</code>&nbsp;<code>run</code>&nbsp;<code>.</code>
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- CL 85887 -->
-  The runtime now uses a sparse heap layout so there is no longer a
-  limit to the size of the Go heap (previously, the limit was 512GiB).
-  This also fixes rare "address space conflict" failures in mixed Go/C
-  binaries or binaries compiled with <code>-race</code>.
-</p>
-
-<p><!-- CL 108679, CL 106156 -->
-  On macOS and iOS, the runtime now uses <code>libSystem.dylib</code> instead of
-  calling the kernel directly. This should make Go binaries more
-  compatible with future versions of macOS and iOS.
-  The <a href="/pkg/syscall">syscall</a> package still makes direct
-  system calls; fixing this is planned for a future release.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-As always, the changes are so general and varied that precise
-statements about performance are difficult to make.  Most programs
-should run a bit faster, due to better generated code and
-optimizations in the core library.
-</p>
-
-<p><!-- CL 74851 -->
-There were multiple performance changes to the <code>math/big</code>
-package as well as many changes across the tree specific to <code>GOARCH=arm64</code>.
-</p>
-
-<h3 id="performance-compiler">Compiler toolchain</h3>
-
-<p><!-- CL 110055 -->
-  The compiler now optimizes map clearing operations of the form:
-</p>
-<pre>
-for k := range m {
-	delete(m, k)
-}
-</pre>
-
-<p><!-- CL 109517 -->
-  The compiler now optimizes slice extension of the form
-  <code>append(s,</code>&nbsp;<code>make([]T,</code>&nbsp;<code>n)...)</code>.
-</p>
-
-<p><!-- CL 100277, CL 105635, CL 109776 -->
-  The compiler now performs significantly more aggressive bounds-check
-  and branch elimination. Notably, it now recognizes transitive
-  relations, so if <code>i&lt;j</code> and <code>j&lt;len(s)</code>,
-  it can use these facts to eliminate the bounds check
-  for <code>s[i]</code>. It also understands simple arithmetic such
-  as <code>s[i-10]</code> and can recognize more inductive cases in
-  loops. Furthermore, the compiler now uses bounds information to more
-  aggressively optimize shift operations.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<p>
-  All of the changes to the standard library are minor.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<!-- CL 115095: https://golang.org/cl/115095: yes (`go test pkg` now always builds pkg even if there are no test files): cmd/go: output coverage report even if there are no test files -->
-<!-- CL 110395: https://golang.org/cl/110395: cmd/go, cmd/compile: use Windows response files to avoid arg length limits -->
-<!-- CL 112436: https://golang.org/cl/112436: cmd/pprof: add readline support similar to upstream -->
-
-
-<dl id="crypto"><dt><a href="/pkg/crypto/">crypto</a></dt>
-  <dd>
-    <p><!-- CL 64451 -->
-      Certain crypto operations, including
-      <a href="/pkg/crypto/ecdsa/#Sign"><code>ecdsa.Sign</code></a>,
-      <a href="/pkg/crypto/rsa/#EncryptPKCS1v15"><code>rsa.EncryptPKCS1v15</code></a> and
-      <a href="/pkg/crypto/rsa/#GenerateKey"><code>rsa.GenerateKey</code></a>,
-      now randomly read an extra byte of randomness to ensure tests don't rely on internal behavior.
-    </p>
-
-</dl><!-- crypto -->
-
-<dl id="crypto/cipher"><dt><a href="/pkg/crypto/cipher/">crypto/cipher</a></dt>
-  <dd>
-    <p><!-- CL 48510, CL 116435 -->
-      The new function <a href="/pkg/crypto/cipher/#NewGCMWithTagSize"><code>NewGCMWithTagSize</code></a>
-      implements Galois Counter Mode with non-standard tag lengths for compatibility with existing cryptosystems.
-    </p>
-
-</dl><!-- crypto/cipher -->
-
-<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
-  <dd>
-    <p><!-- CL 103876 -->
-      <a href="/pkg/crypto/rsa/#PublicKey"><code>PublicKey</code></a> now implements a
-      <a href="/pkg/crypto/rsa/#PublicKey.Size"><code>Size</code></a> method that
-      returns the modulus size in bytes.
-    </p>
-
-</dl><!-- crypto/rsa -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 85115 -->
-      <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>'s new
-      <a href="/pkg/crypto/tls/#ConnectionState.ExportKeyingMaterial"><code>ExportKeyingMaterial</code></a>
-      method allows exporting keying material bound to the
-      connection according to RFC 5705.
-    </p>
-
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 123355, CL 123695 -->
-      The deprecated, legacy behavior of treating the <code>CommonName</code> field as
-      a hostname when no Subject Alternative Names are present is now disabled when the CN is not a
-      valid hostname.
-      The <code>CommonName</code> can be completely ignored by adding the experimental value
-      <code>x509ignoreCN=1</code> to the <code>GODEBUG</code> environment variable.
-      When the CN is ignored, certificates without SANs validate under chains with name constraints
-      instead of returning <code>NameConstraintsWithoutSANs</code>.
-    </p>
-
-    <p><!-- CL 113475 -->
-      Extended key usage restrictions are again checked only if they appear in the <code>KeyUsages</code>
-      field of <a href="/pkg/crypto/x509/#VerifyOptions"><code>VerifyOptions</code></a>, instead of always being checked.
-      This matches the behavior of Go 1.9 and earlier.
-    </p>
-
-    <p><!-- CL 102699 -->
-      The value returned by <a href="/pkg/crypto/x509/#SystemCertPool"><code>SystemCertPool</code></a>
-      is now cached and might not reflect system changes between invocations.
-    </p>
-
-</dl><!-- crypto/x509 -->
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- CL 112115 -->
-      More <a href="/pkg/debug/elf/#ELFOSABI_NONE"><code>ELFOSABI</code></a>
-      and <a href="/pkg/debug/elf/#EM_NONE"><code>EM</code></a>
-      constants have been added.
-    </p>
-
-</dl><!-- debug/elf -->
-
-<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
-  <dd>
-    <p><!-- CL 110561 -->
-      <code>Marshal</code> and <code><a href="/pkg/encoding/asn1/#Unmarshal">Unmarshal</a></code>
-      now support "private" class annotations for fields.
-    </p>
-
-</dl><!-- encoding/asn1 -->
-
-<dl id="encoding/base32"><dt><a href="/pkg/encoding/base32/">encoding/base32</a></dt>
-  <dd>
-    <p><!-- CL 112516 -->
-      The decoder now consistently
-      returns <code>io.ErrUnexpectedEOF</code> for an incomplete
-      chunk. Previously it would return <code>io.EOF</code> in some
-      cases.
-    </p>
-
-</dl><!-- encoding/base32 -->
-
-<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
-  <dd>
-    <p><!-- CL 99696 -->
-      The <code>Reader</code> now rejects attempts to set
-      the <a href="/pkg/encoding/csv/#Reader.Comma"><code>Comma</code></a>
-      field to a double-quote character, as double-quote characters
-      already have a special meaning in CSV.
-    </p>
-
-</dl><!-- encoding/csv -->
-
-<!-- CL 100235 was reverted -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 121815 -->
-      The package has changed its behavior when a typed interface
-      value is passed to an implicit escaper function. Previously such
-      a value was written out as (an escaped form)
-      of <code>&lt;nil&gt;</code>. Now such values are ignored, just
-      as an untyped <code>nil</code> value is (and always has been)
-      ignored.
-    </p>
-
-</dl><!-- html/template -->
-
-<dl id="image/gif"><dt><a href="/pkg/image/gif/">image/gif</a></dt>
-  <dd>
-    <p><!-- CL 93076 -->
-      Non-looping animated GIFs are now supported. They are denoted by having a
-      <code><a href="/pkg/image/gif/#GIF.LoopCount">LoopCount</a></code> of -1.
-    </p>
-
-</dl><!-- image/gif -->
-
-<dl id="io/ioutil"><dt><a href="/pkg/io/ioutil/">io/ioutil</a></dt>
-  <dd>
-    <p><!-- CL 105675 -->
-      The <code><a href="/pkg/io/ioutil/#TempFile">TempFile</a></code>
-      function now supports specifying where the random characters in
-      the filename are placed. If the <code>prefix</code> argument
-      includes a "<code>*</code>", the random string replaces the
-      "<code>*</code>". For example, a <code>prefix</code> argument of "<code>myname.*.bat</code>" will
-      result in a random filename such as
-      "<code>myname.123456.bat</code>". If no "<code>*</code>" is
-      included the old behavior is retained, and the random digits are
-      appended to the end.
-    </p>
-
-</dl><!-- io/ioutil -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-
-    <p><!-- CL 108996 -->
-      <a href="/pkg/math/big/#Int.ModInverse"><code>ModInverse</code></a> now returns nil when g and n are not relatively prime. The result was previously undefined.
-    </p>
-
-</dl><!-- math/big -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-  <dd>
-    <p><!-- CL 121055 -->
-      The handling of form-data with missing/empty file names has been
-      restored to the behavior in Go 1.9: in the
-      <a href="/pkg/mime/multipart/#Form"><code>Form</code></a> for
-      the form-data part the value is available in
-      the <code>Value</code> field rather than the <code>File</code>
-      field. In Go releases 1.10 through 1.10.3 a form-data part with
-      a missing/empty file name and a non-empty "Content-Type" field
-      was stored in the <code>File</code> field.  This change was a
-      mistake in 1.10 and has been reverted to the 1.9 behavior.
-    </p>
-
-</dl><!-- mime/multipart -->
-
-<dl id="mime/quotedprintable"><dt><a href="/pkg/mime/quotedprintable/">mime/quotedprintable</a></dt>
-  <dd>
-    <p><!-- CL 121095 -->
-      To support invalid input found in the wild, the package now
-      permits non-ASCII bytes but does not validate their encoding.
-    </p>
-
-</dl><!-- mime/quotedprintable -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 72810 -->
-      The new <a href="/pkg/net/#ListenConfig"><code>ListenConfig</code></a> type and the new
-      <a href="/pkg/net/#Dialer.Control"><code>Dialer.Control</code></a> field permit
-      setting socket options before accepting and creating connections, respectively.
-    </p>
-
-    <p><!-- CL 76391 -->
-      The <a href="/pkg/syscall/#RawConn"><code>syscall.RawConn</code></a> <code>Read</code>
-      and <code>Write</code> methods now work correctly on Windows.
-    </p>
-
-    <p><!-- CL 107715 -->
-      The <code>net</code> package now automatically uses the
-      <a href="http://man7.org/linux/man-pages/man2/splice.2.html"><code>splice</code> system call</a>
-      on Linux when copying data between TCP connections in
-      <a href="/pkg/net/#TCPConn.ReadFrom"><code>TCPConn.ReadFrom</code></a>, as called by
-      <a href="/pkg/io/#Copy"><code>io.Copy</code></a>. The result is faster, more efficient TCP proxying.
-    </p>
-
-    <p><!-- CL 108297 -->
-      The <a href="/pkg/net/#TCPConn.File"><code>TCPConn.File</code></a>,
-      <a href="/pkg/net/#UDPConn.File"><code>UDPConn.File</code></a>,
-      <a href="/pkg/net/#UnixCOnn.File"><code>UnixConn.File</code></a>,
-      and <a href="/pkg/net/#IPConn.File"><code>IPConn.File</code></a>
-      methods no longer put the returned <code>*os.File</code> into
-      blocking mode.
-    </p>
-
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 71272 -->
-      The <a href="/pkg/net/http/#Transport"><code>Transport</code></a> type has a
-      new <a href="/pkg/net/http/#Transport.MaxConnsPerHost"><code>MaxConnsPerHost</code></a>
-      option that permits limiting the maximum number of connections
-      per host.
-    </p>
-
-    <p><!-- CL 79919 -->
-      The <a href="/pkg/net/http/#Cookie"><code>Cookie</code></a> type has a new
-      <a href="/pkg/net/http/#Cookie.SameSite"><code>SameSite</code></a> field
-      (of new type also named
-      <a href="/pkg/net/http/#SameSite"><code>SameSite</code></a>) to represent the new cookie attribute recently supported by most browsers.
-      The <code>net/http</code>'s <code>Transport</code> does not use the <code>SameSite</code>
-      attribute itself, but the package supports parsing and serializing the
-      attribute for browsers to use.
-    </p>
-
-    <p><!-- CL 81778 -->
-      It is no longer allowed to reuse a <a href="/pkg/net/http/#Server"><code>Server</code></a>
-      after a call to
-      <a href="/pkg/net/http/#Server.Shutdown"><code>Shutdown</code></a> or
-      <a href="/pkg/net/http/#Server.Close"><code>Close</code></a>. It was never officially supported
-      in the past and had often surprising behavior. Now, all future calls to the server's <code>Serve</code>
-      methods will return errors after a shutdown or close.
-    </p>
-
-    <!-- CL 89275 was reverted before Go 1.11 -->
-
-    <p><!-- CL 93296 -->
-      The constant <code>StatusMisdirectedRequest</code> is now defined for HTTP status code 421.
-    </p>
-
-    <p><!-- CL 123875 -->
-      The HTTP server will no longer cancel contexts or send on
-      <a href="/pkg/net/http/#CloseNotifier"><code>CloseNotifier</code></a>
-      channels upon receiving pipelined HTTP/1.1 requests. Browsers do
-      not use HTTP pipelining, but some clients (such as
-      Debian's <code>apt</code>) may be configured to do so.
-    </p>
-
-    <p><!-- CL 115255 -->
-      <a href="/pkg/net/http/#ProxyFromEnvironment"><code>ProxyFromEnvironment</code></a>, which is used by the
-      <a href="/pkg/net/http/#DefaultTransport"><code>DefaultTransport</code></a>, now
-      supports CIDR notation and ports in the <code>NO_PROXY</code> environment variable.
-    </p>
-
-</dl><!-- net/http -->
-
-<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-  <dd>
-    <p><!-- CL 77410 -->
-      The
-      <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
-      has a new
-      <a href="/pkg/net/http/httputil/#ReverseProxy.ErrorHandler"><code>ErrorHandler</code></a>
-      option to permit changing how errors are handled.
-    </p>
-
-    <p><!-- CL 115135 -->
-      The <code>ReverseProxy</code> now also passes
-      "<code>TE:</code>&nbsp;<code>trailers</code>" request headers
-      through to the backend, as required by the gRPC protocol.
-    </p>
-
-</dl><!-- net/http/httputil -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 78835 -->
-      The new <a href="/pkg/os/#UserCacheDir"><code>UserCacheDir</code></a> function
-      returns the default root directory to use for user-specific cached data.
-    </p>
-
-    <p><!-- CL 94856 -->
-      The new <a href="/pkg/os/#ModeIrregular"><code>ModeIrregular</code></a>
-      is a <a href="/pkg/os/#FileMode"><code>FileMode</code></a> bit to represent
-      that a file is not a regular file, but nothing else is known about it, or that
-      it's not a socket, device, named pipe, symlink, or other file type for which
-      Go has a defined mode bit.
-    </p>
-
-    <p><!-- CL 99337 -->
-      <a href="/pkg/os/#Symlink"><code>Symlink</code></a> now works
-      for unprivileged users on Windows 10 on machines with Developer
-      Mode enabled.
-    </p>
-
-    <p><!-- CL 100077 -->
-      When a non-blocking descriptor is passed
-      to <a href="/pkg/os#NewFile"><code>NewFile</code></a>, the
-      resulting <code>*File</code> will be kept in non-blocking
-      mode. This means that I/O for that <code>*File</code> will use
-      the runtime poller rather than a separate thread, and that
-      the <a href="/pkg/os/#File.SetDeadline"><code>SetDeadline</code></a>
-      methods will work.
-    </p>
-
-</dl><!-- os -->
-
-<dl id="os/signal"><dt><a href="/pkg/os/signal/">os/signal</a></dt>
-  <dd>
-    <p><!-- CL 108376 -->
-      The new <a href="/pkg/os/signal/#Ignored"><code>Ignored</code></a> function reports
-      whether a signal is currently ignored.
-    </p>
-
-</dl><!-- os/signal -->
-
-<dl id="os/user"><dt><a href="/pkg/os/user/">os/user</a></dt>
-  <dd>
-    <p><!-- CL 92456 -->
-      The <code>os/user</code> package can now be built in pure Go
-      mode using the build tag "<code>osusergo</code>",
-      independent of the use of the environment
-      variable <code>CGO_ENABLED=0</code>. Previously the only way to use
-      the package's pure Go implementation was to disable <code>cgo</code>
-      support across the entire program.
-    </p>
-
-</dl><!-- os/user -->
-
-<!-- CL 101715 was reverted -->
-
-<dl id="pkg-runtime"><dt id="runtime-again"><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-
-    <p><!-- CL 70993 -->
-      Setting the <code>GODEBUG=tracebackancestors=<em>N</em></code>
-      environment variable now extends tracebacks with the stacks at
-      which goroutines were created, where <em>N</em> limits the
-      number of ancestor goroutines to report.
-    </p>
-
-</dl><!-- runtime -->
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- CL 102696 -->
-      This release adds a new "allocs" profile type that profiles
-      total number of bytes allocated since the program began
-      (including garbage-collected bytes). This is identical to the
-      existing "heap" profile viewed in <code>-alloc_space</code> mode.
-      Now <code>go test -memprofile=...</code> reports an "allocs" profile
-      instead of "heap" profile.
-    </p>
-
-</dl><!-- runtime/pprof -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 87095 -->
-      The mutex profile now includes reader/writer contention
-      for <a href="/pkg/sync/#RWMutex"><code>RWMutex</code></a>.
-      Writer/writer contention was already included in the mutex
-      profile.
-    </p>
-
-</dl><!-- sync -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 106275 -->
-      On Windows, several fields were changed from <code>uintptr</code> to a new
-      <a href="/pkg/syscall/?GOOS=windows&GOARCH=amd64#Pointer"><code>Pointer</code></a>
-      type to avoid problems with Go's garbage collector. The same change was made
-      to the <a href="https://godoc.org/golang.org/x/sys/windows"><code>golang.org/x/sys/windows</code></a>
-      package. For any code affected, users should first migrate away from the <code>syscall</code>
-      package to the <code>golang.org/x/sys/windows</code> package, and then change
-      to using the <code>Pointer</code>, while obeying the
-      <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code> conversion rules</a>.
-    </p>
-
-    <p><!-- CL 118658 -->
-      On Linux, the <code>flags</code> parameter to
-      <a href="/pkg/syscall/?GOOS=linux&GOARCH=amd64#Faccessat"><code>Faccessat</code></a>
-      is now implemented just as in glibc. In earlier Go releases the
-      flags parameter was ignored.
-    </p>
-
-    <p><!-- CL 118658 -->
-      On Linux, the <code>flags</code> parameter to
-      <a href="/pkg/syscall/?GOOS=linux&GOARCH=amd64#Fchmodat"><code>Fchmodat</code></a>
-      is now validated. Linux's <code>fchmodat</code> doesn't support the <code>flags</code> parameter
-      so we now mimic glibc's behavior and return an error if it's non-zero.
-    </p>
-
-</dl><!-- syscall -->
-
-<dl id="text/scanner"><dt><a href="/pkg/text/scanner/">text/scanner</a></dt>
-  <dd>
-    <p><!-- CL 112037 -->
-      The <a href="/pkg/text/scanner/#Scanner.Scan"><code>Scanner.Scan</code></a> method now returns
-      the <a href="/pkg/text/scanner/#RawString"><code>RawString</code></a> token
-      instead of <a href="/pkg/text/scanner/#String"><code>String</code></a>
-      for raw string literals.
-    </p>
-
-</dl><!-- text/scanner -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 84480 -->
-      Modifying template variables via assignments is now permitted via the <code>=</code> token:
-    </p>
-    <pre>
-  {{ $v := "init" }}
-  {{ if true }}
-    {{ $v = "changed" }}
-  {{ end }}
-  v: {{ $v }} {{/* "changed" */}}</pre>
-
-    <p><!-- CL 95215 -->
-      In previous versions untyped <code>nil</code> values passed to
-      template functions were ignored. They are now passed as normal
-      arguments.
-    </p>
-
-</dl><!-- text/template -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- CL 98157 -->
-	  Parsing of timezones denoted by sign and offset is now
-	  supported. In previous versions, numeric timezone names
-	  (such as <code>+03</code>) were not considered valid, and only
-	  three-letter abbreviations (such as <code>MST</code>) were accepted
-	  when expecting a timezone name.
-    </p>
-</dl><!-- time -->
diff --git a/_content/doc/go1.12.html b/_content/doc/go1.12.html
deleted file mode 100644
index 21d77f1..0000000
--- a/_content/doc/go1.12.html
+++ /dev/null
@@ -1,947 +0,0 @@
-<!--{
-        "Title": "Go 1.12 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.12</h2>
-
-<p>
-  The latest Go release, version 1.12, arrives six months after <a href="go1.11">Go 1.11</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  There are no changes to the language specification.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p><!-- CL 138675 -->
-  The race detector is now supported on <code>linux/arm64</code>.
-</p>
-
-<p id="freebsd">
-  Go 1.12 is the last release that is supported on FreeBSD 10.x, which has
-  already reached end-of-life. Go 1.13 will require FreeBSD 11.2+ or FreeBSD
-  12.0+.
-  FreeBSD 12.0+ requires a kernel with the COMPAT_FREEBSD11 option set (this is the default).
-</p>
-
-<p><!-- CL 146898 -->
-  cgo is now supported on <code>linux/ppc64</code>.
-</p>
-
-<p id="hurd"><!-- CL 146023 -->
-  <code>hurd</code> is now a recognized value for <code>GOOS</code>, reserved
-  for the GNU/Hurd system for use with <code>gccgo</code>.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p>
-  Go's new <code>windows/arm</code> port supports running Go on Windows 10
-  IoT Core on 32-bit ARM chips such as the Raspberry Pi 3.
-</p>
-
-<h3 id="aix">AIX</h3>
-
-<p>
-  Go now supports AIX 7.2 and later on POWER8 architectures (<code>aix/ppc64</code>). External linking, cgo, pprof and the race detector aren't yet supported.
-</p>
-
-<h3 id="darwin">Darwin</h3>
-
-<p>
-  Go 1.12 is the last release that will run on macOS 10.10 Yosemite.
-  Go 1.13 will require macOS 10.11 El Capitan or later.
-</p>
-
-<p><!-- CL 141639 -->
-  <code>libSystem</code> is now used when making syscalls on Darwin,
-  ensuring forward-compatibility with future versions of macOS and iOS.
-  <!-- CL 153338 -->
-  The switch to <code>libSystem</code> triggered additional App Store
-  checks for private API usage. Since it is considered private,
-  <code>syscall.Getdirentries</code> now always fails with
-  <code>ENOSYS</code> on iOS.
-  Additionally, <a href="/pkg/syscall/#Setrlimit"><code>syscall.Setrlimit</code></a>
-  reports <code>invalid</code> <code>argument</code> in places where it historically
-  succeeded. These consequences are not specific to Go and users should expect
-  behavioral parity with <code>libSystem</code>'s implementation going forward.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="vet"><code>go tool vet</code> no longer supported</h3>
-
-<p>
-  The <code>go vet</code> command has been rewritten to serve as the
-  base for a range of different source code analysis tools. See
-  the <a href="https://godoc.org/golang.org/x/tools/go/analysis">golang.org/x/tools/go/analysis</a>
-  package for details. A side-effect is that <code>go tool vet</code>
-  is no longer supported. External tools that use <code>go tool
-  vet</code> must be changed to use <code>go
-  vet</code>. Using <code>go vet</code> instead of <code>go tool
-  vet</code> should work with all supported versions of Go.
-</p>
-
-<p>
-  As part of this change, the experimental <code>-shadow</code> option
-  is no longer available with <code>go vet</code>. Checking for
-  variable shadowing may now be done using
-<pre>
-go get -u golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
-go vet -vettool=$(which shadow)
-</pre>
-</p>
-
-<h3 id="tour">Tour</h3>
-
-<p> <!-- CL 152657 -->
-The Go tour is no longer included in the main binary distribution. To
-run the tour locally, instead of running <code>go</code> <code>tool</code> <code>tour</code>,
-manually install it:
-<pre>
-go get -u golang.org/x/tour
-tour
-</pre>
-</p>
-
-<h3 id="gocache">Build cache requirement</h3>
-
-<p>
-  The <a href="/cmd/go/#hdr-Build_and_test_caching">build cache</a> is now
-  required as a step toward eliminating
-  <code>$GOPATH/pkg</code>. Setting the environment variable
-  <code>GOCACHE=off</code> will cause <code>go</code> commands that write to the
-  cache to fail.
-</p>
-
-<h3 id="binary-only">Binary-only packages</h3>
-
-<p>
-  Go 1.12 is the last release that will support binary-only packages.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p>
-	Go 1.12 will translate the C type <code>EGLDisplay</code> to the Go type <code>uintptr</code>.
-	This change is similar to how Go 1.10 and newer treats Darwin's CoreFoundation
-	and Java's JNI types. See the
-	<a href="/cmd/cgo/#hdr-Special_cases">cgo documentation</a>
-	for more information.
-</p>
-
-<p><!-- CL 152657 -->
-  Mangled C names are no longer accepted in packages that use Cgo. Use the Cgo
-  names instead. For example, use the documented cgo name <code>C.char</code>
-  rather than the mangled name <code>_Ctype_char</code> that cgo generates.
-</p>
-
-<h3 id="modules">Modules</h3>
-
-<p><!-- CL 148517 -->
-  When <code>GO111MODULE</code> is set to <code>on</code>, the <code>go</code>
-  command now supports module-aware operations outside of a module directory,
-  provided that those operations do not need to resolve import paths relative to
-  the current directory or explicitly edit the <code>go.mod</code> file.
-  Commands such as <code>go</code> <code>get</code>,
-  <code>go</code> <code>list</code>, and
-  <code>go</code> <code>mod</code> <code>download</code> behave as if in a
-  module with initially-empty requirements.
-  In this mode, <code>go</code> <code>env</code> <code>GOMOD</code> reports
-  the system's null device (<code>/dev/null</code> or <code>NUL</code>).
-</p>
-
-<p><!-- CL 146382 -->
-  <code>go</code> commands that download and extract modules are now safe to
-  invoke concurrently.
-  The module cache (<code>GOPATH/pkg/mod</code>) must reside in a filesystem that
-  supports file locking.
-</p>
-
-<p><!-- CL 147282, 147281 -->
-  The <code>go</code> directive in a <code>go.mod</code> file now indicates the
-  version of the language used by the files within that module.
-  It will be set to the current release
-  (<code>go</code> <code>1.12</code>) if no existing version is
-  present.
-  If the <code>go</code> directive for a module specifies a
-  version <em>newer</em> than the toolchain in use, the <code>go</code> command
-  will attempt to build the packages regardless, and will note the mismatch only if
-  that build fails.
-</p>
-
-<p><!-- CL 147282, 147281 -->
-  This changed use of the <code>go</code> directive means that if you
-  use Go 1.12 to build a module, thus recording <code>go 1.12</code>
-  in the <code>go.mod</code> file, you will get an error when
-  attempting to build the same module with Go 1.11 through Go 1.11.3.
-  Go 1.11.4 or later will work fine, as will releases older than Go 1.11.
-  If you must use Go 1.11 through 1.11.3, you can avoid the problem by
-  setting the language version to 1.11, using the Go 1.12 go tool,
-  via <code>go mod edit -go=1.11</code>.
-</p>
-
-<p><!-- CL 152739 -->
-  When an import cannot be resolved using the active modules,
-  the <code>go</code> command will now try to use the modules mentioned in the
-  main module's <code>replace</code> directives before consulting the module
-  cache and the usual network sources.
-  If a matching replacement is found but the <code>replace</code> directive does
-  not specify a version, the <code>go</code> command uses a pseudo-version
-  derived from the zero <code>time.Time</code> (such
-  as <code>v0.0.0-00010101000000-000000000000</code>).
-</p>
-
-<h3 id="compiler">Compiler toolchain</h3>
-
-<p><!-- CL 134155, 134156 -->
-  The compiler's live variable analysis has improved. This may mean that
-  finalizers will be executed sooner in this release than in previous
-  releases. If that is a problem, consider the appropriate addition of a
-  <a href="/pkg/runtime/#KeepAlive"><code>runtime.KeepAlive</code></a> call.
-</p>
-
-<p><!-- CL 147361 -->
-  More functions are now eligible for inlining by default, including
-  functions that do nothing but call another function.
-  This extra inlining makes it additionally important to use
-  <a href="/pkg/runtime/#CallersFrames"><code>runtime.CallersFrames</code></a>
-  instead of iterating over the result of
-  <a href="/pkg/runtime/#Callers"><code>runtime.Callers</code></a> directly.
-<pre>
-// Old code which no longer works correctly (it will miss inlined call frames).
-var pcs [10]uintptr
-n := runtime.Callers(1, pcs[:])
-for _, pc := range pcs[:n] {
-	f := runtime.FuncForPC(pc)
-	if f != nil {
-		fmt.Println(f.Name())
-	}
-}
-</pre>
-<pre>
-// New code which will work correctly.
-var pcs [10]uintptr
-n := runtime.Callers(1, pcs[:])
-frames := runtime.CallersFrames(pcs[:n])
-for {
-	frame, more := frames.Next()
-	fmt.Println(frame.Function)
-	if !more {
-		break
-	}
-}
-</pre>
-</p>
-
-<p><!-- CL 153477 -->
-  Wrappers generated by the compiler to implement method expressions
-  are no longer reported
-  by <a href="/pkg/runtime/#CallersFrames"><code>runtime.CallersFrames</code></a>
-  and <a href="/pkg/runtime/#Stack"><code>runtime.Stack</code></a>. They
-  are also not printed in panic stack traces.
-
-  This change aligns the <code>gc</code> toolchain to match
-  the <code>gccgo</code> toolchain, which already elided such wrappers
-  from stack traces.
-
-  Clients of these APIs might need to adjust for the missing
-  frames. For code that must interoperate between 1.11 and 1.12
-  releases, you can replace the method expression <code>x.M</code>
-  with the function literal <code>func (...) { x.M(...) } </code>.
-</p>
-
-<p><!-- CL 144340 -->
-  The compiler now accepts a <code>-lang</code> flag to set the Go language
-  version to use. For example, <code>-lang=go1.8</code> causes the compiler to
-  emit an error if the program uses type aliases, which were added in Go 1.9.
-  Language changes made before Go 1.12 are not consistently enforced.
-</p>
-
-<p><!-- CL 147160 -->
-  The compiler toolchain now uses different conventions to call Go
-  functions and assembly functions. This should be invisible to users,
-  except for calls that simultaneously cross between Go and
-  assembly <em>and</em> cross a package boundary. If linking results
-  in an error like "relocation target not defined for ABIInternal (but
-  is defined for ABI0)", please refer to the
-  <a href="https://github.com/golang/proposal/blob/master/design/27539-internal-abi.md#compatibility">compatibility section</a>
-  of the ABI design document.
-</p>
-
-<p><!-- CL 145179 -->
-  There have been many improvements to the DWARF debug information
-  produced by the compiler, including improvements to argument
-  printing and variable location information.
-</p>
-
-<p><!-- CL 61511 -->
-  Go programs now also maintain stack frame pointers on <code>linux/arm64</code>
-  for the benefit of profiling tools like <code>perf</code>. The frame pointer
-  maintenance has a small run-time overhead that varies but averages around 3%.
-  To build a toolchain that does not use frame pointers, set
-  <code>GOEXPERIMENT=noframepointer</code> when running <code>make.bash</code>.
-</p>
-
-<p><!-- CL 142717 -->
-  The obsolete "safe" compiler mode (enabled by the <code>-u</code> gcflag) has been removed.
-</p>
-
-<h3 id="godoc"><code>godoc</code> and <code>go</code> <code>doc</code></h3>
-
-<p>
-  In Go 1.12, <code>godoc</code> no longer has a command-line interface and
-  is only a web server. Users should use <code>go</code> <code>doc</code>
-  for command-line help output instead. Go 1.12 is the last release that will
-  include the <code>godoc</code> webserver; in Go 1.13 it will be available
-  via <code>go</code> <code>get</code>.
-</p>
-
-<p><!-- CL 141977 -->
-  <code>go</code> <code>doc</code> now supports the <code>-all</code> flag,
-  which will cause it to print all exported APIs and their documentation,
-  as the <code>godoc</code> command line used to do.
-</p>
-
-<p><!-- CL 140959 -->
-  <code>go</code> <code>doc</code> also now includes the <code>-src</code> flag,
-  which will show the target's source code.
-</p>
-
-<h3 id="trace">Trace</h3>
-
-<p><!-- CL 60790 -->
-  The trace tool now supports plotting mutator utilization curves,
-  including cross-references to the execution trace. These are useful
-  for analyzing the impact of the garbage collector on application
-  latency and throughput.
-</p>
-
-<h3 id="assembler">Assembler</h3>
-
-<p><!-- CL 147218 -->
-  On <code>arm64</code>, the platform register was renamed from
-  <code>R18</code> to <code>R18_PLATFORM</code> to prevent accidental
-  use, as the OS could choose to reserve this register.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- CL 138959 -->
-  Go 1.12 significantly improves the performance of sweeping when a
-  large fraction of the heap remains live. This reduces allocation
-  latency immediately following a garbage collection.
-</p>
-
-<p><!-- CL 139719 -->
-  The Go runtime now releases memory back to the operating system more
-  aggressively, particularly in response to large allocations that
-  can't reuse existing heap space.
-</p>
-
-<p><!-- CL 146342, CL 146340, CL 146345, CL 146339, CL 146343, CL 146337, CL 146341, CL 146338 -->
-  The Go runtime's timer and deadline code is faster and scales better
-  with higher numbers of CPUs. In particular, this improves the
-  performance of manipulating network connection deadlines.
-</p>
-
-<p><!-- CL 135395 -->
-  On Linux, the runtime now uses <code>MADV_FREE</code> to release unused
-  memory. This is more efficient but may result in higher reported
-  RSS. The kernel will reclaim the unused data when it is needed.
-  To revert to the Go 1.11 behavior (<code>MADV_DONTNEED</code>), set the
-  environment variable <code>GODEBUG=madvdontneed=1</code>.
-</p>
-
-<p><!-- CL 149578 -->
-  Adding cpu.<em>extension</em>=off to the
-  <a href="/doc/diagnostics.html#godebug">GODEBUG</a> environment
-  variable now disables the use of optional CPU instruction
-  set extensions in the standard library and runtime. This is not
-  yet supported on Windows.
-</p>
-
-<p><!-- CL 158337 -->
-  Go 1.12 improves the accuracy of memory profiles by fixing
-  overcounting of large heap allocations.
-</p>
-
-<p><!-- CL 159717 -->
-  Tracebacks, <code>runtime.Caller</code>,
-  and <code>runtime.Callers</code> no longer include
-  compiler-generated initialization functions.  Doing a traceback
-  during the initialization of a global variable will now show a
-  function named <code>PKG.init.ializers</code>.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="tls_1_3">TLS 1.3</h3>
-
-<p>
-  Go 1.12 adds opt-in support for TLS 1.3 in the <code>crypto/tls</code> package as
-  specified by <a href="https://www.rfc-editor.org/info/rfc8446">RFC 8446</a>. It can
-  be enabled by adding the value <code>tls13=1</code> to the <code>GODEBUG</code>
-  environment variable. It will be enabled by default in Go 1.13.
-</p>
-
-<p>
-  To negotiate TLS 1.3, make sure you do not set an explicit <code>MaxVersion</code> in
-  <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> and run your program with
-  the environment variable <code>GODEBUG=tls13=1</code> set.
-</p>
-
-<p>
-  All TLS 1.2 features except <code>TLSUnique</code> in
-  <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>
-  and renegotiation are available in TLS 1.3 and provide equivalent or
-  better security and performance. Note that even though TLS 1.3 is backwards
-  compatible with previous versions, certain legacy systems might not work
-  correctly when attempting to negotiate it. RSA certificate keys too small
-  to be secure (including 512-bit keys) will not work with TLS 1.3.
-</p>
-
-<p>
-  TLS 1.3 cipher suites are not configurable. All supported cipher suites are
-  safe, and if <code>PreferServerCipherSuites</code> is set in
-  <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> the preference order
-  is based on the available hardware.
-</p>
-
-<p>
-  Early data (also called "0-RTT mode") is not currently supported as a
-  client or server. Additionally, a Go 1.12 server does not support skipping
-  unexpected early data if a client sends it. Since TLS 1.3 0-RTT mode
-  involves clients keeping state regarding which servers support 0-RTT,
-  a Go 1.12 server cannot be part of a load-balancing pool where some other
-  servers do support 0-RTT. If switching a domain from a server that supported
-  0-RTT to a Go 1.12 server, 0-RTT would have to be disabled for at least the
-  lifetime of the issued session tickets before the switch to ensure
-  uninterrupted operation.
-</p>
-
-<p>
-  In TLS 1.3 the client is the last one to speak in the handshake, so if it causes
-  an error to occur on the server, it will be returned on the client by the first
-  <a href="/pkg/crypto/tls/#Conn.Read"><code>Read</code></a>, not by
-  <a href="/pkg/crypto/tls/#Conn.Handshake"><code>Handshake</code></a>. For
-  example, that will be the case if the server rejects the client certificate.
-  Similarly, session tickets are now post-handshake messages, so are only
-  received by the client upon its first
-  <a href="/pkg/crypto/tls/#Conn.Read"><code>Read</code></a>.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<!-- TODO: CL 115677: https://golang.org/cl/115677: cmd/vet: check embedded field tags too -->
-
-<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
-  <dd>
-    <p><!-- CL 149297 -->
-      <code>Reader</code>'s <a href="/pkg/bufio/#Reader.UnreadRune"><code>UnreadRune</code></a> and
-      <a href="/pkg/bufio/#Reader.UnreadByte"><code>UnreadByte</code></a> methods will now return an error
-      if they are called after <a href="/pkg/bufio/#Reader.Peek"><code>Peek</code></a>.
-    </p>
-
-</dl><!-- bufio -->
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-  <dd>
-    <p><!-- CL 137855 -->
-      The new function <a href="/pkg/bytes/#ReplaceAll"><code>ReplaceAll</code></a> returns a copy of
-      a byte slice with all non-overlapping instances of a value replaced by another.
-    </p>
-
-    <p><!-- CL 145098 -->
-      A pointer to a zero-value <a href="/pkg/bytes/#Reader"><code>Reader</code></a> is now
-      functionally equivalent to <a href="/pkg/bytes/#NewReader"><code>NewReader</code></a><code>(nil)</code>.
-      Prior to Go 1.12, the former could not be used as a substitute for the latter in all cases.
-    </p>
-
-</dl><!-- bytes -->
-
-<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
-  <dd>
-    <p><!-- CL 139419 -->
-      A warning will now be printed to standard error the first time
-      <code>Reader.Read</code> is blocked for more than 60 seconds waiting
-      to read entropy from the kernel.
-    </p>
-
-    <p><!-- CL 120055 -->
-      On FreeBSD, <code>Reader</code> now uses the <code>getrandom</code>
-      system call if available, <code>/dev/urandom</code> otherwise.
-    </p>
-
-</dl><!-- crypto/rand -->
-
-<dl id="crypto/rc4"><dt><a href="/pkg/crypto/rc4/">crypto/rc4</a></dt>
-  <dd>
-    <p><!-- CL 130397 -->
-      This release removes the assembly implementations, leaving only
-      the pure Go version. The Go compiler generates code that is
-      either slightly better or slightly worse, depending on the exact
-      CPU. RC4 is insecure and should only be used for compatibility
-      with legacy systems.
-    </p>
-
-</dl><!-- crypto/rc4 -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 143177 -->
-      If a client sends an initial message that does not look like TLS, the server
-      will no longer reply with an alert, and it will expose the underlying
-      <code>net.Conn</code> in the new field <code>Conn</code> of
-      <a href="/pkg/crypto/tls/#RecordHeaderError"><code>RecordHeaderError</code></a>.
-    </p>
-
-</dl><!-- crypto/tls -->
-
-<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
-  <dd>
-    <p><!-- CL 145738 -->
-      A query cursor can now be obtained by passing a
-      <a href="/pkg/database/sql/#Rows"><code>*Rows</code></a>
-      value to the <a href="/pkg/database/sql/#Row.Scan"><code>Row.Scan</code></a> method.
-    </p>
-
-</dl><!-- database/sql -->
-
-<dl id="expvar"><dt><a href="/pkg/expvar/">expvar</a></dt>
-  <dd>
-    <p><!-- CL 139537 -->
-      The new <a href="/pkg/expvar/#Map.Delete"><code>Delete</code></a> method allows
-      for deletion of key/value pairs from a <a href="/pkg/expvar/#Map"><code>Map</code></a>.
-    </p>
-
-</dl><!-- expvar -->
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <p><!-- CL 142737 -->
-      Maps are now printed in key-sorted order to ease testing. The ordering rules are:
-      <ul>
-        <li>When applicable, nil compares low
-        <li>ints, floats, and strings order by <
-        <li>NaN compares less than non-NaN floats
-        <li>bool compares false before true
-        <li>Complex compares real, then imaginary
-        <li>Pointers compare by machine address
-        <li>Channel values compare by machine address
-        <li>Structs compare each field in turn
-        <li>Arrays compare each element in turn
-        <li>Interface values compare first by <code>reflect.Type</code> describing the concrete type
-            and then by concrete value as described in the previous rules.
-      </ul>
-    </p>
-
-    <p><!-- CL 129777 -->
-      When printing maps, non-reflexive key values like <code>NaN</code> were previously
-      displayed as <code>&lt;nil&gt;</code>. As of this release, the correct values are printed.
-    </p>
-
-</dl><!-- fmt -->
-
-<dl id="go/doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
-  <dd>
-    <p><!-- CL 140958 -->
-      To address some outstanding issues in <a href="/cmd/doc/"><code>cmd/doc</code></a>,
-      this package has a new <a href="/pkg/go/doc/#Mode"><code>Mode</code></a> bit,
-      <code>PreserveAST</code>, which controls whether AST data is cleared.
-    </p>
-
-</dl><!-- go/doc -->
-
-<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
-  <dd>
-    <p><!-- CL 134075 -->
-      The <a href="/pkg/go/token#File"><code>File</code></a> type has a new
-      <a href="/pkg/go/token#File.LineStart"><code>LineStart</code></a> field,
-      which returns the position of the start of a given line. This is especially useful
-      in programs that occasionally handle non-Go files, such as assembly, but wish to use
-      the <code>token.Pos</code> mechanism to identify file positions.
-    </p>
-
-</dl><!-- go/token -->
-
-<dl id="image"><dt><a href="/pkg/image/">image</a></dt>
-  <dd>
-    <p><!-- CL 118755 -->
-      The <a href="/pkg/image/#RegisterFormat"><code>RegisterFormat</code></a> function is now safe for concurrent use.
-    </p>
-
-</dl><!-- image -->
-
-<dl id="image/png"><dt><a href="/pkg/image/png/">image/png</a></dt>
-  <dd>
-    <p><!-- CL 134235 -->
-      Paletted images with fewer than 16 colors now encode to smaller outputs.
-    </p>
-
-</dl><!-- image/png -->
-
-<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
-  <dd>
-    <p><!-- CL 139457 -->
-      The new <a href="/pkg/io#StringWriter"><code>StringWriter</code></a> interface wraps the
-      <a href="/pkg/io/#WriteString"><code>WriteString</code></a> function.
-    </p>
-
-</dl><!-- io -->
-
-<dl id="math"><dt><a href="/pkg/math/">math</a></dt>
-  <dd>
-    <p><!-- CL 153059 -->
-      The functions
-      <a href="/pkg/math/#Sin"><code>Sin</code></a>,
-      <a href="/pkg/math/#Cos"><code>Cos</code></a>,
-      <a href="/pkg/math/#Tan"><code>Tan</code></a>,
-      and <a href="/pkg/math/#Sincos"><code>Sincos</code></a> now
-      apply Payne-Hanek range reduction to huge arguments. This
-      produces more accurate answers, but they will not be bit-for-bit
-      identical with the results in earlier releases.
-    </p>
-</dl><!-- math -->
-
-<dl id="math/bits"><dt><a href="/pkg/math/bits/">math/bits</a></dt>
-  <dd>
-    <p><!-- CL 123157 -->
-    New extended precision operations <a href="/pkg/math/bits/#Add"><code>Add</code></a>, <a href="/pkg/math/bits/#Sub"><code>Sub</code></a>, <a href="/pkg/math/bits/#Mul"><code>Mul</code></a>, and <a href="/pkg/math/bits/#Div"><code>Div</code></a> are available in <code>uint</code>, <code>uint32</code>, and <code>uint64</code> versions.
-    </p>
-
-</dl><!-- math/bits -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 146659 -->
-      The
-      <a href="/pkg/net/#Dialer.DualStack"><code>Dialer.DualStack</code></a> setting is now ignored and deprecated;
-      RFC 6555 Fast Fallback ("Happy Eyeballs") is now enabled by default. To disable, set
-      <a href="/pkg/net/#Dialer.FallbackDelay"><code>Dialer.FallbackDelay</code></a> to a negative value.
-    </p>
-
-    <p><!-- CL 107196 -->
-      Similarly, TCP keep-alives are now enabled by default if
-      <a href="/pkg/net/#Dialer.KeepAlive"><code>Dialer.KeepAlive</code></a> is zero.
-      To disable, set it to a negative value.
-    </p>
-
-    <p><!-- CL 113997 -->
-      On Linux, the <a href="http://man7.org/linux/man-pages/man2/splice.2.html"><code>splice</code> system call</a> is now used when copying from a
-      <a href="/pkg/net/#UnixConn"><code>UnixConn</code></a> to a
-      <a href="/pkg/net/#TCPConn"><code>TCPConn</code></a>.
-    </p>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 143177 -->
-      The HTTP server now rejects misdirected HTTP requests to HTTPS servers with a plaintext "400 Bad Request" response.
-    </p>
-
-    <p><!-- CL 130115 -->
-      The new <a href="/pkg/net/http/#Client.CloseIdleConnections"><code>Client.CloseIdleConnections</code></a>
-      method calls the <code>Client</code>'s underlying <code>Transport</code>'s <code>CloseIdleConnections</code>
-      if it has one.
-    </p>
-
-    <p><!-- CL 145398 -->
-      The <a href="/pkg/net/http/#Transport"><code>Transport</code></a> no longer rejects HTTP responses which declare
-      HTTP Trailers but don't use chunked encoding. Instead, the declared trailers are now just ignored.
-    </p>
-
-    <p><!-- CL 152080 --> <!-- CL 151857 -->
-      The <a href="/pkg/net/http/#Transport"><code>Transport</code></a> no longer handles <code>MAX_CONCURRENT_STREAMS</code> values
-      advertised from HTTP/2 servers as strictly as it did during Go 1.10 and Go 1.11. The default behavior is now back
-      to how it was in Go 1.9: each connection to a server can have up to <code>MAX_CONCURRENT_STREAMS</code> requests
-      active and then new TCP connections are created as needed. In Go 1.10 and Go 1.11 the <code>http2</code> package
-      would block and wait for requests to finish instead of creating new connections.
-      To get the stricter behavior back, import the
-      <a href="https://godoc.org/golang.org/x/net/http2"><code>golang.org/x/net/http2</code></a> package
-      directly and set
-      <a href="https://godoc.org/golang.org/x/net/http2#Transport.StrictMaxConcurrentStreams"><code>Transport.StrictMaxConcurrentStreams</code></a> to
-      <code>true</code>.
-    </p>
-
-</dl><!-- net/http -->
-
-<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-  <dd>
-    <p><!-- CL 159157, CL 160178 -->
-      <a href="/pkg/net/url/#Parse"><code>Parse</code></a>,
-      <a href="/pkg/net/url/#ParseRequestURI"><code>ParseRequestURI</code></a>,
-      and
-      <a href="/pkg/net/url/#URL.Parse"><code>URL.Parse</code></a>
-      now return an
-      error for URLs containing ASCII control characters, which includes NULL,
-      tab, and newlines.
-    </p>
-
-</dl><!-- net/url -->
-
-<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-  <dd>
-    <p><!-- CL 146437 -->
-      The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a> now automatically
-      proxies WebSocket requests.
-    </p>
-
-</dl><!-- net/http/httputil -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 125443 -->
-      The new <a href="/pkg/os/#ProcessState.ExitCode"><code>ProcessState.ExitCode</code></a> method
-      returns the process's exit code.
-    </p>
-
-    <p><!-- CL 135075 -->
-      <code>ModeCharDevice</code> has been added to the <code>ModeType</code> bitmask, allowing for
-      <code>ModeDevice | ModeCharDevice</code> to be recovered when masking a
-      <a href="/pkg/os/#FileMode"><code>FileMode</code></a> with <code>ModeType</code>.
-    </p>
-
-    <p><!-- CL 139418 -->
-      The new function <a href="/pkg/os/#UserHomeDir"><code>UserHomeDir</code></a> returns the
-      current user's home directory.
-    </p>
-
-    <p><!-- CL 146020 -->
-      <a href="/pkg/os/#RemoveAll"><code>RemoveAll</code></a> now supports paths longer than 4096 characters
-      on most Unix systems.
-    </p>
-
-    <p><!-- CL 130676 -->
-      <a href="/pkg/os/#File.Sync"><code>File.Sync</code></a> now uses <code>F_FULLFSYNC</code> on macOS
-      to correctly flush the file contents to permanent storage.
-      This may cause the method to run more slowly than in previous releases.
-    </p>
-
-    <p><!--CL 155517 -->
-      <a href="/pkg/os/#File"><code>File</code></a> now supports
-      a <a href="/pkg/os/#File.SyscallConn"><code>SyscallConn</code></a>
-      method returning
-      a <a href="/pkg/syscall/#RawConn"><code>syscall.RawConn</code></a>
-      interface value. This may be used to invoke system-specific
-      operations on the underlying file descriptor.
-    </p>
-
-</dl><!-- os -->
-
-<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
-  <dd>
-    <p><!-- CL 145220 -->
-      The <a href="/pkg/path/filepath/#IsAbs"><code>IsAbs</code></a> function now returns true when passed
-      a reserved filename on Windows such as <code>NUL</code>.
-      <a href="https://docs.microsoft.com/en-us/windows/desktop/fileio/naming-a-file#naming-conventions">List of reserved names.</a>
-    </p>
-
-</dl><!-- path/filepath -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 33572 -->
-      A new <a href="/pkg/reflect#MapIter"><code>MapIter</code></a> type is
-      an iterator for ranging over a map. This type is exposed through the
-      <a href="/pkg/reflect#Value"><code>Value</code></a> type's new
-      <a href="/pkg/reflect#Value.MapRange"><code>MapRange</code></a> method.
-      This follows the same iteration semantics as a range statement, with <code>Next</code>
-      to advance the iterator, and <code>Key</code>/<code>Value</code> to access each entry.
-    </p>
-
-</dl><!-- reflect -->
-
-<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
-  <dd>
-    <p><!-- CL 139784 -->
-      <a href="/pkg/regexp/#Regexp.Copy"><code>Copy</code></a> is no longer necessary
-      to avoid lock contention, so it has been given a partial deprecation comment.
-      <a href="/pkg/regexp/#Regexp.Copy"><code>Copy</code></a>
-      may still be appropriate if the reason for its use is to make two copies with
-      different <a href="/pkg/regexp/#Regexp.Longest"><code>Longest</code></a> settings.
-    </p>
-
-</dl><!-- regexp -->
-
-<dl id="runtime/debug"><dt><a href="/pkg/runtime/debug/">runtime/debug</a></dt>
-  <dd>
-    <p><!-- CL 144220 -->
-      A new <a href="/pkg/runtime/debug/#BuildInfo"><code>BuildInfo</code></a> type
-      exposes the build information read from the running binary, available only in
-      binaries built with module support. This includes the main package path, main
-      module information, and the module dependencies. This type is given through the
-      <a href="/pkg/runtime/debug/#ReadBuildInfo"><code>ReadBuildInfo</code></a> function
-      on <a href="/pkg/runtime/debug/#BuildInfo"><code>BuildInfo</code></a>.
-    </p>
-
-</dl><!-- runtime/debug -->
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-  <dd>
-    <p><!-- CL 137855 -->
-      The new function <a href="/pkg/strings/#ReplaceAll"><code>ReplaceAll</code></a> returns a copy of
-      a string with all non-overlapping instances of a value replaced by another.
-    </p>
-
-    <p><!-- CL 145098 -->
-      A pointer to a zero-value <a href="/pkg/strings/#Reader"><code>Reader</code></a> is now
-      functionally equivalent to <a href="/pkg/strings/#NewReader"><code>NewReader</code></a><code>(nil)</code>.
-      Prior to Go 1.12, the former could not be used as a substitute for the latter in all cases.
-    </p>
-
-    <p><!-- CL 122835 -->
-      The new <a href="/pkg/strings/#Builder.Cap"><code>Builder.Cap</code></a> method returns the capacity of the builder's underlying byte slice.
-    </p>
-
-    <p><!-- CL 131495 -->
-      The character mapping functions <a href="/pkg/strings/#Map"><code>Map</code></a>,
-      <a href="/pkg/strings/#Title"><code>Title</code></a>,
-      <a href="/pkg/strings/#ToLower"><code>ToLower</code></a>,
-      <a href="/pkg/strings/#ToLowerSpecial"><code>ToLowerSpecial</code></a>,
-      <a href="/pkg/strings/#ToTitle"><code>ToTitle</code></a>,
-      <a href="/pkg/strings/#ToTitleSpecial"><code>ToTitleSpecial</code></a>,
-      <a href="/pkg/strings/#ToUpper"><code>ToUpper</code></a>, and
-      <a href="/pkg/strings/#ToUpperSpecial"><code>ToUpperSpecial</code></a>
-      now always guarantee to return valid UTF-8. In earlier releases, if the input was invalid UTF-8 but no character replacements
-      needed to be applied, these routines incorrectly returned the invalid UTF-8 unmodified.
-    </p>
-
-</dl><!-- strings -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 138595 -->
-      64-bit inodes are now supported on FreeBSD 12. Some types have been adjusted accordingly.
-    </p>
-
-    <p><!-- CL 125456 -->
-      The Unix socket
-      (<a href="https://blogs.msdn.microsoft.com/commandline/2017/12/19/af_unix-comes-to-windows/"><code>AF_UNIX</code></a>)
-      address family is now supported for compatible versions of Windows.
-    </p>
-
-    <p><!-- CL 147117 -->
-      The new function  <a href="/pkg/syscall/?GOOS=windows&GOARCH=amd64#Syscall18"><code>Syscall18</code></a>
-      has been introduced for Windows, allowing for calls with up to 18 arguments.
-    </p>
-
-</dl><!-- syscall -->
-
-<dl id="syscall/js"><dt><a href="/pkg/syscall/js/">syscall/js</a></dt>
-  <dd>
-    <p><!-- CL 153559 -->
-    <p>
-      The <code>Callback</code> type and <code>NewCallback</code> function have been renamed;
-      they are now called
-      <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#Func"><code>Func</code></a> and
-      <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#FuncOf"><code>FuncOf</code></a>, respectively.
-      This is a breaking change, but WebAssembly support is still experimental
-      and not yet subject to the
-      <a href="/doc/go1compat">Go 1 compatibility promise</a>. Any code using the
-      old names will need to be updated.
-    </p>
-
-    <p><!-- CL 141644 -->
-      If a type implements the new
-      <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#Wrapper"><code>Wrapper</code></a>
-      interface,
-      <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#ValueOf"><code>ValueOf</code></a>
-      will use it to return the JavaScript value for that type.
-    </p>
-
-    <p><!-- CL 143137 -->
-      The meaning of the zero
-      <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#Value"><code>Value</code></a>
-      has changed. It now represents the JavaScript <code>undefined</code> value
-      instead of the number zero.
-      This is a breaking change, but WebAssembly support is still experimental
-      and not yet subject to the
-      <a href="/doc/go1compat">Go 1 compatibility promise</a>. Any code relying on
-      the zero <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#Value"><code>Value</code></a>
-      to mean the number zero will need to be updated.
-    </p>
-
-    <p><!-- CL 144384 -->
-      The new
-      <a href="/pkg/syscall/js/?GOOS=js&GOARCH=wasm#Value.Truthy"><code>Value.Truthy</code></a>
-      method reports the
-      <a href="https://developer.mozilla.org/en-US/docs/Glossary/Truthy">JavaScript "truthiness"</a>
-      of a given value.
-    </p>
-
-</dl><!-- syscall/js -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- CL 139258 -->
-    The <a href="/cmd/go/#hdr-Testing_flags"><code>-benchtime</code></a> flag now supports setting an explicit iteration count instead of a time when the value ends with an "<code>x</code>". For example, <code>-benchtime=100x</code> runs the benchmark 100 times.
-    </p>
-
-</dl><!-- testing -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 142217 -->
-      When executing a template, long context values are no longer truncated in errors.
-    </p>
-    <p>
-      <code>executing "tmpl" at <.very.deep.context.v...>: map has no entry for key "notpresent"</code>
-    </p>
-    <p>
-      is now
-    </p>
-    <p>
-      <code>executing "tmpl" at <.very.deep.context.value.notpresent>: map has no entry for key "notpresent"</code>
-    </p>
-
-  <dd>
-    <p><!-- CL 143097 -->
-      If a user-defined function called by a template panics, the
-      panic is now caught and returned as an error by
-      the <code>Execute</code> or <code>ExecuteTemplate</code> method.
-    </p>
-</dl><!-- text/template -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- CL 151299 -->
-      The time zone database in <code>$GOROOT/lib/time/zoneinfo.zip</code>
-      has been updated to version 2018i. Note that this ZIP file is
-      only used if a time zone database is not provided by the operating
-      system.
-    </p>
-
-</dl><!-- time -->
-
-<dl id="unsafe"><dt><a href="/pkg/unsafe/">unsafe</a></dt>
-  <dd>
-    <p><!-- CL 146058 -->
-      It is invalid to convert a nil <code>unsafe.Pointer</code> to <code>uintptr</code> and back with arithmetic.
-      (This was already invalid, but will now cause the compiler to misbehave.)
-    </p>
-
-</dl><!-- unsafe -->
diff --git a/_content/doc/go1.13.html b/_content/doc/go1.13.html
deleted file mode 100644
index c5fb9cd..0000000
--- a/_content/doc/go1.13.html
+++ /dev/null
@@ -1,1064 +0,0 @@
-<!--{
-        "Title": "Go 1.13 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.13</h2>
-
-<p>
-  The latest Go release, version 1.13, arrives six months after <a href="go1.12">Go 1.12</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-  As of Go 1.13, the go command by default downloads and authenticates
-  modules using the Go module mirror and Go checksum database run by Google. See
-  <a href="https://proxy.golang.org/privacy">https://proxy.golang.org/privacy</a>
-  for privacy information about these services and the
-  <a href="/cmd/go/#hdr-Module_downloading_and_verification">go command documentation</a>
-  for configuration details including how to disable the use of these servers or use
-  different ones. If you depend on non-public modules, see the
-  <a href="/cmd/go/#hdr-Module_configuration_for_non_public_modules">documentation for configuring your environment</a>.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  Per the <a href="https://github.com/golang/proposal/blob/master/design/19308-number-literals.md">number literal proposal</a>,
-  Go 1.13 supports a more uniform and modernized set of number literal prefixes.
-  <ul>
-    <li>
-      <a href="/ref/spec#Integer_literals">Binary integer literals</a>:
-      The prefix <code>0b</code> or <code>0B</code> indicates a binary integer literal
-      such as <code>0b1011</code>.
-    </li>
-
-    <li>
-      <a href="/ref/spec#Integer_literals">Octal integer literals</a>:
-      The prefix <code>0o</code> or <code>0O</code> indicates an octal integer literal
-      such as <code>0o660</code>.
-      The existing octal notation indicated by a leading <code>0</code> followed by
-      octal digits remains valid.
-    </li>
-
-    <li>
-      <a href="/ref/spec#Floating-point_literals">Hexadecimal floating point literals</a>:
-      The prefix <code>0x</code> or <code>0X</code> may now be used to express the mantissa of a
-      floating-point number in hexadecimal format such as <code>0x1.0p-1021</code>.
-      A hexadecimal floating-point number must always have an exponent, written as the letter
-      <code>p</code> or <code>P</code> followed by an exponent in decimal. The exponent scales
-      the mantissa by 2 to the power of the exponent.
-    </li>
-
-    <li>
-      <a href="/ref/spec#Imaginary_literals">Imaginary literals</a>:
-      The imaginary suffix <code>i</code> may now be used with any (binary, decimal, hexadecimal)
-      integer or floating-point literal.
-    </li>
-
-    <li>
-      Digit separators:
-      The digits of any number literal may now be separated (grouped) using underscores, such as
-      in <code>1_000_000</code>, <code>0b_1010_0110</code>, or <code>3.1415_9265</code>.
-      An underscore may appear between any two digits or the literal prefix and the first digit.
-    </li>
-  </ul>
-</p>
-
-<p>
-  Per the <a href="https://github.com/golang/proposal/blob/master/design/19113-signed-shift-counts.md">signed shift counts proposal</a>
-  Go 1.13 removes the restriction that a <a href="/ref/spec#Operators">shift count</a>
-  must be unsigned. This change eliminates the need for many artificial <code>uint</code> conversions,
-  solely introduced to satisfy this (now removed) restriction of the <code>&lt;&lt;</code> and <code>&gt;&gt;</code> operators.
-</p>
-
-<p>
-  These language changes were implemented by changes to the compiler, and corresponding internal changes to the library
-  packages <code><a href="#go/scanner">go/scanner</a></code> and
-  <code><a href="#text/scanner">text/scanner</a></code> (number literals),
-  and <code><a href="#go/types">go/types</a></code> (signed shift counts).
-</p>
-
-<p>
-  If your code uses modules and your <code>go.mod</code> files specifies a language version, be sure
-  it is set to at least <code>1.13</code> to get access to these language changes.
-  You can do this by editing the <code>go.mod</code> file directly, or you can run
-  <code>go mod edit -go=1.13</code>.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p id="nacl">
-  Go 1.13 is the last release that will run on Native Client (NaCl).
-</p>
-
-<p><!-- CL 170119, CL 168882 -->
-  For <code>GOARCH=wasm</code>, the new environment variable <code>GOWASM</code> takes a comma-separated list of experimental features that the binary gets compiled with.
-  The valid values are documented <a href="/cmd/go/#hdr-Environment_variables">here</a>.
-</p>
-
-<h3 id="aix">AIX</h3>
-
-<p><!-- CL 164003, CL 169120 -->
-  AIX on PPC64 (<code>aix/ppc64</code>) now supports cgo, external
-  linking, and the <code>c-archive</code> and <code>pie</code> build
-  modes.
-</p>
-
-<h3 id="android">Android</h3>
-
-<p><!-- CL 170127 -->
-  Go programs are now compatible with Android 10.
-</p>
-
-<h3 id="darwin">Darwin</h3>
-
-<p>
-  As <a href="go1.12#darwin">announced</a> in the Go 1.12 release notes,
-  Go 1.13 now requires macOS 10.11 El Capitan or later;
-  support for previous versions has been discontinued.
-</p>
-
-<h3 id="freebsd">FreeBSD</h3>
-
-<p>
-  As <a href="go1.12#freebsd">announced</a> in the Go 1.12 release notes,
-  Go 1.13 now requires FreeBSD 11.2 or later;
-  support for previous versions has been discontinued.
-  FreeBSD 12.0 or later requires a kernel with the <code>COMPAT_FREEBSD11</code>
-  option set (this is the default).
-</p>
-
-<h3 id="illumos">Illumos</h3>
-
-<p><!-- CL 174457 -->
-  Go now supports Illumos with <code>GOOS=illumos</code>.
-  The <code>illumos</code> build tag implies the <code>solaris</code>
-  build tag.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p><!-- CL 178977 -->
-  The Windows version specified by internally-linked Windows binaries
-  is now Windows 7 rather than NT 4.0. This was already the minimum
-  required version for Go, but can affect the behavior of system calls
-  that have a backwards-compatibility mode. These will now behave as
-  documented. Externally-linked binaries (any program using cgo) have
-  always specified a more recent Windows version.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="modules">Modules</h3>
-
-<h4 id="proxy-vars">Environment variables</h4>
-
-<p><!-- CL 176580 -->
-  The <a href="/cmd/go/#hdr-Module_support"><code>GO111MODULE</code></a>
-  environment variable continues to default to <code>auto</code>, but
-  the <code>auto</code> setting now activates the module-aware mode of
-  the <code>go</code> command whenever the current working directory contains,
-  or is below a directory containing, a <code>go.mod</code> file — even if the
-  current directory is within <code>GOPATH/src</code>. This change simplifies
-  the migration of existing code within <code>GOPATH/src</code> and the ongoing
-  maintenance of module-aware packages alongside non-module-aware importers.
-</p>
-
-<p><!-- CL 181719 -->
-  The new
-  <a href="/cmd/go/#hdr-Module_configuration_for_non_public_modules"><code>GOPRIVATE</code></a>
-  environment variable indicates module paths that are not publicly available.
-  It serves as the default value for the lower-level <code>GONOPROXY</code>
-  and <code>GONOSUMDB</code> variables, which provide finer-grained control over
-  which modules are fetched via proxy and verified using the checksum database.
-</p>
-
-<p><!-- CL 173441, CL 177958 -->
-  The <a href="/cmd/go/#hdr-Module_downloading_and_verification"><code>GOPROXY</code>
-  environment variable</a> may now be set to a comma-separated list of proxy
-  URLs or the special token <code>direct</code>, and
-  its <a href="#introduction">default value</a> is
-  now <code>https://proxy.golang.org,direct</code>. When resolving a package
-  path to its containing module, the <code>go</code> command will try all
-  candidate module paths on each proxy in the list in succession. An unreachable
-  proxy or HTTP status code other than 404 or 410 terminates the search without
-  consulting the remaining proxies.
-</p>
-
-<p>
-  The new
-  <a href="/cmd/go/#hdr-Module_authentication_failures"><code>GOSUMDB</code></a>
-  environment variable identifies the name, and optionally the public key and
-  server URL, of the database to consult for checksums of modules that are not
-  yet listed in the main module's <code>go.sum</code> file.
-  If <code>GOSUMDB</code> does not include an explicit URL, the URL is chosen by
-  probing the <code>GOPROXY</code> URLs for an endpoint indicating support for
-  the checksum database, falling back to a direct connection to the named
-  database if it is not supported by any proxy. If <code>GOSUMDB</code> is set
-  to <code>off</code>, the checksum database is not consulted and only the
-  existing checksums in the <code>go.sum</code> file are verified.
-</p>
-
-<p>
-  Users who cannot reach the default proxy and checksum database (for example,
-  due to a firewalled or sandboxed configuration) may disable their use by
-  setting <code>GOPROXY</code> to <code>direct</code>, and/or
-  <code>GOSUMDB</code> to <code>off</code>.
-  <a href="#go-env-w"><code>go</code> <code>env</code> <code>-w</code></a>
-  can be used to set the default values for these variables independent of
-  platform:
-</p>
-<pre>
-go env -w GOPROXY=direct
-go env -w GOSUMDB=off
-</pre>
-
-<h4 id="go-get"><code>go</code> <code>get</code></h4>
-
-<p><!-- CL 174099 -->
-  In module-aware mode,
-  <a href="/cmd/go/#hdr-Add_dependencies_to_current_module_and_install_them"><code>go</code> <code>get</code></a>
-  with the <code>-u</code> flag now updates a smaller set of modules that is
-  more consistent with the set of packages updated by
-  <code>go</code> <code>get</code> <code>-u</code> in GOPATH mode.
-  <code>go</code> <code>get</code> <code>-u</code> continues to update the
-  modules and packages named on the command line, but additionally updates only
-  the modules containing the packages <em>imported by</em> the named packages,
-  rather than the transitive module requirements of the modules containing the
-  named packages.
-</p>
-
-<p>
-  Note in particular that <code>go</code> <code>get</code> <code>-u</code>
-  (without additional arguments) now updates only the transitive imports of the
-  package in the current directory. To instead update all of the packages
-  transitively imported by the main module (including test dependencies), use
-  <code>go</code> <code>get</code> <code>-u</code> <code>all</code>.
-</p>
-
-<p><!-- CL 177879 -->
-  As a result of the above changes to
-  <code>go</code> <code>get</code> <code>-u</code>, the
-  <code>go</code> <code>get</code> subcommand no longer supports
-  the <code>-m</code> flag, which caused <code>go</code> <code>get</code> to
-  stop before loading packages. The <code>-d</code> flag remains supported, and
-  continues to cause <code>go</code> <code>get</code> to stop after downloading
-  the source code needed to build dependencies of the named packages.
-</p>
-
-<p><!-- CL 177677 -->
-  By default, <code>go</code> <code>get</code> <code>-u</code> in module mode
-  upgrades only non-test dependencies, as in GOPATH mode. It now also accepts
-  the <code>-t</code> flag, which (as in GOPATH mode)
-  causes <code>go</code> <code>get</code> to include the packages imported
-  by <em>tests of</em> the packages named on the command line.
-</p>
-
-<p><!-- CL 167747 -->
-  In module-aware mode, the <code>go</code> <code>get</code> subcommand now
-  supports the version suffix <code>@patch</code>. The <code>@patch</code>
-  suffix indicates that the named module, or module containing the named
-  package, should be updated to the highest patch release with the same
-  major and minor versions as the version found in the build list.
-</p>
-
-<p><!-- CL 184440 -->
-  If a module passed as an argument to <code>go</code> <code>get</code>
-  without a version suffix is already required at a newer version than the
-  latest released version, it will remain at the newer version. This is
-  consistent with the behavior of the <code>-u</code> flag for module
-  dependencies. This prevents unexpected downgrades from pre-release versions.
-  The new version suffix <code>@upgrade</code> explicitly requests this
-  behavior. <code>@latest</code> explicitly requests the latest version
-  regardless of the current version.
-</p>
-
-<h4 id="version-validation">Version validation</h4><!-- CL 181881 -->
-
-<p>
-  When extracting a module from a version control system, the <code>go</code>
-  command now performs additional validation on the requested version string.
-</p>
-
-<p>
-  The <code>+incompatible</code> version annotation bypasses the requirement
-  of <a href="/cmd/go/#hdr-Module_compatibility_and_semantic_versioning">semantic
-  import versioning</a> for repositories that predate the introduction of
-  modules. The <code>go</code> command now verifies that such a version does not
-  include an explicit <code>go.mod</code> file.
-</p>
-
-<p>
-  The <code>go</code> command now verifies the mapping
-  between <a href="/cmd/go/#hdr-Pseudo_versions">pseudo-versions</a> and
-  version-control metadata. Specifically:
-  <ul>
-    <li>The version prefix must be of the form <code>vX.0.0</code>, or derived
-    from a tag on an ancestor of the named revision, or derived from a tag that
-    includes <a href="https://semver.org/#spec-item-10">build metadata</a> on
-    the named revision itself.</li>
-
-    <li>The date string must match the UTC timestamp of the revision.</li>
-
-    <li>The short name of the revision must use the same number of characters as
-    what the <code>go</code> command would generate. (For SHA-1 hashes as used
-    by <code>git</code>, a 12-digit prefix.)</li>
-  </ul>
-</p>
-
-<p>
-  If a <code>require</code> directive in the
-  <a href="/cmd/go/#hdr-The_main_module_and_the_build_list">main module</a> uses
-  an invalid pseudo-version, it can usually be corrected by redacting the
-  version to just the commit hash and re-running a <code>go</code> command, such
-  as <code>go</code> <code>list</code> <code>-m</code> <code>all</code>
-  or <code>go</code> <code>mod</code> <code>tidy</code>. For example,
-</p>
-<pre>require github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c</pre>
-<p>can be redacted to</p>
-<pre>require github.com/docker/docker e7b5f7dbe98c</pre>
-<p>which currently resolves to</p>
-<pre>require github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c</pre>
-
-<p>
-  If one of the transitive dependencies of the main module requires an invalid
-  version or pseudo-version, the invalid version can be replaced with a valid
-  one using a
-  <a href="/cmd/go/#hdr-The_go_mod_file"><code>replace</code> directive</a> in
-  the <code>go.mod</code> file of the main module. If the replacement is a
-  commit hash, it will be resolved to the appropriate pseudo-version as above.
-  For example,
-</p>
-<pre>replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker e7b5f7dbe98c</pre>
-<p>currently resolves to</p>
-<pre>replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c</pre>
-
-<h3 id="go-command">Go command</h3>
-
-<p id="go-env-w"><!-- CL 171137 -->
-  The <a href="/cmd/go/#hdr-Environment_variables"><code>go</code> <code>env</code></a>
-  command now accepts a <code>-w</code> flag to set the per-user default value
-  of an environment variable recognized by the
-  <code>go</code> command, and a corresponding <code>-u</code> flag to unset a
-  previously-set default. Defaults set via
-  <code>go</code> <code>env</code> <code>-w</code> are stored in the
-  <code>go/env</code> file within
-  <a href="/pkg/os/#UserConfigDir"><code>os.UserConfigDir()</code></a>.
-</p>
-
-<p id="go-version-exe"><!-- CL 173343 -->
-  The <a href="/cmd/go/#hdr-Print_Go_version">
-  <code>go</code> <code>version</code></a> command now accepts arguments naming
-  executables and directories. When invoked on an executable,
-  <code>go</code> <code>version</code> prints the version of Go used to build
-  the executable. If the <code>-m</code> flag is used,
-  <code>go</code> <code>version</code> prints the executable's embedded module
-  version information, if available. When invoked on a directory,
-  <code>go</code> <code>version</code> prints information about executables
-  contained in the directory and its subdirectories.
-</p>
-
-<p id="trimpath"><!-- CL 173345 -->
-  The new <a href="/cmd/go/#hdr-Compile_packages_and_dependencies"><code>go</code>
-  <code>build</code> flag</a> <code>-trimpath</code> removes all file system paths
-  from the compiled executable, to improve build reproducibility.
-</p>
-
-<p id="o-dir"><!-- CL 167679 -->
-  If the <code>-o</code> flag passed to <code>go</code> <code>build</code>
-  refers to an existing directory, <code>go</code> <code>build</code> will now
-  write executable files within that directory for <code>main</code> packages
-  matching its package arguments.
-</p>
-
-<p id="comma-separated-tags"><!-- CL 173438 -->
-  The <code>go</code> <code>build</code> flag <code>-tags</code> now takes a
-  comma-separated list of build tags, to allow for multiple tags in
-  <a href="/cmd/go/#hdr-Environment_variables"><code>GOFLAGS</code></a>. The
-  space-separated form is deprecated but still recognized and will be maintained.
-</p>
-
-<p id="go-generate-tag"><!-- CL 175983 -->
-  <a href="/cmd/go/#hdr-Generate_Go_files_by_processing_source"><code>go</code>
-  <code>generate</code></a> now sets the <code>generate</code> build tag so that
-  files may be searched for directives but ignored during build.
-</p>
-
-<p id="binary-only"><!-- CL 165746 -->
-  As <a href="/doc/go1.12#binary-only">announced</a> in the Go 1.12 release
-  notes, binary-only packages are no longer supported. Building a binary-only
-  package (marked with a <code>//go:binary-only-package</code> comment) now
-  results in an error.
-</p>
-
-<h3 id="compiler">Compiler toolchain</h3>
-
-<p><!-- CL 170448 -->
-  The compiler has a new implementation of escape analysis that is
-  more precise. For most Go code should be an improvement (in other
-  words, more Go variables and expressions allocated on the stack
-  instead of heap). However, this increased precision may also break
-  invalid code that happened to work before (for example, code that
-  violates
-  the <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code>
-  safety rules</a>). If you notice any regressions that appear
-  related, the old escape analysis pass can be re-enabled
-  with <code>go</code> <code>build</code> <code>-gcflags=all=-newescape=false</code>.
-  The option to use the old escape analysis will be removed in a
-  future release.
-</p>
-
-<p><!-- CL 161904 -->
-  The compiler no longer emits floating point or complex constants
-  to <code>go_asm.h</code> files. These have always been emitted in a
-  form that could not be used as numeric constant in assembly code.
-</p>
-
-<h3 id="assembler">Assembler</h3>
-
-<p><!-- CL 157001 -->
-  The assembler now supports many of the atomic instructions
-  introduced in ARM v8.1.
-</p>
-
-<h3 id="gofmt">gofmt</h3>
-
-<p>
-  <code>gofmt</code> (and with that <code>go fmt</code>) now canonicalizes
-  number literal prefixes and exponents to use lower-case letters, but
-  leaves hexadecimal digits alone. This improves readability when using the new octal prefix
-  (<code>0O</code> becomes <code>0o</code>), and the rewrite is applied consistently.
-  <code>gofmt</code> now also removes unnecessary leading zeroes from a decimal integer
-  imaginary literal. (For backwards-compatibility, an integer imaginary literal
-  starting with <code>0</code> is considered a decimal, not an octal number.
-  Removing superfluous leading zeroes avoids potential confusion.)
-  For instance, <code>0B1010</code>, <code>0XabcDEF</code>, <code>0O660</code>,
-  <code>1.2E3</code>, and <code>01i</code> become <code>0b1010</code>, <code>0xabcDEF</code>,
-  <code>0o660</code>, <code>1.2e3</code>, and <code>1i</code> after applying <code>gofmt</code>.
-</p>
-
-<h3 id="godoc"><code>godoc</code> and <code>go</code> <code>doc</code></h3>
-
-<p><!-- CL 174322 -->
-  The <code>godoc</code> webserver is no longer included in the main binary distribution.
-  To run the <code>godoc</code> webserver locally, manually install it first:
-<pre>
-go get golang.org/x/tools/cmd/godoc
-godoc
-</pre>
-</p>
-
-<p><!-- CL 177797 -->
-  The
-  <a href="/cmd/go/#hdr-Show_documentation_for_package_or_symbol"><code>go</code> <code>doc</code></a>
-  command now always includes the package clause in its output, except for
-  commands. This replaces the previous behavior where a heuristic was used,
-  causing the package clause to be omitted under certain conditions.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- CL 161477 -->
-  Out of range panic messages now include the index that was out of
-  bounds and the length (or capacity) of the slice. For
-  example, <code>s[3]</code> on a slice of length 1 will panic with
-  "runtime error: index out of range [3] with length 1".
-</p>
-
-<p><!-- CL 171758 -->
-  This release improves performance of most uses of <code>defer</code>
-  by 30%.
-</p>
-
-<p><!-- CL 142960 -->
-  The runtime is now more aggressive at returning memory to the
-  operating system to make it available to co-tenant applications.
-  Previously, the runtime could retain memory for five or more minutes
-  following a spike in the heap size. It will now begin returning it
-  promptly after the heap shrinks. However, on many OSes, including
-  Linux, the OS itself reclaims memory lazily, so process RSS will not
-  decrease until the system is under memory pressure.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="tls_1_3">TLS 1.3</h3>
-
-<p>
-  As announced in Go 1.12, Go 1.13 enables support for TLS 1.3 in the
-  <code>crypto/tls</code> package by default. It can be disabled by adding the
-  value <code>tls13=0</code> to the <code>GODEBUG</code>
-  environment variable. The opt-out will be removed in Go 1.14.
-</p>
-
-<p>
-  See <a href="/doc/go1.12#tls_1_3">the Go 1.12 release notes</a> for important
-  compatibility information.
-</p>
-
-<h3 id="crypto/ed25519"><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></h3>
-
-<p><!-- CL 174945, 182698 -->
-  The new <a href="/pkg/crypto/ed25519/"><code>crypto/ed25519</code></a>
-  package implements the Ed25519 signature
-  scheme. This functionality was previously provided by the
-  <a href="https://godoc.org/golang.org/x/crypto/ed25519"><code>golang.org/x/crypto/ed25519</code></a>
-  package, which becomes a wrapper for
-  <code>crypto/ed25519</code> when used with Go 1.13+.
-</p>
-
-<h3 id="error_wrapping">Error wrapping</h3>
-
-<p><!-- CL 163558, 176998 -->
-  Go 1.13 contains support for error wrapping, as first proposed in
-  the <a href="https://go.googlesource.com/proposal/+/master/design/29934-error-values.md">
-  Error Values proposal</a> and discussed on <a href="/issue/29934">the
-  associated issue</a>.
-</p>
-<p>
-  An error <code>e</code> can <em>wrap</em> another error <code>w</code> by providing
-  an <code>Unwrap</code> method that returns <code>w</code>. Both <code>e</code>
-  and <code>w</code> are available to programs, allowing <code>e</code> to provide
-  additional context to <code>w</code> or to reinterpret it while still allowing
-  programs to make decisions based on <code>w</code>.
-</p>
-<p>
-  To support wrapping, <a href="#fmt"><code>fmt.Errorf</code></a> now has a <code>%w</code>
-  verb for creating wrapped errors, and three new functions in
-  the <a href="#errors"><code>errors</code></a> package (
-  <a href="/pkg/errors/#Unwrap"><code>errors.Unwrap</code></a>,
-  <a href="/pkg/errors/#Is"><code>errors.Is</code></a> and
-  <a href="/pkg/errors/#As"><code>errors.As</code></a>) simplify unwrapping
-  and inspecting wrapped errors.
-</p>
-<p>
-  For more information, read the <a href="/pkg/errors/"><code>errors</code> package
-  documentation</a>, or see
-  the <a href="/wiki/ErrorValueFAQ">Error Value FAQ</a>.
-  There will soon be a blog post as well.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-  <dd>
-    <p>
-      The new <a href="/pkg/bytes/#ToValidUTF8"><code>ToValidUTF8</code></a> function returns a
-      copy of a given byte slice with each run of invalid UTF-8 byte sequences replaced by a given slice.
-    </p>
-
-</dl><!-- bytes -->
-
-<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
-  <dd>
-    <p><!-- CL 169080 -->
-    The formatting of contexts returned by <a href="/pkg/context/#WithValue"><code>WithValue</code></a> no longer depends on <code>fmt</code> and will not stringify in the same way. Code that depends on the exact previous stringification might be affected.
-    </p>
-
-</dl><!-- context -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p>
-      Support for SSL version 3.0 (SSLv3) <a href="/issue/32716">
-      is now deprecated and will be removed in Go 1.14</a>. Note that SSLv3 is the
-      <a href="https://tools.ietf.org/html/rfc7568">cryptographically broken</a>
-      protocol predating TLS.
-    </p>
-
-    <p>
-      SSLv3 was always disabled by default, other than in Go 1.12, when it was
-      mistakenly enabled by default server-side. It is now again disabled by
-      default. (SSLv3 was never supported client-side.)
-    </p>
-
-    <p><!-- CL 177698 -->
-      Ed25519 certificates are now supported in TLS versions 1.2 and 1.3.
-    </p>
-
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 175478 -->
-      Ed25519 keys are now supported in certificates and certificate requests
-      according to <a href="https://www.rfc-editor.org/info/rfc8410">RFC 8410</a>, as well as by the
-      <a href="/pkg/crypto/x509/#ParsePKCS8PrivateKey"><code>ParsePKCS8PrivateKey</code></a>,
-      <a href="/pkg/crypto/x509/#MarshalPKCS8PrivateKey"><code>MarshalPKCS8PrivateKey</code></a>,
-      and <a href="/pkg/crypto/x509/#ParsePKIXPublicKey"><code>ParsePKIXPublicKey</code></a> functions.
-    </p>
-
-    <p><!-- CL 169238 -->
-      The paths searched for system roots now include <code>/etc/ssl/cert.pem</code>
-      to support the default location in Alpine Linux 3.7+.
-    </p>
-
-</dl><!-- crypto/x509 -->
-
-<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
-  <dd>
-    <p><!-- CL 170699 -->
-      The new <a href="/pkg/database/sql/#NullTime"><code>NullTime</code></a> type represents a <code>time.Time</code> that may be null.
-    </p>
-
-    <p><!-- CL 174178 -->
-      The new  <a href="/pkg/database/sql/#NullInt32"><code>NullInt32</code></a> type represents an <code>int32</code> that may be null.
-    </p>
-
-</dl><!-- database/sql -->
-
-<dl id="debug/dwarf"><dt><a href="/pkg/debug/dwarf/">debug/dwarf</a></dt>
-  <dd>
-    <p><!-- CL 158797 -->
-      The <a href="/pkg/debug/dwarf/#Data.Type"><code>Data.Type</code></a>
-      method no longer panics if it encounters an unknown DWARF tag in
-      the type graph. Instead, it represents that component of the
-      type with
-      an <a href="/pkg/debug/dwarf/#UnsupportedType"><code>UnsupportedType</code></a>
-      object.
-    </p>
-
-</dl><!-- debug/dwarf -->
-
-<dl id="errors"><dt><a href="/pkg/errors/">errors</a></dt>
-  <dd>
-    <!-- CL 163558 -->
-    <p>
-      The new function <a href="/pkg/errors/#As"><code>As</code></a> finds the first
-      error in a given error’s chain (sequence of wrapped errors)
-      that matches a given target’s type, and if so, sets the target to that error value.
-    </p>
-    <p>
-      The new function <a href="/pkg/errors/#Is"><code>Is</code></a> reports whether a given error value matches an
-      error in another’s chain.
-    </p>
-    <p>
-      The new function <a href="/pkg/errors/#Unwrap"><code>Unwrap</code></a> returns the result of calling
-      <code>Unwrap</code> on a given error, if one exists.
-    </p>
-
-</dl><!-- errors -->
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <!-- CL 160245 -->
-    <p>
-      The printing verbs <code>%x</code> and <code>%X</code> now format floating-point and
-      complex numbers in hexadecimal notation, in lower-case and upper-case respectively.
-    </p>
-
-    <!-- CL 160246 -->
-    <p>
-      The new printing verb <code>%O</code> formats integers in base 8, emitting the <code>0o</code> prefix.
-    </p>
-
-    <!-- CL 160247 -->
-    <p>
-      The scanner now accepts hexadecimal floating-point values, digit-separating underscores
-      and leading <code>0b</code> and <code>0o</code> prefixes.
-      See the <a href="#language">Changes to the language</a> for details.
-    </p>
-
-    <!-- CL 176998 -->
-    <p>The <a href="/pkg/fmt/#Errorf"><code>Errorf</code></a> function
-      has a new verb, <code>%w</code>, whose operand must be an error.
-      The error returned from <code>Errorf</code> will have an
-      <code>Unwrap</code> method which returns the operand of <code>%w</code>.
-    </p>
-
-</dl><!-- fmt -->
-
-
-<dl id="go/scanner"><dt><a href="/pkg/go/scanner/">go/scanner</a></dt>
-  <dd>
-    <p><!-- CL 175218 -->
-      The scanner has been updated to recognize the new Go number literals, specifically
-      binary literals with <code>0b</code>/<code>0B</code> prefix, octal literals with <code>0o</code>/<code>0O</code> prefix,
-      and floating-point numbers with hexadecimal mantissa. The imaginary suffix <code>i</code> may now be used with any number
-      literal, and underscores may be used as digit separators for grouping.
-      See the <a href="#language">Changes to the language</a> for details.
-  </p>
-
-  </dl><!-- go/scanner -->
-
-<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
-  <dd>
-    <p>
-      The type-checker has been updated to follow the new rules for integer shifts.
-      See the <a href="#language">Changes to the language</a> for details.
-    </p>
-
-</dl><!-- go/types -->
-
-
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 175218 -->
-      When using a <code>&lt;script&gt;</code> tag with "module" set as the
-      type attribute, code will now be interpreted as <a href="https://html.spec.whatwg.org/multipage/scripting.html#the-script-element:module-script-2">JavaScript module script</a>.
-    </p>
-
-</dl><!-- html/template -->
-
-<dl id="log"><dt><a href="/pkg/log/">log</a></dt>
-  <dd>
-    <p><!-- CL 168920 -->
-      The new <a href="/pkg/log/#Writer"><code>Writer</code></a> function returns the output destination for the standard logger.
-    </p>
-
-</dl><!-- log -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- CL 160682 -->
-      The new <a href="/pkg/math/big/#Rat.SetUint64"><code>Rat.SetUint64</code></a> method sets the <code>Rat</code> to a <code>uint64</code> value.
-    </p>
-
-    <p><!-- CL 166157 -->
-      For <a href="/pkg/math/big/#Float.Parse"><code>Float.Parse</code></a>, if base is 0, underscores
-      may be used between digits for readability.
-      See the <a href="#language">Changes to the language</a> for details.
-    </p>
-
-    <p><!-- CL 166157 -->
-      For <a href="/pkg/math/big/#Int.SetString"><code>Int.SetString</code></a>, if base is 0, underscores
-      may be used between digits for readability.
-      See the <a href="#language">Changes to the language</a> for details.
-    </p>
-
-    <p><!-- CL 168237 -->
-      <a href="/pkg/math/big/#Rat.SetString"><code>Rat.SetString</code></a> now accepts non-decimal floating point representations.
-    </p>
-
-</dl><!-- math/big -->
-
-<dl id="math/bits"><dt><a href="/pkg/math/bits/">math/bits</a></dt>
-  <dd>
-    <p><!-- CL 178177 -->
-      The execution time of <a href="/pkg/math/bits/#Add"><code>Add</code></a>,
-      <a href="/pkg/math/bits/#Sub"><code>Sub</code></a>,
-      <a href="/pkg/math/bits/#Mul"><code>Mul</code></a>,
-      <a href="/pkg/math/bits/#RotateLeft"><code>RotateLeft</code></a>, and
-      <a href="/pkg/math/bits/#ReverseBytes"><code>ReverseBytes</code></a> is now
-      guaranteed to be independent of the inputs.
-    </p>
-
-</dl><!-- math/bits -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 156366 -->
-      On Unix systems where <code>use-vc</code> is set in <code>resolv.conf</code>, TCP is used for DNS resolution.
-    </p>
-
-    <p><!-- CL 170678 -->
-      The new field <a href="/pkg/net/#ListenConfig.KeepAlive"><code>ListenConfig.KeepAlive</code></a>
-      specifies the keep-alive period for network connections accepted by the listener.
-      If this field is 0 (the default) TCP keep-alives will be enabled.
-      To disable them, set it to a negative value.
-    </p>
-    <p>
-      Note that the error returned from I/O on a connection that was
-      closed by a keep-alive timeout will have a
-      <code>Timeout</code> method that returns <code>true</code> if called.
-      This can make a keep-alive error difficult to distinguish from
-      an error returned due to a missed deadline as set by the
-      <a href="/pkg/net/#Conn"><code>SetDeadline</code></a>
-      method and similar methods.
-      Code that uses deadlines and checks for them with
-      the <code>Timeout</code> method or
-      with <a href="/pkg/os/#IsTimeout"><code>os.IsTimeout</code></a>
-      may want to disable keep-alives, or
-      use <code>errors.Is(syscall.ETIMEDOUT)</code> (on Unix systems)
-      which will return true for a keep-alive timeout and false for a
-      deadline timeout.
-    </p>
-
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 76410 -->
-      The new fields <a href="/pkg/net/http/#Transport.WriteBufferSize"><code>Transport.WriteBufferSize</code></a>
-      and <a href="/pkg/net/http/#Transport.ReadBufferSize"><code>Transport.ReadBufferSize</code></a>
-      allow one to specify the sizes of the write and read buffers for a <a href="/pkg/net/http/#Transport"><code>Transport</code></a>.
-      If either field is zero, a default size of 4KB is used.
-    </p>
-
-    <p><!-- CL 130256 -->
-      The new field <a href="/pkg/net/http/#Transport.ForceAttemptHTTP2"><code>Transport.ForceAttemptHTTP2</code></a>
-      controls whether HTTP/2 is enabled when a non-zero <code>Dial</code>, <code>DialTLS</code>, or <code>DialContext</code>
-      func or <code>TLSClientConfig</code> is provided.
-    </p>
-
-    <p><!-- CL 140357 -->
-      <a href="/pkg/net/http/#Transport.MaxConnsPerHost"><code>Transport.MaxConnsPerHost</code></a> now works
-      properly with HTTP/2.
-    </p>
-
-    <p><!-- CL 154383 -->
-      <a href="/pkg/net/http/#TimeoutHandler"><code>TimeoutHandler</code></a>'s
-      <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a> now implements the
-      <a href="/pkg/net/http/#Pusher"><code>Pusher</code></a> interface.
-    </p>
-
-    <p><!-- CL 157339 -->
-      The <code>StatusCode</code> <code>103</code> <code>"Early Hints"</code> has been added.
-    </p>
-
-    <p><!-- CL 163599 -->
-    <a href="/pkg/net/http/#Transport"><code>Transport</code></a> now uses the <a href="/pkg/net/http/#Request.Body"><code>Request.Body</code></a>'s
-    <a href="/pkg/io/#ReaderFrom"><code>io.ReaderFrom</code></a> implementation if available, to optimize writing the body.
-    </p>
-
-    <p><!-- CL 167017 -->
-      On encountering unsupported transfer-encodings, <a href="/pkg/net/http/#Server"><code>http.Server</code></a> now
-      returns a "501 Unimplemented" status as mandated by the HTTP specification <a href="https://tools.ietf.org/html/rfc7230#section-3.3.1">RFC 7230 Section 3.3.1</a>.
-    </p>
-
-    <p><!-- CL 167681 -->
-      The new <a href="/pkg/net/http/#Server"><code>Server</code></a> fields
-      <a href="/pkg/net/http/#Server.BaseContext"><code>BaseContext</code></a> and
-      <a href="/pkg/net/http/#Server.ConnContext"><code>ConnContext</code></a>
-      allow finer control over the <a href="/pkg/context/#Context"><code>Context</code></a> values provided to requests and connections.
-    </p>
-
-    <p><!-- CL 167781 -->
-      <a href="/pkg/net/http/#DetectContentType"><code>http.DetectContentType</code></a> now correctly detects RAR signatures, and can now also detect RAR v5 signatures.
-    </p>
-
-    <p><!-- CL 173658 -->
-      The new <a href="/pkg/net/http/#Header"><code>Header</code></a> method
-      <a href="/pkg/net/http/#Header.Clone"><code>Clone</code></a> returns a copy of the receiver.
-    </p>
-
-    <p><!-- CL 174324 -->
-      A new function <a href="/pkg/net/http/#NewRequestWithContext"><code>NewRequestWithContext</code></a> has been added and it
-      accepts a <a href="/pkg/context/#Context"><code>Context</code></a> that controls the entire lifetime of
-      the created outgoing <a href="/pkg/net/http/#Request"><code>Request</code></a>, suitable for use with
-      <a href="/pkg/net/http/#Client.Do"><code>Client.Do</code></a> and <a href="/pkg/net/http/#Transport.RoundTrip"><code>Transport.RoundTrip</code></a>.
-    </p>
-
-    <p><!-- CL 179457 -->
-      The <a href="/pkg/net/http/#Transport"><code>Transport</code></a> no longer logs errors when servers
-      gracefully shut down idle connections using a <code>"408 Request Timeout"</code> response.
-    </p>
-
-</dl><!-- net/http -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 160877 -->
-      The new <a href="/pkg/os/#UserConfigDir"><code>UserConfigDir</code></a> function
-      returns the default directory to use for user-specific configuration data.
-    </p>
-
-    <p><!-- CL 166578 -->
-      If a <a href="/pkg/os/#File"><code>File</code></a> is opened using the O_APPEND flag, its
-      <a href="/pkg/os/#File.WriteAt"><code>WriteAt</code></a> method will always return an error.
-    </p>
-
-</dl><!-- os -->
-
-<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
-  <dd>
-    <p><!-- CL 174318 -->
-      On Windows, the environment for a <a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a> always inherits the
-      <code>%SYSTEMROOT%</code> value of the parent process unless the
-      <a href="/pkg/os/exec/#Cmd.Env"><code>Cmd.Env</code></a> field includes an explicit value for it.
-    </p>
-
-</dl><!-- os/exec -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 171337 -->
-      The new <a href="/pkg/reflect/#Value.IsZero"><code>Value.IsZero</code></a> method reports whether a <code>Value</code> is the zero value for its type.
-    </p>
-
-    <p><!-- CL 174531 -->
-      The <a href="/pkg/reflect/#MakeFunc"><code>MakeFunc</code></a> function now allows assignment conversions on returned values, instead of requiring exact type match. This is particularly useful when the type being returned is an interface type, but the value actually returned is a concrete value implementing that type.
-    </p>
-
-</dl><!-- reflect -->
-
-<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-    <p> <!-- CL 167780 -->
-      Tracebacks, <a href="/pkg/runtime/#Caller"><code>runtime.Caller</code></a>,
-      and <a href="/pkg/runtime/#Callers"><code>runtime.Callers</code></a> now refer to the function that
-      initializes the global variables of <code>PKG</code>
-      as <code>PKG.init</code> instead of <code>PKG.init.ializers</code>.
-    </p>
-
-</dl><!-- runtime -->
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p><!-- CL 160243 -->
-       For <a href="/pkg/strconv/#ParseFloat"><code>strconv.ParseFloat</code></a>,
-       <a href="/pkg/strconv/#ParseInt"><code>strconv.ParseInt</code></a>
-       and <a href="/pkg/strconv/#ParseUint"><code>strconv.ParseUint</code></a>,
-       if base is 0, underscores may be used between digits for readability.
-       See the <a href="#language">Changes to the language</a> for details.
-    </p>
-
-</dl><!-- strconv -->
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-  <dd>
-    <p><!-- CL 142003 -->
-      The new <a href="/pkg/strings/#ToValidUTF8"><code>ToValidUTF8</code></a> function returns a
-      copy of a given string with each run of invalid UTF-8 byte sequences replaced by a given string.
-    </p>
-
-</dl><!-- strings -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 148958, CL 148959, CL 152697, CL 152698 -->
-      The fast paths of <a href="/pkg/sync/#Mutex.Lock"><code>Mutex.Lock</code></a>, <a href="/pkg/sync/#Mutex.Unlock"><code>Mutex.Unlock</code></a>,
-      <a href="/pkg/sync/#RWMutex.Lock"><code>RWMutex.Lock</code></a>, <a href="/pkg/sync/#Mutex.RUnlock"><code>RWMutex.RUnlock</code></a>, and
-      <a href="/pkg/sync/#Once.Do"><code>Once.Do</code></a> are now inlined in their callers.
-      For the uncontended cases on amd64, these changes make <a href="/pkg/sync/#Once.Do"><code>Once.Do</code></a> twice as fast, and the
-      <a href="/pkg/sync/#Mutex"><code>Mutex</code></a>/<a href="/pkg/sync/#RWMutex"><code>RWMutex</code></a> methods up to 10% faster.
-    </p>
-
-    <p><!-- CL 166960 -->
-      Large <a href="/pkg/sync/#Pool"><code>Pool</code></a> no longer increase stop-the-world pause times.
-    </p>
-
-    <p><!-- CL 166961 -->
-      <code>Pool</code> no longer needs to be completely repopulated after every GC. It now retains some objects across GCs,
-      as opposed to releasing all objects, reducing load spikes for heavy users of <code>Pool</code>.
-    </p>
-
-</dl><!-- sync -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 168479 -->
-      Uses of <code>_getdirentries64</code> have been removed from
-      Darwin builds, to allow Go binaries to be uploaded to the macOS
-      App Store.
-    </p>
-
-    <p><!-- CL 174197 -->
-      The new <code>ProcessAttributes</code> and <code>ThreadAttributes</code> fields in
-      <a href="/pkg/syscall/?GOOS=windows#SysProcAttr"><code>SysProcAttr</code></a> have been introduced for Windows,
-      exposing security settings when creating new processes.
-    </p>
-
-    <p><!-- CL 174320 -->
-      <code>EINVAL</code> is no longer returned in zero
-      <a href="/pkg/syscall/?GOOS=windows#Chmod"><code>Chmod</code></a> mode on Windows.
-    </p>
-
-    <p><!-- CL 191337 -->
-      Values of type <code>Errno</code> can be tested against error values in
-      the <code>os</code> package,
-      like <a href="/pkg/os/#ErrExist"><code>ErrExist</code></a>, using
-      <a href="/pkg/errors/#Is"><code>errors.Is</code></a>.
-    </p>
-
-</dl><!-- syscall -->
-
-<dl id="syscall/js"><dt><a href="/pkg/syscall/js/">syscall/js</a></dt>
-  <dd>
-    <p><!-- CL 177537 -->
-      <code>TypedArrayOf</code> has been replaced by
-      <a href="/pkg/syscall/js/#CopyBytesToGo"><code>CopyBytesToGo</code></a> and
-      <a href="/pkg/syscall/js/#CopyBytesToJS"><code>CopyBytesToJS</code></a> for copying bytes
-      between a byte slice and a <code>Uint8Array</code>.
-    </p>
-
-</dl><!-- syscall/js -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- CL 112155 -->
-      When running benchmarks, <a href="/pkg/testing/#B.N"><code>B.N</code></a> is no longer rounded.
-    </p>
-
-    <p><!-- CL 166717 -->
-      The new method <a href="/pkg/testing/#B.ReportMetric"><code>B.ReportMetric</code></a> lets users report
-      custom benchmark metrics and override built-in metrics.
-    </p>
-
-    <p><!-- CL 173722 -->
-      Testing flags are now registered in the new <a href="/pkg/testing/#Init"><code>Init</code></a> function,
-      which is invoked by the generated <code>main</code> function for the test.
-      As a result, testing flags are now only registered when running a test binary,
-      and packages that call <code>flag.Parse</code> during package initialization may cause tests to fail.
-    </p>
-
-</dl><!-- testing -->
-
-<dl id="text/scanner"><dt><a href="/pkg/text/scanner/">text/scanner</a></dt>
-  <dd>
-    <p><!-- CL 183077 -->
-      The scanner has been updated to recognize the new Go number literals, specifically
-      binary literals with <code>0b</code>/<code>0B</code> prefix, octal literals with <code>0o</code>/<code>0O</code> prefix,
-      and floating-point numbers with hexadecimal mantissa.
-      Also, the new <a href="/pkg/text/scanner/#AllowDigitSeparators"><code>AllowDigitSeparators</code></a>
-      mode allows number literals to contain underscores as digit separators (off by default for backwards-compatibility).
-      See the <a href="#language">Changes to the language</a> for details.
-    </p>
-
-</dl><!-- text/scanner -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 161762 -->
-      The new <a href="/pkg/text/template/#hdr-Functions">slice function</a>
-      returns the result of slicing its first argument by the following arguments.
-    </p>
-
-</dl><!-- text/template -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- CL 122876 -->
-      Day-of-year is now supported by <a href="/pkg/time/#Time.Format"><code>Format</code></a>
-      and <a href="/pkg/time/#Parse"><code>Parse</code></a>.
-    </p>
-
-    <p><!-- CL 167387 -->
-      The new <a href="/pkg/time/#Duration"><code>Duration</code></a> methods
-      <a href="/pkg/time/#Duration.Microseconds"><code>Microseconds</code></a> and
-      <a href="/pkg/time/#Duration.Milliseconds"><code>Milliseconds</code></a> return
-      the duration as an integer count of their respectively named units.
-    </p>
-
-</dl><!-- time -->
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-  <dd>
-    <p>
-      The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-      support throughout the system has been upgraded from Unicode 10.0 to
-      <a href="http://www.unicode.org/versions/Unicode11.0.0/">Unicode 11.0</a>,
-      which adds 684 new characters, including seven new scripts, and 66 new emoji.
-    </p>
-
-</dl><!-- unicode -->
diff --git a/_content/doc/go1.14.html b/_content/doc/go1.14.html
deleted file mode 100644
index 14c78d2..0000000
--- a/_content/doc/go1.14.html
+++ /dev/null
@@ -1,929 +0,0 @@
-<!--{
-        "Title": "Go 1.14 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.14</h2>
-
-<p>
-  The latest Go release, version 1.14, arrives six months after <a href="go1.13">Go 1.13</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-  Module support in the <code>go</code> command is now ready for production use,
-  and we encourage all users to <a href="https://blog.golang.org/migrating-to-go-modules">migrate to Go
-  modules for dependency management</a>. If you are unable to migrate due to a problem in the Go
-  toolchain, please ensure that the problem has an
-  <a href="/issue?q=is%3Aissue+is%3Aopen+label%3Amodules">open issue</a>
-  filed. (If the issue is not on the <code>Go1.15</code> milestone, please let us
-  know why it prevents you from migrating so that we can prioritize it
-  appropriately.)
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  Per the <a href="https://github.com/golang/proposal/blob/master/design/6977-overlapping-interfaces.md">overlapping interfaces proposal</a>,
-  Go 1.14 now permits embedding of interfaces with overlapping method sets:
-  methods from an embedded interface may have the same names and identical signatures
-  as methods already present in the (embedding) interface. This solves problems that typically
-  (but not exclusively) occur with diamond-shaped embedding graphs.
-  Explicitly declared methods in an interface must remain
-  <a href="https://tip.golang.org/ref/spec#Uniqueness_of_identifiers">unique</a>, as before.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="darwin">Darwin</h3>
-
-<p>
-  Go 1.14 is the last release that will run on macOS 10.11 El Capitan.
-  Go 1.15 will require macOS 10.12 Sierra or later.
-</p>
-
-<p><!-- golang.org/issue/34749 -->
-  Go 1.14 is the last Go release to support 32-bit binaries on
-  macOS (the <code>darwin/386</code> port). They are no longer
-  supported by macOS, starting with macOS 10.15 (Catalina).
-  Go continues to support the 64-bit <code>darwin/amd64</code> port.
-</p>
-
-<p><!-- golang.org/issue/34751 -->
-  Go 1.14 will likely be the last Go release to support 32-bit
-  binaries on iOS, iPadOS, watchOS, and tvOS
-  (the <code>darwin/arm</code> port). Go continues to support the
-  64-bit <code>darwin/arm64</code> port.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p><!-- CL 203601 -->
-  Go binaries on Windows now
-  have <a href="https://docs.microsoft.com/en-us/windows/win32/memory/data-execution-prevention">DEP
-  (Data Execution Prevention)</a> enabled.
-</p>
-
-<p><!-- CL 202439 -->
-  On Windows, creating a file
-  via <a href="/pkg/os#CreateFile"><code>os.OpenFile</code></a> with
-  the <a href="/pkg/os/#O_CREATE"><code>os.O_CREATE</code></a> flag, or
-  via <a href="/pkg/syscall#Open"><code>syscall.Open</code></a> with
-  the <a href="/pkg/syscall#O_CREAT"><code>syscall.O_CREAT</code></a>
-  flag, will now create the file as read-only if the
-  bit <code>0o200</code> (owner write permission) is not set in the
-  permission argument. This makes the behavior on Windows more like
-  that on Unix systems.
-</p>
-
-<h3 id="wasm">WebAssembly</h3>
-
-<p><!-- CL 203600 -->
-  JavaScript values referenced from Go via <code>js.Value</code>
-  objects can now be garbage collected.
-</p>
-
-<p><!-- CL 203600 -->
-  <code>js.Value</code> values can no longer be compared using
-  the <code>==</code> operator, and instead must be compared using
-  their <code>Equal</code> method.
-</p>
-
-<p><!-- CL 203600 -->
-  <code>js.Value</code> now
-  has <code>IsUndefined</code>, <code>IsNull</code>,
-  and <code>IsNaN</code> methods.
-</p>
-
-<h3 id="riscv">RISC-V</h3>
-
-<p><!-- Issue 27532 -->
-  Go 1.14 contains experimental support for 64-bit RISC-V on Linux
-  (<code>GOOS=linux</code>, <code>GOARCH=riscv64</code>). Be aware
-  that performance, assembly syntax stability, and possibly
-  correctness are a work in progress.
-</p>
-
-<h3 id="freebsd">FreeBSD</h3>
-
-<p><!-- CL 199919 -->
-  Go now supports the 64-bit ARM architecture on FreeBSD 12.0 or later (the
-  <code>freebsd/arm64</code> port).
-</p>
-
-<h3 id="nacl">Native Client (NaCl)</h3>
-
-<p><!-- golang.org/issue/30439 -->
-  As <a href="go1.13#ports">announced</a> in the Go 1.13 release notes,
-  Go 1.14 drops support for the Native Client platform (<code>GOOS=nacl</code>).
-</p>
-
-<h3 id="illumos">Illumos</h3>
-
-<p><!-- CL 203758 -->
-  The runtime now respects zone CPU caps
-  (the <code>zone.cpu-cap</code> resource control)
-  for <code>runtime.NumCPU</code> and the default value
-  of <code>GOMAXPROCS</code>.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="go-command">Go command</h3>
-
-<h4 id="vendor">Vendoring</h4>
-<!-- golang.org/issue/33848 -->
-
-<p>
-  When the main module contains a top-level <code>vendor</code> directory and
-  its <code>go.mod</code> file specifies <code>go</code> <code>1.14</code> or
-  higher, the <code>go</code> command now defaults to <code>-mod=vendor</code>
-  for operations that accept that flag. A new value for that flag,
-  <code>-mod=mod</code>, causes the <code>go</code> command to instead load
-  modules from the module cache (as when no <code>vendor</code> directory is
-  present).
-</p>
-
-<p>
-  When <code>-mod=vendor</code> is set (explicitly or by default), the
-  <code>go</code> command now verifies that the main module's
-  <code>vendor/modules.txt</code> file is consistent with its
-  <code>go.mod</code> file.
-</p>
-
-<p>
-  <code>go</code> <code>list</code> <code>-m</code> no longer silently omits
-  transitive dependencies that do not provide packages in
-  the <code>vendor</code> directory. It now fails explicitly if
-  <code>-mod=vendor</code> is set and information is requested for a module not
-  mentioned in <code>vendor/modules.txt</code>.
-</p>
-
-<h4 id="go-flags">Flags</h4>
-
-<p><!-- golang.org/issue/32502, golang.org/issue/30345 -->
-  The <code>go</code> <code>get</code> command no longer accepts
-  the <code>-mod</code> flag. Previously, the flag's setting either
-  <a href="/issue/30345">was ignored</a> or
-  <a href="/issue/32502">caused the build to fail</a>.
-</p>
-
-<p><!-- golang.org/issue/33326 -->
-  <code>-mod=readonly</code> is now set by default when the <code>go.mod</code>
-  file is read-only and no top-level <code>vendor</code> directory is present.
-</p>
-
-<p><!-- golang.org/issue/31481 -->
-  <code>-modcacherw</code> is a new flag that instructs the <code>go</code>
-  command to leave newly-created directories in the module cache at their
-  default permissions rather than making them read-only.
-  The use of this flag makes it more likely that tests or other tools will
-  accidentally add files not included in the module's verified checksum.
-  However, it allows the use of <code>rm</code> <code>-rf</code>
-  (instead of <code>go</code> <code>clean</code> <code>-modcache</code>)
-  to remove the module cache.
-</p>
-
-<p><!-- golang.org/issue/34506 -->
-  <code>-modfile=file</code> is a new flag that instructs the <code>go</code>
-  command to read (and possibly write) an alternate <code>go.mod</code> file
-  instead of the one in the module root directory. A file
-  named <code>go.mod</code> must still be present in order to determine the
-  module root directory, but it is not accessed. When <code>-modfile</code> is
-  specified, an alternate <code>go.sum</code> file is also used: its path is
-  derived from the <code>-modfile</code> flag by trimming the <code>.mod</code>
-  extension and appending <code>.sum</code>.
-</p>
-
-<h4 id="go-env-vars">Environment variables</h4>
-
-<p><!-- golang.org/issue/32966 -->
-  <code>GOINSECURE</code> is a new environment variable that instructs
-  the <code>go</code> command to not require an HTTPS connection, and to skip
-  certificate validation, when fetching certain modules directly from their
-  origins. Like the existing <code>GOPRIVATE</code> variable, the value
-  of <code>GOINSECURE</code> is a comma-separated list of glob patterns.
-</p>
-
-<h4 id="commands-outside-modules">Commands outside modules</h4>
-
-<p><!-- golang.org/issue/32027 -->
-  When module-aware mode is enabled explicitly (by setting
-  <code>GO111MODULE=on</code>), most module commands have more
-  limited functionality if no <code>go.mod</code> file is present. For
-  example, <code>go</code> <code>build</code>,
-  <code>go</code> <code>run</code>, and other build commands can only build
-  packages in the standard library and packages specified as <code>.go</code>
-  files on the command line.
-</p>
-
-<p>
-  Previously, the <code>go</code> command would resolve each package path
-  to the latest version of a module but would not record the module path
-  or version. This resulted in <a href="/issue/32027">slow,
-  non-reproducible builds</a>.
-</p>
-
-<p>
-  <code>go</code> <code>get</code> continues to work as before, as do
-  <code>go</code> <code>mod</code> <code>download</code> and
-  <code>go</code> <code>list</code> <code>-m</code> with explicit versions.
-</p>
-
-<h4 id="incompatible-versions"><code>+incompatible</code> versions</h4>
-<!-- golang.org/issue/34165 -->
-
-<p>
-  If the latest version of a module contains a <code>go.mod</code> file,
-  <code>go</code> <code>get</code> will no longer upgrade to an
-  <a href="/cmd/go/#hdr-Module_compatibility_and_semantic_versioning">incompatible</a>
-  major version of that module unless such a version is requested explicitly
-  or is already required.
-  <code>go</code> <code>list</code> also omits incompatible major versions
-  for such a module when fetching directly from version control, but may
-  include them if reported by a proxy.
-</p>
-
-
-<h4 id="go.mod"><code>go.mod</code> file maintenance</h4>
-<!-- golang.org/issue/34822 -->
-
-<p>
-  <code>go</code> commands other than
-  <code>go</code> <code>mod</code> <code>tidy</code> no longer
-  remove a <code>require</code> directive that specifies a version of an indirect dependency
-  that is already implied by other (transitive) dependencies of the main
-  module.
-</p>
-
-<p>
-  <code>go</code> commands other than
-  <code>go</code> <code>mod</code> <code>tidy</code> no longer
-  edit the <code>go.mod</code> file if the changes are only cosmetic.
-</p>
-
-<p>
-  When <code>-mod=readonly</code> is set, <code>go</code> commands will no
-  longer fail due to a missing <code>go</code> directive or an erroneous
-  <code>//&nbsp;indirect</code> comment.
-</p>
-
-<h4 id="module-downloading">Module downloading</h4>
-
-<p><!-- golang.org/issue/26092 -->
-  The <code>go</code> command now supports Subversion repositories in module mode.
-</p>
-
-<p><!-- golang.org/issue/30748 -->
-  The <code>go</code> command now includes snippets of plain-text error messages
-  from module proxies and other HTTP servers.
-  An error message will only be shown if it is valid UTF-8 and consists of only
-  graphic characters and spaces.
-</p>
-
-<h4 id="go-test">Testing</h4>
-
-<p><!-- golang.org/issue/24929 -->
-  <code>go test -v</code> now streams <code>t.Log</code> output as it happens,
-  rather than at the end of all tests.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- CL 190098 -->
-  This release improves the performance of most uses
-  of <code>defer</code> to incur almost zero overhead compared to
-  calling the deferred function directly.
-  As a result, <code>defer</code> can now be used in
-  performance-critical code without overhead concerns.
-</p>
-
-<p><!-- CL 201760, CL 201762 and many others -->
-  Goroutines are now asynchronously preemptible.
-  As a result, loops without function calls no longer potentially
-  deadlock the scheduler or significantly delay garbage collection.
-  This is supported on all platforms except <code>windows/arm</code>,
-  <code>darwin/arm</code>, <code>js/wasm</code>, and
-  <code>plan9/*</code>.
-</p>
-
-<p>
-  A consequence of the implementation of preemption is that on Unix
-  systems, including Linux and macOS systems, programs built with Go
-  1.14 will receive more signals than programs built with earlier
-  releases.
-  This means that programs that use packages
-  like <a href="/pkg/syscall/"><code>syscall</code></a>
-  or <a href="https://godoc.org/golang.org/x/sys/unix"><code>golang.org/x/sys/unix</code></a>
-  will see more slow system calls fail with <code>EINTR</code> errors.
-  Those programs will have to handle those errors in some way, most
-  likely looping to try the system call again.  For more
-  information about this
-  see <a href="http://man7.org/linux/man-pages/man7/signal.7.html"><code>man
-  7 signal</code></a> for Linux systems or similar documentation for
-  other systems.
-</p>
-
-<p><!-- CL 201765, CL 195701 and many others -->
-  The page allocator is more efficient and incurs significantly less
-  lock contention at high values of <code>GOMAXPROCS</code>.
-  This is most noticeable as lower latency and higher throughput for
-  large allocations being done in parallel and at a high rate.
-</p>
-
-<p><!-- CL 171844 and many others -->
-  Internal timers, used by
-  <a href="/pkg/time/#After"><code>time.After</code></a>,
-  <a href="/pkg/time/#Tick"><code>time.Tick</code></a>,
-  <a href="/pkg/net/#Conn"><code>net.Conn.SetDeadline</code></a>,
-  and friends, are more efficient, with less lock contention and fewer
-  context switches.
-  This is a performance improvement that should not cause any user
-  visible changes.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- CL 162237 -->
-  This release adds <code>-d=checkptr</code> as a compile-time option
-  for adding instrumentation to check that Go code is following
-  <code>unsafe.Pointer</code> safety rules dynamically.
-  This option is enabled by default (except on Windows) with
-  the <code>-race</code> or <code>-msan</code> flags, and can be
-  disabled with <code>-gcflags=all=-d=checkptr=0</code>.
-  Specifically, <code>-d=checkptr</code> checks the following:
-</p>
-
-<ol>
-  <li>
-    When converting <code>unsafe.Pointer</code> to <code>*T</code>,
-    the resulting pointer must be aligned appropriately
-    for <code>T</code>.
-  </li>
-  <li>
-    If the result of pointer arithmetic points into a Go heap object,
-    one of the <code>unsafe.Pointer</code>-typed operands must point
-    into the same object.
-  </li>
-</ol>
-
-<p>
-  Using <code>-d=checkptr</code> is not currently recommended on
-  Windows because it causes false alerts in the standard library.
-</p>
-
-<p><!-- CL 204338 -->
-  The compiler can now emit machine-readable logs of key optimizations
-  using the <code>-json</code> flag, including inlining, escape
-  analysis, bounds-check elimination, and nil-check elimination.
-</p>
-
-<p><!-- CL 196959 -->
-  Detailed escape analysis diagnostics (<code>-m=2</code>) now work again.
-  This had been dropped from the new escape analysis implementation in
-  the previous release.
-</p>
-
-<p><!-- CL 196217 -->
-  All Go symbols in macOS binaries now begin with an underscore,
-  following platform conventions.
-</p>
-
-<p><!-- CL 202117 -->
-  This release includes experimental support for compiler-inserted
-  coverage instrumentation for fuzzing.
-  See <a href="/issue/14565">issue 14565</a> for more
-  details.
-  This API may change in future releases.
-</p>
-
-<p><!-- CL 174704 --><!-- CL 196784 -->
-  Bounds check elimination now uses information from slice creation and can
-  eliminate checks for indexes with types smaller than <code>int</code>.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="hash/maphash">New byte sequence hashing package</h3>
-
-<p> <!-- golang.org/issue/28322, CL 186877 -->
-  Go 1.14 includes a new package,
-  <a href="/pkg/hash/maphash/"><code>hash/maphash</code></a>,
-  which provides hash functions on byte sequences.
-  These hash functions are intended to be used to implement hash tables or
-  other data structures that need to map arbitrary strings or byte
-  sequences to a uniform distribution on unsigned 64-bit integers.
-</p>
-<p>
-  The hash functions are collision-resistant but not cryptographically secure.
-</p>
-<p>
-  The hash value of a given byte sequence is consistent within a
-  single process, but will be different in different processes.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 191976 -->
-      Support for SSL version 3.0 (SSLv3) has been removed. Note that SSLv3 is the
-      <a href="https://tools.ietf.org/html/rfc7568">cryptographically broken</a>
-      protocol predating TLS.
-    </p>
-
-    <p><!-- CL 191999 -->
-      TLS 1.3 can't be disabled via the <code>GODEBUG</code> environment
-      variable anymore. Use the
-      <a href="/pkg/crypto/tls/#Config.MaxVersion"><code>Config.MaxVersion</code></a>
-      field to configure TLS versions.
-    </p>
-
-    <p><!-- CL 205059 -->
-      When multiple certificate chains are provided through the
-      <a href="/pkg/crypto/tls/#Config.Certificates"><code>Config.Certificates</code></a>
-      field, the first one compatible with the peer is now automatically
-      selected. This allows for example providing an ECDSA and an RSA
-      certificate, and letting the package automatically select the best one.
-      Note that the performance of this selection is going to be poor unless the
-      <a href="/pkg/crypto/tls/#Certificate.Leaf"><code>Certificate.Leaf</code></a>
-      field is set. The
-      <a href="/pkg/crypto/tls/#Config.NameToCertificate"><code>Config.NameToCertificate</code></a>
-      field, which only supports associating a single certificate with
-      a give name, is now deprecated and should be left as <code>nil</code>.
-      Similarly the
-      <a href="/pkg/crypto/tls/#Config.BuildNameToCertificate"><code>Config.BuildNameToCertificate</code></a>
-      method, which builds the <code>NameToCertificate</code> field
-      from the leaf certificates, is now deprecated and should not be
-      called.
-    </p>
-
-    <p><!-- CL 175517 -->
-      The new <a href="/pkg/crypto/tls/#CipherSuites"><code>CipherSuites</code></a>
-      and <a href="/pkg/crypto/tls/#InsecureCipherSuites"><code>InsecureCipherSuites</code></a>
-      functions return a list of currently implemented cipher suites.
-      The new <a href="/pkg/crypto/tls/#CipherSuiteName"><code>CipherSuiteName</code></a>
-      function returns a name for a cipher suite ID.
-    </p>
-
-    <p><!-- CL 205058, 205057 -->
-      The new <a href="/pkg/crypto/tls/#ClientHelloInfo.SupportsCertificate">
-      <code>(*ClientHelloInfo).SupportsCertificate</code></a> and
-      <a href="/pkg/crypto/tls/#CertificateRequestInfo.SupportsCertificate">
-      <code>(*CertificateRequestInfo).SupportsCertificate</code></a>
-      methods expose whether a peer supports a certain certificate.
-    </p>
-
-    <p><!-- CL 174329 -->
-      The <code>tls</code> package no longer supports the legacy Next Protocol
-      Negotiation (NPN) extension and now only supports ALPN. In previous
-      releases it supported both. There are no API changes and applications
-      should function identically as before. Most other clients and servers have
-      already removed NPN support in favor of the standardized ALPN.
-    </p>
-
-    <p><!-- CL 205063, 205062 -->
-      RSA-PSS signatures are now used when supported in TLS 1.2 handshakes. This
-      won't affect most applications, but custom
-      <a href="/pkg/crypto/tls/#Certificate.PrivateKey"><code>Certificate.PrivateKey</code></a>
-      implementations that don't support RSA-PSS signatures will need to use the new
-      <a href="/pkg/crypto/tls/#Certificate.SupportedSignatureAlgorithms">
-      <code>Certificate.SupportedSignatureAlgorithms</code></a>
-      field to disable them.
-    </p>
-
-    <p><!-- CL 205059, 205059 -->
-      <a href="/pkg/crypto/tls/#Config.Certificates"><code>Config.Certificates</code></a> and
-      <a href="/pkg/crypto/tls/#Config.GetCertificate"><code>Config.GetCertificate</code></a>
-      can now both be nil if
-      <a href="/pkg/crypto/tls/#Config.GetConfigForClient"><code>Config.GetConfigForClient</code></a>
-      is set. If the callbacks return neither certificates nor an error, the
-      <code>unrecognized_name</code> is now sent.
-    </p>
-
-    <p><!-- CL 205058 -->
-      The new <a href="/pkg/crypto/tls/#CertificateRequestInfo.Version"><code>CertificateRequestInfo.Version</code></a>
-      field provides the TLS version to client certificates callbacks.
-    </p>
-
-    <p><!-- CL 205068 -->
-      The new <code>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256</code> and
-      <code>TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256</code> constants use
-      the final names for the cipher suites previously referred to as
-      <code>TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305</code> and
-      <code>TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305</code>.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 204046 -->
-      <a href="/pkg/crypto/x509/#Certificate.CreateCRL"><code>Certificate.CreateCRL</code></a>
-      now supports Ed25519 issuers.
-    </p>
-  </dd>
-</dl>
-
-<dl id="debug/dwarf"><dt><a href="/pkg/debug/dwarf/">debug/dwarf</a></dt>
-  <dd>
-    <p><!-- CL 175138 -->
-      The <code>debug/dwarf</code> package now supports reading DWARF
-      version 5.
-    </p>
-    <p>
-      The new
-      method <a href="/pkg/debug/dwarf/#Data.AddSection"><code>(*Data).AddSection</code></a>
-      supports adding arbitrary new DWARF sections from the input file
-      to the DWARF <code>Data</code>.
-    </p>
-
-    <p><!-- CL 192698 -->
-      The new
-      method <a href="/pkg/debug/dwarf/#Reader.ByteOrder"><code>(*Reader).ByteOrder</code></a>
-      returns the byte order of the current compilation unit.
-      This may be used to interpret attributes that are encoded in the
-      native ordering, such as location descriptions.
-    </p>
-
-    <p><!-- CL 192699 -->
-      The new
-      method <a href="/pkg/debug/dwarf/#LineReader.Files"><code>(*LineReader).Files</code></a>
-      returns the file name table from a line reader.
-      This may be used to interpret the value of DWARF attributes such
-      as <code>AttrDeclFile</code>.
-    </p>
-  </dd>
-</dl><!-- debug/dwarf -->
-
-<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
-  <dd>
-    <p><!-- CL 126624 -->
-      <a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a>
-      now supports ASN.1 string type BMPString, represented by the new
-      <a href="/pkg/encoding/asn1/#TagBMPString"><code>TagBMPString</code></a>
-      constant.
-    </p>
-  </dd>
-</dl><!-- encoding/asn1 -->
-
-<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
-  <dd>
-    <p><!-- CL 200677 -->
-      The <a href="/pkg/encoding/json/#Decoder"><code>Decoder</code></a>
-      type supports a new
-      method <a href="/pkg/encoding/json/#Decoder.InputOffset"><code>InputOffset</code></a>
-      that returns the input stream byte offset of the current
-      decoder position.
-    </p>
-
-    <p><!-- CL 200217 -->
-      <a href="/pkg/encoding/json/#Compact"><code>Compact</code></a> no longer
-      escapes the <code>U+2028</code> and <code>U+2029</code> characters, which
-      was never a documented feature. For proper escaping, see <a
-      href="/pkg/encoding/json/#HTMLEscape"><code>HTMLEscape</code></a>.
-    </p>
-
-    <p><!-- CL 195045 -->
-      <a href="/pkg/encoding/json/#Number"><code>Number</code></a> no longer
-      accepts invalid numbers, to follow the documented behavior more closely.
-      If a program needs to accept invalid numbers like the empty string,
-      consider wrapping the type with <a href="/pkg/encoding/json/#Unmarshaler"><code>Unmarshaler</code></a>.
-    </p>
-
-    <p><!-- CL 200237 -->
-      <a href="/pkg/encoding/json/#Unmarshal"><code>Unmarshal</code></a>
-      can now support map keys with string underlying type which implement
-      <a href="/pkg/encoding/#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>.
-    </p>
-  </dd>
-</dl><!-- encoding/json -->
-
-<dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt>
-  <dd>
-    <p><!-- CL 203820, 211657 -->
-      The <a href="/pkg/go/build/#Context"><code>Context</code></a>
-      type has a new field <code>Dir</code> which may be used to set
-      the working directory for the build.
-      The default is the current directory of the running process.
-      In module mode, this is used to locate the main module.
-    </p>
-  </dd>
-</dl><!-- go/build -->
-
-<dl id="go/doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
-  <dd>
-    <p><!-- CL 204830 -->
-      The new
-      function <a href="/pkg/go/doc/#NewFromFiles"><code>NewFromFiles</code></a>
-      computes package documentation from a list
-      of <code>*ast.File</code>'s and associates examples with the
-      appropriate package elements.
-      The new information is available in a new <code>Examples</code>
-      field
-      in the <a href="/pkg/go/doc/#Package"><code>Package</code></a>, <a href="/pkg/go/doc/#Type"><code>Type</code></a>,
-      and <a href="/pkg/go/doc/#Func"><code>Func</code></a> types, and a
-      new <a href="/pkg/go/doc/#Example.Suffix"><code>Suffix</code></a>
-      field in
-      the <a href="/pkg/go/doc/#Example"><code>Example</code></a>
-      type.
-    </p>
-  </dd>
-</dl><!-- go/doc -->
-
-<dl id="io/ioutil"><dt><a href="/pkg/io/ioutil/">io/ioutil</a></dt>
-  <dd>
-    <p><!-- CL 198488 -->
-      <a href="/pkg/io/ioutil/#TempDir"><code>TempDir</code></a> can now create directories
-      whose names have predictable prefixes and suffixes.
-      As with <a href="/pkg/io/ioutil/#TempFile"><code>TempFile</code></a>, if the pattern
-      contains a '*', the random string replaces the last '*'.
-    </p>
-  </dd>
-</dl>
-
-<dl id="log"><dt><a href="/pkg/log/">log</a></dt>
-  <dd>
-    <p><!-- CL 186182 -->
-      The
-      new <a href="https://tip.golang.org/pkg/log/#pkg-constants"><code>Lmsgprefix</code></a>
-      flag may be used to tell the logging functions to emit the
-      optional output prefix immediately before the log message rather
-      than at the start of the line.
-    </p>
-  </dd>
-</dl><!-- log -->
-
-<dl id="math"><dt><a href="/pkg/math/">math</a></dt>
-  <dd>
-    <p><!-- CL 127458 -->
-      The new <a href="/pkg/math/#FMA"><code>FMA</code></a> function
-      computes <code>x*y+z</code> in floating point with no
-      intermediate rounding of the <code>x*y</code>
-      computation. Several architectures implement this computation
-      using dedicated hardware instructions for additional performance.
-    </p>
-  </dd>
-</dl><!-- math -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- CL 164972 -->
-      The <a href="/pkg/math/big/#Int.GCD"><code>GCD</code></a> method
-      now allows the inputs <code>a</code> and <code>b</code> to be
-      zero or negative.
-    </p>
-  </dd>
-</dl><!-- math/big -->
-
-<dl id="math/bits"><dt><a href="/pkg/math/bits/">math/bits</a></dt>
-  <dd>
-    <p><!-- CL 197838 -->
-      The new functions
-      <a href="/pkg/math/bits/#Rem"><code>Rem</code></a>,
-      <a href="/pkg/math/bits/#Rem32"><code>Rem32</code></a>, and
-      <a href="/pkg/math/bits/#Rem64"><code>Rem64</code></a>
-      support computing a remainder even when the quotient overflows.
-    </p>
-  </dd>
-</dl><!-- math/bits -->
-
-<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
-  <dd>
-    <p><!-- CL 186927 -->
-      The default type of <code>.js</code> and <code>.mjs</code> files
-      is now <code>text/javascript</code> rather
-      than <code>application/javascript</code>.
-      This is in accordance
-      with <a href="https://datatracker.ietf.org/doc/draft-ietf-dispatch-javascript-mjs/">an
-      IETF draft</a> that treats <code>application/javascript</code> as obsolete.
-    </p>
-  </dd>
-</dl><!-- mime -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-  <dd>
-    <p>
-      The
-      new <a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a>
-      method <a href="/pkg/mime/multipart/#Reader.NextRawPart"><code>NextRawPart</code></a>
-      supports fetching the next MIME part without transparently
-      decoding <code>quoted-printable</code> data.
-    </p>
-  </dd>
-</dl><!-- mime/multipart -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 200760 -->
-      The new <a href="/pkg/net/http/#Header"><code>Header</code></a>
-      method <a href="/pkg/net/http/#Header.Values"><code>Values</code></a>
-      can be used to fetch all values associated with a
-      canonicalized key.
-    </p>
-
-    <p><!-- CL 61291 -->
-      The
-      new <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-      field <a href="/pkg/net/http/#Transport.DialTLSContext"><code>DialTLSContext</code></a>
-      can be used to specify an optional dial function for creating
-      TLS connections for non-proxied HTTPS requests.
-      This new field can be used instead
-      of <a href="/pkg/net/http/#Transport.DialTLS"><code>DialTLS</code></a>,
-      which is now considered deprecated; <code>DialTLS</code> will
-      continue to work, but new code should
-      use <code>DialTLSContext</code>, which allows the transport to
-      cancel dials as soon as they are no longer needed.
-    </p>
-
-    <p><!-- CL 192518, CL 194218 -->
-      On Windows, <a href="/pkg/net/http/#ServeFile"><code>ServeFile</code></a> now correctly
-      serves files larger than 2GB.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="net/http/httptest"><dt><a href="/pkg/net/http/httptest/">net/http/httptest</a></dt>
-  <dd>
-    <p><!-- CL 201557 -->
-      The
-      new <a href="/pkg/net/http/httptest/#Server"><code>Server</code></a>
-      field <a href="/pkg/net/http/httptest/#Server.EnableHTTP2"><code>EnableHTTP2</code></a>
-      supports enabling HTTP/2 on the test server.
-    </p>
-  </dd>
-</dl><!-- net/http/httptest -->
-
-<dl id="net/textproto"><dt><a href="/pkg/net/textproto/">net/textproto</a></dt>
-  <dd>
-    <p><!-- CL 200760 -->
-      The
-      new <a href="/pkg/net/textproto/#MIMEHeader"><code>MIMEHeader</code></a>
-      method <a href="/pkg/net/textproto/#MIMEHeader.Values"><code>Values</code></a>
-      can be used to fetch all values associated with a canonicalized
-      key.
-    </p>
-  </dd>
-</dl><!-- net/textproto -->
-
-<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-  <dd>
-    <p><!-- CL 185117 -->
-      When parsing of a URL fails
-      (for example by <a href="/pkg/net/url/#Parse"><code>Parse</code></a>
-      or <a href="/pkg/net/url/#ParseRequestURI"><code>ParseRequestURI</code></a>),
-      the resulting <a href="/pkg/net/url/#Error.Error"><code>Error</code></a> message
-      will now quote the unparsable URL.
-      This provides clearer structure and consistency with other parsing errors.
-    </p>
-  </dd>
-</dl><!-- net/url -->
-
-<dl id="os/signal"><dt><a href="/pkg/os/signal/">os/signal</a></dt>
-  <dd>
-    <p><!-- CL 187739 -->
-      On Windows,
-      the <code>CTRL_CLOSE_EVENT</code>, <code>CTRL_LOGOFF_EVENT</code>,
-      and <code>CTRL_SHUTDOWN_EVENT</code> events now generate
-      a <code>syscall.SIGTERM</code> signal, similar to how Control-C
-      and Control-Break generate a <code>syscall.SIGINT</code> signal.
-    </p>
-  </dd>
-</dl><!-- os/signal -->
-
-<dl id="plugin"><dt><a href="/pkg/plugin/">plugin</a></dt>
-  <dd>
-    <p><!-- CL 191617 -->
-      The <code>plugin</code> package now supports <code>freebsd/amd64</code>.
-    </p>
-  </dd>
-</dl><!-- plugin -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 85661 -->
-      <a href="/pkg/reflect#StructOf"><code>StructOf</code></a> now
-      supports creating struct types with unexported fields, by
-      setting the <code>PkgPath</code> field in
-      a <code>StructField</code> element.
-    </p>
-  </dd>
-</dl><!-- reflect -->
-
-<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-    <p><!-- CL 200081 -->
-      <code>runtime.Goexit</code> can no longer be aborted by a
-      recursive <code>panic</code>/<code>recover</code>.
-    </p>
-
-    <p><!-- CL 188297, CL 191785 -->
-      On macOS, <code>SIGPIPE</code> is no longer forwarded to signal
-      handlers installed before the Go runtime is initialized.
-      This is necessary because macOS delivers <code>SIGPIPE</code>
-      <a href="/issue/33384">to the main thread</a>
-      rather than the thread writing to the closed pipe.
-    </p>
-  </dd>
-</dl><!-- runtime -->
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- CL 204636, 205097 -->
-    The generated profile no longer includes the pseudo-PCs used for inline
-    marks. Symbol information of inlined functions is encoded in
-    <a href="https://github.com/google/pprof/blob/5e96527/proto/profile.proto#L177-L184">the format</a>
-    the pprof tool expects. This is a fix for the regression introduced
-    during recent releases.
-    </p>
-  </dd>
-</dl><!-- runtime/pprof -->
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p>
-      The <a href="/pkg/strconv/#NumError"><code>NumError</code></a>
-      type now has
-      an <a href="/pkg/strconv/#NumError.Unwrap"><code>Unwrap</code></a>
-      method that may be used to retrieve the reason that a conversion
-      failed.
-      This supports using <code>NumError</code> values
-      with <a href="/pkg/errors/#Is"><code>errors.Is</code></a> to see
-      if the underlying error
-      is <a href="/pkg/strconv/#pkg-variables"><code>strconv.ErrRange</code></a>
-      or <a href="/pkg/strconv/#pkg-variables"><code>strconv.ErrSyntax</code></a>.
-    </p>
-  </dd>
-</dl><!-- strconv -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 200577 -->
-      Unlocking a highly contended <code>Mutex</code> now directly
-      yields the CPU to the next goroutine waiting for
-      that <code>Mutex</code>. This significantly improves the
-      performance of highly contended mutexes on high CPU count
-      machines.
-    </p>
-  </dd>
-</dl><!-- sync -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- CL 201359 -->
-       The testing package now supports cleanup functions, called after
-       a test or benchmark has finished, by calling
-       <a href="/pkg/testing#T.Cleanup"><code>T.Cleanup</code></a> or
-       <a href="/pkg/testing#B.Cleanup"><code>B.Cleanup</code></a> respectively.
-    </p>
-  </dd>
-</dl><!-- testing -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 206124 -->
-      The text/template package now correctly reports errors when a
-      parenthesized argument is used as a function.
-      This most commonly shows up in erroneous cases like
-      <code>{{if (eq .F "a") or (eq .F "b")}}</code>.
-      This should be written as <code>{{if or (eq .F "a") (eq .F "b")}}</code>.
-      The erroneous case never worked as expected, and will now be
-      reported with an error <code>can't give argument to non-function</code>.
-    </p>
-
-    <p><!-- CL 207637 -->
-      <a href="/pkg/text/template/#JSEscape"><code>JSEscape</code></a> now
-      escapes the <code>&amp;</code> and <code>&equals;</code> characters to
-      mitigate the impact of its output being misused in HTML contexts.
-    </p>
-  </dd>
-</dl><!-- text/template -->
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-  <dd>
-    <p>
-      The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-      support throughout the system has been upgraded from Unicode 11.0 to
-      <a href="https://www.unicode.org/versions/Unicode12.0.0/">Unicode 12.0</a>,
-      which adds 554 new characters, including four new scripts, and 61 new emoji.
-    </p>
-  </dd>
-</dl><!-- unicode -->
diff --git a/_content/doc/go1.15.html b/_content/doc/go1.15.html
deleted file mode 100644
index a863f30..0000000
--- a/_content/doc/go1.15.html
+++ /dev/null
@@ -1,1063 +0,0 @@
-<!--{
-        "Title": "Go 1.15 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.15</h2>
-
-<p>
-  The latest Go release, version 1.15, arrives six months after <a href="go1.14">Go 1.14</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-  Go 1.15 includes <a href="#linker">substantial improvements to the linker</a>,
-  improves <a href="#runtime">allocation for small objects at high core counts</a>, and
-  deprecates <a href="#commonname">X.509 CommonName</a>.
-  <code>GOPROXY</code> now supports skipping proxies that return errors and
-  a new <a href="#time/tzdata">embedded tzdata package</a> has been added.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  There are no changes to the language.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="darwin">Darwin</h3>
-
-<p>
-  As <a href="go1.14#darwin">announced</a> in the Go 1.14 release
-  notes, Go 1.15 requires macOS 10.12 Sierra or later; support for
-  previous versions has been discontinued.
-</p>
-
-<p> <!-- golang.org/issue/37610, golang.org/issue/37611, CL 227582, and CL 227198  -->
-  As <a href="/doc/go1.14#darwin">announced</a> in the Go 1.14 release
-  notes, Go 1.15 drops support for 32-bit binaries on macOS, iOS,
-  iPadOS, watchOS, and tvOS (the <code>darwin/386</code>
-  and <code>darwin/arm</code> ports). Go continues to support the
-  64-bit <code>darwin/amd64</code> and <code>darwin/arm64</code> ports.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p> <!-- CL 214397 and CL 230217 -->
-  Go now generates Windows ASLR executables when <code>-buildmode=pie</code>
-  cmd/link flag is provided. Go command uses <code>-buildmode=pie</code>
-  by default on Windows.
-</p>
-
-<p><!-- CL 227003 -->
-  The <code>-race</code> and <code>-msan</code> flags now always
-  enable <code>-d=checkptr</code>, which checks uses
-  of <code>unsafe.Pointer</code>. This was previously the case on all
-  OSes except Windows.
-</p>
-
-<p><!-- CL 211139 -->
-  Go-built DLLs no longer cause the process to exit when it receives a
-  signal (such as Ctrl-C at a terminal).
-</p>
-
-<h3 id="android">Android</h3>
-
-<p> <!-- CL 235017, golang.org/issue/38838 -->
-  When linking binaries for Android, Go 1.15 explicitly selects
-  the <code>lld</code> linker available in recent versions of the NDK.
-  The <code>lld</code> linker avoids crashes on some devices, and is
-  planned to become the default NDK linker in a future NDK version.
-</p>
-
-<h3 id="openbsd">OpenBSD</h3>
-
-<p><!-- CL 234381 -->
-  Go 1.15 adds support for OpenBSD 6.7 on <code>GOARCH=arm</code>
-  and <code>GOARCH=arm64</code>. Previous versions of Go already
-  supported OpenBSD 6.7 on <code>GOARCH=386</code>
-  and <code>GOARCH=amd64</code>.
-</p>
-
-<h3 id="riscv">RISC-V</h3>
-
-<p> <!-- CL 226400, CL 226206, and others -->
-  There has been progress in improving the stability and performance
-  of the 64-bit RISC-V port on Linux (<code>GOOS=linux</code>,
-  <code>GOARCH=riscv64</code>). It also now supports asynchronous
-  preemption.
-</p>
-
-<h3 id="386">386</h3>
-
-<p><!-- golang.org/issue/40255 -->
-  Go 1.15 is the last release to support x87-only floating-point
-  hardware (<code>GO386=387</code>). Future releases will require at
-  least SSE2 support on 386, raising Go's
-  minimum <code>GOARCH=386</code> requirement to the Intel Pentium 4
-  (released in 2000) or AMD Opteron/Athlon 64 (released in 2003).
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="go-command">Go command</h3>
-
-<p><!-- golang.org/issue/37367 -->
-  The <code>GOPROXY</code> environment variable now supports skipping proxies
-  that return errors. Proxy URLs may now be separated with either commas
-  (<code>,</code>) or pipe characters (<code>|</code>). If a proxy URL is
-  followed by a comma, the <code>go</code> command will only try the next proxy
-  in the list after a 404 or 410 HTTP response. If a proxy URL is followed by a
-  pipe character, the <code>go</code> command will try the next proxy in the
-  list after any error. Note that the default value of <code>GOPROXY</code>
-  remains <code>https://proxy.golang.org,direct</code>, which does not fall
-  back to <code>direct</code> in case of errors.
-</p>
-
-<h4 id="go-test"><code>go</code> <code>test</code></h4>
-
-<p><!-- https://golang.org/issue/36134 -->
-  Changing the <code>-timeout</code> flag now invalidates cached test results. A
-  cached result for a test run with a long timeout will no longer count as
-  passing when <code>go</code> <code>test</code> is re-invoked with a short one.
-</p>
-
-<h4 id="go-flag-parsing">Flag parsing</h4>
-
-<p><!-- https://golang.org/cl/211358 -->
-  Various flag parsing issues in <code>go</code> <code>test</code> and
-  <code>go</code> <code>vet</code> have been fixed. Notably, flags specified
-  in <code>GOFLAGS</code> are handled more consistently, and
-  the <code>-outputdir</code> flag now interprets relative paths relative to the
-  working directory of the <code>go</code> command (rather than the working
-  directory of each individual test).
-</p>
-
-<h4 id="module-cache">Module cache</h4>
-
-<p><!-- https://golang.org/cl/219538 -->
-  The location of the module cache may now be set with
-  the <code>GOMODCACHE</code> environment variable. The default value of
-  <code>GOMODCACHE</code> is <code>GOPATH[0]/pkg/mod</code>, the location of the
-  module cache before this change.
-</p>
-
-<p><!-- https://golang.org/cl/221157 -->
-  A workaround is now available for Windows "Access is denied" errors in
-  <code>go</code> commands that access the module cache, caused by external
-  programs concurrently scanning the file system (see
-  <a href="/issue/36568">issue #36568</a>). The workaround is
-  not enabled by default because it is not safe to use when Go versions lower
-  than 1.14.2 and 1.13.10 are running concurrently with the same module cache.
-  It can be enabled by explicitly setting the environment variable
-  <code>GODEBUG=modcacheunzipinplace=1</code>.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<h4 id="vet-string-int">New warning for string(x)</h4>
-
-<p><!-- CL 212919, 232660 -->
-  The vet tool now warns about conversions of the
-  form <code>string(x)</code> where <code>x</code> has an integer type
-  other than <code>rune</code> or <code>byte</code>.
-  Experience with Go has shown that many conversions of this form
-  erroneously assume that <code>string(x)</code> evaluates to the
-  string representation of the integer <code>x</code>.
-  It actually evaluates to a string containing the UTF-8 encoding of
-  the value of <code>x</code>.
-  For example, <code>string(9786)</code> does not evaluate to the
-  string <code>"9786"</code>; it evaluates to the
-  string <code>"\xe2\x98\xba"</code>, or <code>"☺"</code>.
-</p>
-
-<p>
-  Code that is using <code>string(x)</code> correctly can be rewritten
-  to <code>string(rune(x))</code>.
-  Or, in some cases, calling <code>utf8.EncodeRune(buf, x)</code> with
-  a suitable byte slice <code>buf</code> may be the right solution.
-  Other code should most likely use <code>strconv.Itoa</code>
-  or <code>fmt.Sprint</code>.
-</p>
-
-<p>
-  This new vet check is enabled by default when
-  using <code>go</code> <code>test</code>.
-</p>
-
-<p>
-  We are considering prohibiting the conversion in a future release of Go.
-  That is, the language would change to only
-  permit <code>string(x)</code> for integer <code>x</code> when the
-  type of <code>x</code> is <code>rune</code> or <code>byte</code>.
-  Such a language change would not be backward compatible.
-  We are using this vet check as a first trial step toward changing
-  the language.
-</p>
-
-<h4 id="vet-impossible-interface">New warning for impossible interface conversions</h4>
-
-<p><!-- CL 218779, 232660 -->
-  The vet tool now warns about type assertions from one interface type
-  to another interface type when the type assertion will always fail.
-  This will happen if both interface types implement a method with the
-  same name but with a different type signature.
-</p>
-
-<p>
-  There is no reason to write a type assertion that always fails, so
-  any code that triggers this vet check should be rewritten.
-</p>
-
-<p>
-  This new vet check is enabled by default when
-  using <code>go</code> <code>test</code>.
-</p>
-
-<p>
-  We are considering prohibiting impossible interface type assertions
-  in a future release of Go.
-  Such a language change would not be backward compatible.
-  We are using this vet check as a first trial step toward changing
-  the language.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- CL 221779 -->
-  If <code>panic</code> is invoked with a value whose type is derived from any
-  of: <code>bool</code>, <code>complex64</code>, <code>complex128</code>, <code>float32</code>, <code>float64</code>,
-  <code>int</code>, <code>int8</code>, <code>int16</code>, <code>int32</code>, <code>int64</code>, <code>string</code>,
-  <code>uint</code>, <code>uint8</code>, <code>uint16</code>, <code>uint32</code>, <code>uint64</code>, <code>uintptr</code>,
-  then the value will be printed, instead of just its address.
-  Previously, this was only true for values of exactly these types.
-</p>
-
-<p><!-- CL 228900 -->
-  On a Unix system, if the <code>kill</code> command
-  or <code>kill</code> system call is used to send
-  a <code>SIGSEGV</code>, <code>SIGBUS</code>,
-  or <code>SIGFPE</code> signal to a Go program, and if the signal
-  is not being handled via
-  <a href="/pkg/os/signal/#Notify"><code>os/signal.Notify</code></a>,
-  the Go program will now reliably crash with a stack trace.
-  In earlier releases the behavior was unpredictable.
-</p>
-
-<p><!-- CL 221182, CL 229998 -->
-  Allocation of small objects now performs much better at high core
-  counts, and has lower worst-case latency.
-</p>
-
-<p><!-- CL 216401 -->
-  Converting a small integer value into an interface value no longer
-  causes allocation.
-</p>
-
-<p><!-- CL 216818 -->
-  Non-blocking receives on closed channels now perform as well as
-  non-blocking receives on open channels.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- CL 229578 -->
-  Package <code>unsafe</code>'s <a href="/pkg/unsafe/#Pointer">safety
-  rules</a> allow converting an <code>unsafe.Pointer</code>
-  into <code>uintptr</code> when calling certain
-  functions. Previously, in some cases, the compiler allowed multiple
-  chained conversions (for example, <code>syscall.Syscall(…,</code>
-  <code>uintptr(uintptr(ptr)),</code> <code>…)</code>). The compiler
-  now requires exactly one conversion. Code that used multiple
-  conversions should be updated to satisfy the safety rules.
-</p>
-
-<p><!-- CL 230544, CL 231397 -->
-  Go 1.15 reduces typical binary sizes by around 5% compared to Go
-  1.14 by eliminating certain types of GC metadata and more
-  aggressively eliminating unused type metadata.
-</p>
-
-<p><!-- CL 219357, CL 231600 -->
-  The toolchain now mitigates
-  <a href="https://www.intel.com/content/www/us/en/support/articles/000055650/processors.html">Intel
-  CPU erratum SKX102</a> on <code>GOARCH=amd64</code> by aligning
-  functions to 32 byte boundaries and padding jump instructions. While
-  this padding increases binary sizes, this is more than made up for
-  by the binary size improvements mentioned above.
-</p>
-
-<p><!-- CL 222661 -->
-  Go 1.15 adds a <code>-spectre</code> flag to both the
-  compiler and the assembler, to allow enabling Spectre mitigations.
-  These should almost never be needed and are provided mainly as a
-  “defense in depth” mechanism.
-  See the <a href="https://github.com/golang/go/wiki/Spectre">Spectre wiki page</a> for details.
-</p>
-
-<p><!-- CL 228578 -->
-  The compiler now rejects <code>//go:</code> compiler directives that
-  have no meaning for the declaration they are applied to with a
-  "misplaced compiler directive" error. Such misapplied directives
-  were broken before, but were silently ignored by the compiler.
-</p>
-
-<p><!-- CL 206658, CL 205066 -->
-  The compiler's <code>-json</code> optimization logging now reports
-  large (>= 128 byte) copies and includes explanations of escape
-  analysis decisions.
-</p>
-
-<h2 id="linker">Linker</h2>
-
-<p>
-  This release includes substantial improvements to the Go linker,
-  which reduce linker resource usage (both time and memory) and
-  improve code robustness/maintainability.
-</p>
-
-<p>
-  For a representative set of large Go programs, linking is 20% faster
-  and requires 30% less memory on average, for <code>ELF</code>-based
-  OSes (Linux, FreeBSD, NetBSD, OpenBSD, Dragonfly, and Solaris)
-  running on <code>amd64</code> architectures, with more modest
-  improvements for other architecture/OS combinations.
-</p>
-
-<p>
-  The key contributors to better linker performance are a newly
-  redesigned object file format, and a revamping of internal
-  phases to increase concurrency (for example, applying relocations to
-  symbols in parallel). Object files in Go 1.15 are slightly larger
-  than their 1.14 equivalents.
-</p>
-
-<p>
-  These changes are part of a multi-release project
-  to <a href="/s/better-linker">modernize the Go
-  linker</a>, meaning that there will be additional linker
-  improvements expected in future releases.
-</p>
-
-<p><!-- CL 207877 -->
-  The linker now defaults to internal linking mode
-  for <code>-buildmode=pie</code> on
-  <code>linux/amd64</code> and <code>linux/arm64</code>, so these
-  configurations no longer require a C linker. External linking
-  mode (which was the default in Go 1.14 for
-  <code>-buildmode=pie</code>) can still be requested with
-  <code>-ldflags=-linkmode=external</code> flag.
-</p>
-
-<h2 id="objdump">Objdump</h2>
-
-<p><!-- CL 225459 -->
-  The <a href="/cmd/objdump/">objdump</a> tool now supports
-  disassembling in GNU assembler syntax with the <code>-gnu</code>
-  flag.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="time/tzdata">New embedded tzdata package</h3>
-
-<p> <!-- CL 224588 -->
-  Go 1.15 includes a new package,
-  <a href="/pkg/time/tzdata/"><code>time/tzdata</code></a>,
-  that permits embedding the timezone database into a program.
-  Importing this package (as <code>import _ "time/tzdata"</code>)
-  permits the program to find timezone information even if the
-  timezone database is not available on the local system.
-  You can also embed the timezone database by building
-  with <code>-tags timetzdata</code>.
-  Either approach increases the size of the program by about 800 KB.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p><!-- CL 235817 -->
-  Go 1.15 will translate the C type <code>EGLConfig</code> to the
-  Go type <code>uintptr</code>. This change is similar to how Go
-  1.12 and newer treats <code>EGLDisplay</code>, Darwin's CoreFoundation and
-  Java's JNI types. See the <a href="/cmd/cgo/#hdr-Special_cases">cgo
-  documentation</a> for more information.
-</p>
-
-<p><!-- CL 250940 -->
-  In Go 1.15.3 and later, cgo will not permit Go code to allocate an
-  undefined struct type (a C struct defined as just <code>struct
-  S;</code> or similar) on the stack or heap.
-  Go code will only be permitted to use pointers to those types.
-  Allocating an instance of such a struct and passing a pointer, or a
-  full struct value, to C code was always unsafe and unlikely to work
-  correctly; it is now forbidden.
-  The fix is to either rewrite the Go code to use only pointers, or to
-  ensure that the Go code sees the full definition of the struct by
-  including the appropriate C header file.
-</p>
-
-<h3 id="commonname">X.509 CommonName deprecation</h3>
-
-<p><!-- CL 231379 -->
-  The deprecated, legacy behavior of treating the <code>CommonName</code>
-  field on X.509 certificates as a host name when no Subject Alternative Names
-  are present is now disabled by default. It can be temporarily re-enabled by
-  adding the value <code>x509ignoreCN=0</code> to the <code>GODEBUG</code>
-  environment variable.
-</p>
-
-<p>
-  Note that if the <code>CommonName</code> is an invalid host name, it's always
-  ignored, regardless of <code>GODEBUG</code> settings. Invalid names include
-  those with any characters other than letters, digits, hyphens and underscores,
-  and those with empty labels or trailing dots.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
-  <dd>
-    <p><!-- CL 225357, CL 225557 -->
-      When a <a href="/pkg/bufio/#Scanner"><code>Scanner</code></a> is
-      used with an invalid
-      <a href="/pkg/io/#Reader"><code>io.Reader</code></a> that
-      incorrectly returns a negative number from <code>Read</code>,
-      the <code>Scanner</code> will no longer panic, but will instead
-      return the new error
-      <a href="/pkg/bufio/#ErrBadReadCount"><code>ErrBadReadCount</code></a>.
-    </p>
-  </dd>
-</dl><!-- bufio -->
-
-<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
-  <dd>
-    <p><!-- CL 223777 -->
-      Creating a derived <code>Context</code> using a nil parent is now explicitly
-      disallowed. Any attempt to do so with the
-      <a href="/pkg/context/#WithValue"><code>WithValue</code></a>,
-      <a href="/pkg/context/#WithDeadline"><code>WithDeadline</code></a>, or
-      <a href="/pkg/context/#WithCancel"><code>WithCancel</code></a> functions
-      will cause a panic.
-    </p>
-  </dd>
-</dl><!-- context -->
-
-<dl id="crypto"><dt><a href="/pkg/crypto/">crypto</a></dt>
-  <dd>
-    <p><!-- CL 231417, CL 225460 -->
-      The <code>PrivateKey</code> and <code>PublicKey</code> types in the
-      <a href="/pkg/crypto/rsa/"><code>crypto/rsa</code></a>,
-      <a href="/pkg/crypto/ecdsa/"><code>crypto/ecdsa</code></a>, and
-      <a href="/pkg/crypto/ed25519/"><code>crypto/ed25519</code></a> packages
-      now have an <code>Equal</code> method to compare keys for equivalence
-      or to make type-safe interfaces for public keys. The method signature
-      is compatible with
-      <a href="https://pkg.go.dev/github.com/google/go-cmp/cmp#Equal"><code>go-cmp</code>'s
-      definition of equality</a>.
-    </p>
-
-    <p><!-- CL 224937 -->
-      <a href="/pkg/crypto/#Hash"><code>Hash</code></a> now implements
-      <a href="/pkg/fmt/#Stringer"><code>fmt.Stringer</code></a>.
-    </p>
-  </dd>
-</dl><!-- crypto -->
-
-<dl id="crypto/ecdsa"><dt><a href="/pkg/crypto/ecdsa/">crypto/ecdsa</a></dt>
-  <dd>
-    <p><!-- CL 217940 -->
-      The new <a href="/pkg/crypto/ecdsa/#SignASN1"><code>SignASN1</code></a>
-      and <a href="/pkg/crypto/ecdsa/#VerifyASN1"><code>VerifyASN1</code></a>
-      functions allow generating and verifying ECDSA signatures in the standard
-      ASN.1 DER encoding.
-    </p>
-  </dd>
-</dl><!-- crypto/ecdsa -->
-
-<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
-  <dd>
-    <p><!-- CL 202819 -->
-      The new <a href="/pkg/crypto/elliptic/#MarshalCompressed"><code>MarshalCompressed</code></a>
-      and <a href="/pkg/crypto/elliptic/#UnmarshalCompressed"><code>UnmarshalCompressed</code></a>
-      functions allow encoding and decoding NIST elliptic curve points in compressed format.
-    </p>
-  </dd>
-</dl><!-- crypto/elliptic -->
-
-<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
-  <dd>
-    <p><!-- CL 226203 -->
-      <a href="/pkg/crypto/rsa/#VerifyPKCS1v15"><code>VerifyPKCS1v15</code></a>
-      now rejects invalid short signatures with missing leading zeroes, according to RFC 8017.
-    </p>
-  </dd>
-</dl><!-- crypto/rsa -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 214977 -->
-      The new
-      <a href="/pkg/crypto/tls/#Dialer"><code>Dialer</code></a>
-      type and its
-      <a href="/pkg/crypto/tls/#Dialer.DialContext"><code>DialContext</code></a>
-      method permit using a context to both connect and handshake with a TLS server.
-    </p>
-
-    <p><!-- CL 229122 -->
-      The new
-      <a href="/pkg/crypto/tls/#Config.VerifyConnection"><code>VerifyConnection</code></a>
-      callback on the <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> type
-      allows custom verification logic for every connection. It has access to the
-      <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>
-      which includes peer certificates, SCTs, and stapled OCSP responses.
-    </p>
-
-    <p><!-- CL 230679 -->
-      Auto-generated session ticket keys are now automatically rotated every 24 hours,
-      with a lifetime of 7 days, to limit their impact on forward secrecy.
-    </p>
-
-    <p><!-- CL 231317 -->
-      Session ticket lifetimes in TLS 1.2 and earlier, where the session keys
-      are reused for resumed connections, are now limited to 7 days, also to
-      limit their impact on forward secrecy.
-    </p>
-
-    <p><!-- CL 231038 -->
-      The client-side downgrade protection checks specified in RFC 8446 are now
-      enforced. This has the potential to cause connection errors for clients
-      encountering middleboxes that behave like unauthorized downgrade attacks.
-    </p>
-
-    <p><!-- CL 208226 -->
-      <a href="/pkg/crypto/tls/#SignatureScheme"><code>SignatureScheme</code></a>,
-      <a href="/pkg/crypto/tls/#CurveID"><code>CurveID</code></a>, and
-      <a href="/pkg/crypto/tls/#ClientAuthType"><code>ClientAuthType</code></a>
-      now implement <a href="/pkg/fmt/#Stringer"><code>fmt.Stringer</code></a>.
-    </p>
-
-    <p><!-- CL 236737 -->
-      The <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>
-      fields <code>OCSPResponse</code> and <code>SignedCertificateTimestamps</code>
-      are now repopulated on client-side resumed connections.
-    </p>
-
-    <p><!-- CL 227840 -->
-      <a href="/pkg/crypto/tls/#Conn"><code>tls.Conn</code></a>
-      now returns an opaque error on permanently broken connections, wrapping
-      the temporary
-      <a href="/pkg/net/http/#Error"><code>net.Error</code></a>. To access the
-      original <code>net.Error</code>, use
-      <a href="/pkg/errors/#As"><code>errors.As</code></a> (or
-      <a href="/pkg/errors/#Unwrap"><code>errors.Unwrap</code></a>) instead of a
-      type assertion.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 231378, CL 231380, CL 231381 -->
-      If either the name on the certificate or the name being verified (with
-      <a href="/pkg/crypto/x509/#VerifyOptions.DNSName"><code>VerifyOptions.DNSName</code></a>
-      or <a href="/pkg/crypto/x509/#Certificate.VerifyHostname"><code>VerifyHostname</code></a>)
-      are invalid, they will now be compared case-insensitively without further
-      processing (without honoring wildcards or stripping trailing dots).
-      Invalid names include those with any characters other than letters,
-      digits, hyphens and underscores, those with empty labels, and names on
-      certificates with trailing dots.
-    </p>
-
-    <p><!-- CL 217298 -->
-      The new <a href="/pkg/crypto/x509/#CreateRevocationList"><code>CreateRevocationList</code></a>
-      function and <a href="/pkg/crypto/x509/#RevocationList"><code>RevocationList</code></a> type
-      allow creating RFC 5280-compliant X.509 v2 Certificate Revocation Lists.
-    </p>
-
-    <p><!-- CL 227098 -->
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      now automatically generates the <code>SubjectKeyId</code> if the template
-      is a CA and doesn't explicitly specify one.
-    </p>
-
-    <p><!-- CL 228777 -->
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      now returns an error if the template specifies <code>MaxPathLen</code> but is not a CA.
-    </p>
-
-    <p><!-- CL 205237 -->
-      On Unix systems other than macOS, the <code>SSL_CERT_DIR</code>
-      environment variable can now be a colon-separated list.
-    </p>
-
-    <p><!-- CL 227037 -->
-      On macOS, binaries are now always linked against
-      <code>Security.framework</code> to extract the system trust roots,
-      regardless of whether cgo is available. The resulting behavior should be
-      more consistent with the OS verifier.
-    </p>
-  </dd>
-</dl><!-- crypto/x509 -->
-
-<dl id="crypto/x509/pkix"><dt><a href="/pkg/crypto/x509/pkix/">crypto/x509/pkix</a></dt>
-  <dd>
-    <p><!-- CL 229864, CL 240543 -->
-      <a href="/pkg/crypto/x509/pkix/#Name.String"><code>Name.String</code></a>
-      now prints non-standard attributes from
-      <a href="/pkg/crypto/x509/pkix/#Name.Names"><code>Names</code></a> if
-      <a href="/pkg/crypto/x509/pkix/#Name.ExtraNames"><code>ExtraNames</code></a> is nil.
-    </p>
-  </dd>
-</dl><!-- crypto/x509/pkix -->
-
-<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
-  <dd>
-    <p><!-- CL 145758 -->
-      The new <a href="/pkg/database/sql/#DB.SetConnMaxIdleTime"><code>DB.SetConnMaxIdleTime</code></a>
-      method allows removing a connection from the connection pool after
-      it has been idle for a period of time, without regard to the total
-      lifespan of the connection.  The <a href="/pkg/database/sql/#DBStats.MaxIdleTimeClosed"><code>DBStats.MaxIdleTimeClosed</code></a>
-      field shows the total number of connections closed due to
-      <code>DB.SetConnMaxIdleTime</code>.
-    </p>
-
-    <p><!-- CL 214317 -->
-      The new <a href="/pkg/database/sql/#Row.Err"><code>Row.Err</code></a> getter
-      allows checking for query errors without calling
-      <code>Row.Scan</code>.
-    </p>
-  </dd>
-</dl><!-- database/sql -->
-
-<dl id="database/sql/driver"><dt><a href="/pkg/database/sql/driver/">database/sql/driver</a></dt>
-  <dd>
-    <p><!-- CL 174122 -->
-      The new <a href="/pkg/database/sql/driver/#Validator"><code>Validator</code></a>
-      interface may be implemented by <code>Conn</code> to allow drivers
-      to signal if a connection is valid or if it should be discarded.
-    </p>
-  </dd>
-</dl><!-- database/sql/driver -->
-
-<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
-  <dd>
-    <p><!-- CL 222637 -->
-      The package now defines the
-      <code>IMAGE_FILE</code>, <code>IMAGE_SUBSYSTEM</code>,
-      and <code>IMAGE_DLLCHARACTERISTICS</code> constants used by the
-      PE file format.
-    </p>
-  </dd>
-</dl><!-- debug/pe -->
-
-<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
-  <dd>
-    <p><!-- CL 226984 -->
-      <a href="/pkg/encoding/asn1/#Marshal"><code>Marshal</code></a> now sorts the components
-      of SET OF according to X.690 DER.
-    </p>
-
-    <p><!-- CL 227320 -->
-      <a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a> now rejects tags and
-      Object Identifiers which are not minimally encoded according to X.690 DER.
-    </p>
-  </dd>
-</dl><!-- encoding/asn1 -->
-
-<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
-  <dd>
-    <p><!-- CL 199837 -->
-      The package now has an internal limit to the maximum depth of
-      nesting when decoding. This reduces the possibility that a
-      deeply nested input could use large quantities of stack memory,
-      or even cause a "goroutine stack exceeds limit" panic.
-    </p>
-  </dd>
-</dl><!-- encoding/json -->
-
-<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
-  <dd>
-    <p><!-- CL 221427 -->
-      When the <code>flag</code> package sees <code>-h</code> or <code>-help</code>,
-      and those flags are not defined, it now prints a usage message.
-      If the <a href="/pkg/flag/#FlagSet"><code>FlagSet</code></a> was created with
-      <a href="/pkg/flag/#ExitOnError"><code>ExitOnError</code></a>,
-      <a href="/pkg/flag/#FlagSet.Parse"><code>FlagSet.Parse</code></a> would then
-      exit with a status of 2. In this release, the exit status for <code>-h</code>
-      or <code>-help</code> has been changed to 0. In particular, this applies to
-      the default handling of command line flags.
-    </p>
-  </dd>
-</dl>
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <p><!-- CL 215001 -->
-      The printing verbs <code>%#g</code> and <code>%#G</code> now preserve
-      trailing zeros for floating-point values.
-    </p>
-  </dd>
-</dl><!-- fmt -->
-
-<dl id="go/format"><dt><a href="/pkg/go/format/">go/format</a></dt>
-  <dd>
-    <p><!-- golang.org/issue/37476, CL 231461, CL 240683 -->
-      The <a href="/pkg/go/format/#Source"><code>Source</code></a> and
-      <a href="/pkg/go/format/#Node"><code>Node</code></a> functions
-      now canonicalize number literal prefixes and exponents as part
-      of formatting Go source code. This matches the behavior of the
-      <a href="/pkg/cmd/gofmt/"><code>gofmt</code></a> command as it
-      was implemented <a href="/doc/go1.13#gofmt">since Go 1.13</a>.
-    </p>
-  </dd>
-</dl><!-- go/format -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 226097 -->
-      The package now uses Unicode escapes (<code>\uNNNN</code>) in all
-      JavaScript and JSON contexts. This fixes escaping errors in
-      <code>application/ld+json</code> and <code>application/json</code>
-      contexts.
-    </p>
-  </dd>
-</dl><!-- html/template -->
-
-<dl id="io/ioutil"><dt><a href="/pkg/io/ioutil/">io/ioutil</a></dt>
-  <dd>
-    <p><!-- CL 212597 -->
-      <a href="/pkg/io/ioutil/#TempDir"><code>TempDir</code></a> and
-      <a href="/pkg/io/ioutil/#TempFile"><code>TempFile</code></a>
-      now reject patterns that contain path separators.
-      That is, calls such as <code>ioutil.TempFile("/tmp",</code> <code>"../base*")</code> will no longer succeed.
-      This prevents unintended directory traversal.
-    </p>
-  </dd>
-</dl><!-- io/ioutil -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- CL 230397 -->
-      The new <a href="/pkg/math/big/#Int.FillBytes"><code>Int.FillBytes</code></a>
-      method allows serializing to fixed-size pre-allocated byte slices.
-    </p>
-  </dd>
-</dl><!-- math/big -->
-
-<dl id="math/cmplx"><dt><a href="/pkg/math/cmplx/">math/cmplx</a></dt>
-  <dd>
-    <p><!-- CL 220689 -->
-      The functions in this package were updated to conform to the C99 standard
-      (Annex G IEC 60559-compatible complex arithmetic) with respect to handling
-      of special arguments such as infinity, NaN and signed zero.
-    </p>
-  </dd>
-</dl><!-- math/cmplx-->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 228645 -->
-      If an I/O operation exceeds a deadline set by
-      the <a href="/pkg/net/#Conn"><code>Conn.SetDeadline</code></a>,
-      <code>Conn.SetReadDeadline</code>,
-      or <code>Conn.SetWriteDeadline</code> methods, it will now
-      return an error that is or wraps
-      <a href="/pkg/os/#ErrDeadlineExceeded"><code>os.ErrDeadlineExceeded</code></a>.
-      This may be used to reliably detect whether an error is due to
-      an exceeded deadline.
-      Earlier releases recommended calling the <code>Timeout</code>
-      method on the error, but I/O operations can return errors for
-      which <code>Timeout</code> returns <code>true</code> although a
-      deadline has not been exceeded.
-    </p>
-
-    <p><!-- CL 228641 -->
-      The new <a href="/pkg/net/#Resolver.LookupIP"><code>Resolver.LookupIP</code></a>
-      method supports IP lookups that are both network-specific and accept a context.
-    </p>
-  </dd>
-</dl>
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 231418, CL 231419 -->
-      Parsing is now stricter as a hardening measure against request smuggling attacks:
-      non-ASCII white space is no longer trimmed like SP and HTAB, and support for the
-      "<code>identity</code>" <code>Transfer-Encoding</code> was dropped.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-  <dd>
-    <p><!-- CL 230937 -->
-      <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
-      now supports not modifying the <code>X-Forwarded-For</code>
-      header when the incoming <code>Request.Header</code> map entry
-      for that field is <code>nil</code>.
-    </p>
-
-    <p><!-- CL 224897 -->
-      When a Switching Protocol (like WebSocket) request handled by
-      <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
-      is canceled, the backend connection is now correctly closed.
-    </p>
-  </dd>
-</dl>
-
-<dl id="net/http/pprof"><dt><a href="/pkg/net/http/pprof/">net/http/pprof</a></dt>
-  <dd>
-    <p><!-- CL 147598, CL 229537 -->
-      All profile endpoints now support a "<code>seconds</code>" parameter. When present,
-      the endpoint profiles for the specified number of seconds and reports the difference.
-      The meaning of the "<code>seconds</code>" parameter in the <code>cpu</code> profile and
-      the trace endpoints is unchanged.
-    </p>
-  </dd>
-</dl>
-
-<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-  <dd>
-    <p><!-- CL 227645 -->
-      The new <a href="/pkg/net/url/#URL"><code>URL</code></a> field
-      <code>RawFragment</code> and method <a href="/pkg/net/url/#URL.EscapedFragment"><code>EscapedFragment</code></a>
-      provide detail about and control over the exact encoding of a particular fragment.
-      These are analogous to
-      <code>RawPath</code> and <a href="/pkg/net/url/#URL.EscapedPath"><code>EscapedPath</code></a>.
-    </p>
-    <p><!-- CL 207082 -->
-      The new <a href="/pkg/net/url/#URL"><code>URL</code></a>
-      method <a href="/pkg/net/url/#URL.Redacted"><code>Redacted</code></a>
-      returns the URL in string form with any password replaced with <code>xxxxx</code>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL -->
-      If an I/O operation exceeds a deadline set by
-      the <a href="/pkg/os/#File.SetDeadline"><code>File.SetDeadline</code></a>,
-      <a href="/pkg/os/#File.SetReadDeadline"><code>File.SetReadDeadline</code></a>,
-      or <a href="/pkg/os/#File.SetWriteDeadline"><code>File.SetWriteDeadline</code></a>
-      methods, it will now return an error that is or wraps
-      <a href="/pkg/os/#ErrDeadlineExceeded"><code>os.ErrDeadlineExceeded</code></a>.
-      This may be used to reliably detect whether an error is due to
-      an exceeded deadline.
-      Earlier releases recommended calling the <code>Timeout</code>
-      method on the error, but I/O operations can return errors for
-      which <code>Timeout</code> returns <code>true</code> although a
-      deadline has not been exceeded.
-    </p>
-
-    <p><!-- CL 232862 -->
-      Packages <code>os</code> and <code>net</code> now automatically
-      retry system calls that fail with <code>EINTR</code>. Previously
-      this led to spurious failures, which became more common in Go
-      1.14 with the addition of asynchronous preemption. Now this is
-      handled transparently.
-    </p>
-
-    <p><!-- CL 229101 -->
-      The <a href="/pkg/os/#File"><code>os.File</code></a> type now
-      supports a <a href="/pkg/os/#File.ReadFrom"><code>ReadFrom</code></a>
-      method. This permits the use of the <code>copy_file_range</code>
-      system call on some systems when using
-      <a href="/pkg/io/#Copy"><code>io.Copy</code></a> to copy data
-      from one <code>os.File</code> to another. A consequence is that
-      <a href="/pkg/io/#CopyBuffer"><code>io.CopyBuffer</code></a>
-      will not always use the provided buffer when copying to a
-      <code>os.File</code>. If a program wants to force the use of
-      the provided buffer, it can be done by writing
-      <code>io.CopyBuffer(struct{ io.Writer }{dst}, src, buf)</code>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="plugin"><dt><a href="/pkg/plugin/">plugin</a></dt>
-  <dd>
-    <p><!-- CL 182959 -->
-      DWARF generation is now supported (and enabled by default) for <code>-buildmode=plugin</code> on macOS.
-    </p>
-  </dd>
-  <dd>
-    <p><!-- CL 191617 -->
-      Building with <code>-buildmode=plugin</code> is now supported on <code>freebsd/amd64</code>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 228902 -->
-      Package <code>reflect</code> now disallows accessing methods of all
-      non-exported fields, whereas previously it allowed accessing
-      those of non-exported, embedded fields. Code that relies on the
-      previous behavior should be updated to instead access the
-      corresponding promoted method of the enclosing variable.
-    </p>
-  </dd>
-</dl>
-
-<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
-  <dd>
-    <p><!-- CL 187919 -->
-      The new <a href="/pkg/regexp/#Regexp.SubexpIndex"><code>Regexp.SubexpIndex</code></a>
-      method returns the index of the first subexpression with the given name
-      within the regular expression.
-    </p>
-  </dd>
-</dl><!-- regexp -->
-
-<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-    <p><!-- CL 216557 -->
-      Several functions, including
-      <a href="/pkg/runtime/#ReadMemStats"><code>ReadMemStats</code></a>
-      and
-      <a href="/pkg/runtime/#GoroutineProfile"><code>GoroutineProfile</code></a>,
-      no longer block if a garbage collection is in progress.
-    </p>
-  </dd>
-</dl>
-
-<dl id="pkg-runtime-pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- CL 189318 -->
-      The goroutine profile now includes the profile labels associated with each
-      goroutine at the time of profiling. This feature is not yet implemented for
-      the profile reported with <code>debug=2</code>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p><!-- CL 216617 -->
-      <a href="/pkg/strconv/#FormatComplex"><code>FormatComplex</code></a> and <a href="/pkg/strconv/#ParseComplex"><code>ParseComplex</code></a> are added for working with complex numbers.
-    </p>
-    <p>
-      <a href="/pkg/strconv/#FormatComplex"><code>FormatComplex</code></a> converts a complex number into a string of the form (a+bi), where a and b are the real and imaginary parts.
-    </p>
-    <p>
-      <a href="/pkg/strconv/#ParseComplex"><code>ParseComplex</code></a> converts a string into a complex number of a specified precision. <code>ParseComplex</code> accepts complex numbers in the format <code>N+Ni</code>.
-    </p>
-  </dd>
-</dl><!-- strconv -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 205899, golang.org/issue/33762 -->
-      The new method
-      <a href="/pkg/sync/#Map.LoadAndDelete"><code>Map.LoadAndDelete</code></a>
-      atomically deletes a key and returns the previous value if present.
-    </p>
-    <p><!-- CL 205899 -->
-      The method
-      <a href="/pkg/sync/#Map.Delete"><code>Map.Delete</code></a>
-      is more efficient.
-    </p>
-  </dd>
-</dl><!-- sync -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 231638 -->
-      On Unix systems, functions that use
-      <a href="/pkg/syscall/#SysProcAttr"><code>SysProcAttr</code></a>
-      will now reject attempts to set both the <code>Setctty</code>
-      and <code>Foreground</code> fields, as they both use
-      the <code>Ctty</code> field but do so in incompatible ways.
-      We expect that few existing programs set both fields.
-    </p>
-    <p>
-      Setting the <code>Setctty</code> field now requires that the
-      <code>Ctty</code> field be set to a file descriptor number in the
-      child process, as determined by the <code>ProcAttr.Files</code> field.
-      Using a child descriptor always worked, but there were certain
-      cases where using a parent file descriptor also happened to work.
-      Some programs that set <code>Setctty</code> will need to change
-      the value of <code>Ctty</code> to use a child descriptor number.
-    </p>
-
-    <p><!-- CL 220578 -->
-      It is <a href="/pkg/syscall/#Proc.Call">now possible</a> to call
-      system calls that return floating point values
-      on <code>windows/amd64</code>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- golang.org/issue/28135 -->
-      The <code>testing.T</code> type now has a
-      <a href="/pkg/testing/#T.Deadline"><code>Deadline</code></a> method
-      that reports the time at which the test binary will have exceeded its
-      timeout.
-    </p>
-
-    <p><!-- golang.org/issue/34129 -->
-      A <code>TestMain</code> function is no longer required to call
-      <code>os.Exit</code>. If a <code>TestMain</code> function returns,
-      the test binary will call <code>os.Exit</code> with the value returned
-      by <code>m.Run</code>.
-    </p>
-
-    <p><!-- CL 226877, golang.org/issue/35998 -->
-       The new methods
-       <a href="/pkg/testing/#T.TempDir"><code>T.TempDir</code></a> and
-       <a href="/pkg/testing/#B.TempDir"><code>B.TempDir</code></a>
-       return temporary directories that are automatically cleaned up
-       at the end of the test.
-    </p>
-
-    <p><!-- CL 229085 -->
-      <code>go</code> <code>test</code> <code>-v</code> now groups output by
-      test name, rather than printing the test name on each line.
-    </p>
-  </dd>
-</dl><!-- testing -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 226097 -->
-      <a href="/pkg/text/template/#JSEscape"><code>JSEscape</code></a> now
-      consistently uses Unicode escapes (<code>\u00XX</code>), which are
-      compatible with JSON.
-    </p>
-  </dd>
-</dl><!-- text/template -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- CL 220424, CL 217362, golang.org/issue/33184 -->
-       The new method
-       <a href="/pkg/time/#Ticker.Reset"><code>Ticker.Reset</code></a>
-       supports changing the duration of a ticker.
-    </p>
-
-    <p><!-- CL 227878 -->
-      When returning an error, <a href="/pkg/time/#ParseDuration"><code>ParseDuration</code></a> now quotes the original value.
-    </p>
-  </dd>
-</dl><!-- time -->
diff --git a/_content/doc/go1.16.html b/_content/doc/go1.16.html
deleted file mode 100644
index 109af99..0000000
--- a/_content/doc/go1.16.html
+++ /dev/null
@@ -1,1237 +0,0 @@
-<!--{
-	"Title": "Go 1.16 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.16</h2>
-
-<p>
-  The latest Go release, version 1.16, arrives six months after <a href="/doc/go1.15">Go 1.15</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  There are no changes to the language.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="darwin">Darwin and iOS</h3>
-
-<p><!-- golang.org/issue/38485, golang.org/issue/41385, CL 266373, more CLs -->
-  Go 1.16 adds support of 64-bit ARM architecture on macOS (also known as
-  Apple Silicon) with <code>GOOS=darwin</code>, <code>GOARCH=arm64</code>.
-  Like the <code>darwin/amd64</code> port, the <code>darwin/arm64</code>
-  port supports cgo, internal and external linking, <code>c-archive</code>,
-  <code>c-shared</code>, and <code>pie</code> build modes, and the race
-  detector.
-</p>
-
-<p><!-- CL 254740 -->
-  The iOS port, which was previously <code>darwin/arm64</code>, has
-  been renamed to <code>ios/arm64</code>. <code>GOOS=ios</code>
-  implies the
-  <code>darwin</code> build tag, just as <code>GOOS=android</code>
-  implies the <code>linux</code> build tag. This change should be
-  transparent to anyone using gomobile to build iOS apps.
-</p>
-
-<p>
-  The introduction of <code>GOOS=ios</code> means that file names
-  like <code>x_ios.go</code> will now only be built for
-  <code>GOOS=ios</code>; see
-  <a href="/cmd/go/#hdr-Build_constraints"><code>go</code>
-    <code>help</code> <code>buildconstraint</code></a> for details.
-  Existing packages that use file names of this form will have to
-  rename the files.
-</p>
-
-<p><!-- golang.org/issue/42100, CL 263798 -->
-  Go 1.16 adds an <code>ios/amd64</code> port, which targets the iOS
-  simulator running on AMD64-based macOS. Previously this was
-  unofficially supported through <code>darwin/amd64</code> with
-  the <code>ios</code> build tag set. See also
-  <a href="/misc/ios/README"><code>misc/ios/README</code></a> for
-  details about how to build programs for iOS and iOS simulator.
-</p>
-
-<p><!-- golang.org/issue/23011 -->
-  Go 1.16 is the last release that will run on macOS 10.12 Sierra.
-  Go 1.17 will require macOS 10.13 High Sierra or later.
-</p>
-
-<h3 id="netbsd">NetBSD</h3>
-
-<p><!-- golang.org/issue/30824 -->
-  Go now supports the 64-bit ARM architecture on NetBSD (the
-  <code>netbsd/arm64</code> port).
-</p>
-
-<h3 id="openbsd">OpenBSD</h3>
-
-<p><!-- golang.org/issue/40995 -->
-  Go now supports the MIPS64 architecture on OpenBSD
-  (the <code>openbsd/mips64</code> port). This port does not yet
-  support cgo.
-</p>
-
-<p><!-- golang.org/issue/36435, many CLs -->
-  On the 64-bit x86 and 64-bit ARM architectures on OpenBSD (the
-  <code>openbsd/amd64</code> and <code>openbsd/arm64</code> ports), system
-  calls are now made through <code>libc</code>, instead of directly using
-  the <code>SYSCALL</code>/<code>SVC</code> instruction. This ensures
-  forward-compatibility with future versions of OpenBSD. In particular,
-  OpenBSD 6.9 onwards will require system calls to be made through
-  <code>libc</code> for non-static Go binaries.
-</p>
-
-<h3 id="386">386</h3>
-
-<p><!-- golang.org/issue/40255, golang.org/issue/41848, CL 258957, and CL 260017 -->
-  As <a href="go1.15#386">announced</a> in the Go 1.15 release notes,
-  Go 1.16 drops support for x87 mode compilation (<code>GO386=387</code>).
-  Support for non-SSE2 processors is now available using soft float
-  mode (<code>GO386=softfloat</code>).
-  Users running on non-SSE2 processors should replace <code>GO386=387</code>
-  with <code>GO386=softfloat</code>.
-</p>
-
-<h3 id="riscv">RISC-V</h3>
-
-<p><!-- golang.org/issue/36641, CL 267317 -->
-  The <code>linux/riscv64</code> port now supports cgo and
-  <code>-buildmode=pie</code>. This release also includes performance
-  optimizations and code generation improvements for RISC-V.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="go-command">Go command</h3>
-
-<h4 id="modules">Modules</h4>
-
-<p><!-- golang.org/issue/41330 -->
-  Module-aware mode is enabled by default, regardless of whether a
-  <code>go.mod</code> file is present in the current working directory or a
-  parent directory. More precisely, the <code>GO111MODULE</code> environment
-  variable now defaults to <code>on</code>. To switch to the previous behavior,
-  set <code>GO111MODULE</code> to <code>auto</code>.
-</p>
-
-<p><!-- golang.org/issue/40728 -->
-  Build commands like <code>go</code> <code>build</code> and <code>go</code>
-  <code>test</code> no longer modify <code>go.mod</code> and <code>go.sum</code>
-  by default. Instead, they report an error if a module requirement or checksum
-  needs to be added or updated (as if the <code>-mod=readonly</code> flag were
-  used). Module requirements and sums may be adjusted with <code>go</code>
-  <code>mod</code> <code>tidy</code> or <code>go</code> <code>get</code>.
-</p>
-
-<p><!-- golang.org/issue/40276 -->
-  <code>go</code> <code>install</code> now accepts arguments with
-  version suffixes (for example, <code>go</code> <code>install</code>
-  <code>example.com/cmd@v1.0.0</code>). This causes <code>go</code>
-  <code>install</code> to build and install packages in module-aware mode,
-  ignoring the <code>go.mod</code> file in the current directory or any parent
-  directory, if there is one. This is useful for installing executables without
-  affecting the dependencies of the main module.
-</p>
-
-<p><!-- golang.org/issue/40276 -->
-  <code>go</code> <code>install</code>, with or without a version suffix (as
-  described above), is now the recommended way to build and install packages in
-  module mode. <code>go</code> <code>get</code> should be used with the
-  <code>-d</code> flag to adjust the current module's dependencies without
-  building packages, and use of <code>go</code> <code>get</code> to build and
-  install packages is deprecated. In a future release, the <code>-d</code> flag
-  will always be enabled.
-</p>
-
-<p><!-- golang.org/issue/24031 -->
-  <code>retract</code> directives may now be used in a <code>go.mod</code> file
-  to indicate that certain published versions of the module should not be used
-  by other modules. A module author may retract a version after a severe problem
-  is discovered or if the version was published unintentionally.
-</p>
-
-<p><!-- golang.org/issue/26603 -->
-  The <code>go</code> <code>mod</code> <code>vendor</code>
-  and <code>go</code> <code>mod</code> <code>tidy</code> subcommands now accept
-  the <code>-e</code> flag, which instructs them to proceed despite errors in
-  resolving missing packages.
-</p>
-
-<p><!-- golang.org/issue/36465 -->
-  The <code>go</code> command now ignores requirements on module versions
-  excluded by <code>exclude</code> directives in the main module. Previously,
-  the <code>go</code> command used the next version higher than an excluded
-  version, but that version could change over time, resulting in
-  non-reproducible builds.
-</p>
-
-<p><!-- golang.org/issue/43052, golang.org/issue/43985 -->
-  In module mode, the <code>go</code> command now disallows import paths that
-  include non-ASCII characters or path elements with a leading dot character
-  (<code>.</code>). Module paths with these characters were already disallowed
-  (see <a href="/ref/mod#go-mod-file-ident">Module paths and versions</a>),
-  so this change affects only paths within module subdirectories.
-</p>
-
-<h4 id="embed">Embedding Files</h4>
-
-<p>
-  The <code>go</code> command now supports including
-  static files and file trees as part of the final executable,
-  using the new <code>//go:embed</code> directive.
-  See the documentation for the new
-  <a href="/pkg/embed/"><code>embed</code></a>
-  package for details.
-</p>
-
-<h4 id="go-test"><code>go</code> <code>test</code></h4>
-
-<p><!-- golang.org/issue/29062 -->
-  When using <code>go</code> <code>test</code>, a test that
-  calls <code>os.Exit(0)</code> during execution of a test function
-  will now be considered to fail.
-  This will help catch cases in which a test calls code that calls
-  <code>os.Exit(0)</code> and thereby stops running all future tests.
-  If a <code>TestMain</code> function calls <code>os.Exit(0)</code>
-  that is still considered to be a passing test.
-</p>
-
-<p><!-- golang.org/issue/39484 -->
-  <code>go</code> <code>test</code> reports an error when the <code>-c</code>
-  or <code>-i</code> flags are used together with unknown flags. Normally,
-  unknown flags are passed to tests, but when <code>-c</code> or <code>-i</code>
-  are used, tests are not run.
-</p>
-
-<h4 id="go-get"><code>go</code> <code>get</code></h4>
-
-<p><!-- golang.org/issue/37519 -->
-  The <code>go</code> <code>get</code> <code>-insecure</code> flag is
-  deprecated and will be removed in a future version. This flag permits
-  fetching from repositories and resolving custom domains using insecure
-  schemes such as HTTP, and also bypasses module sum validation using the
-  checksum database. To permit the use of insecure schemes, use the
-  <code>GOINSECURE</code> environment variable instead. To bypass module
-  sum validation, use <code>GOPRIVATE</code> or <code>GONOSUMDB</code>.
-  See <code>go</code> <code>help</code> <code>environment</code> for details.
-</p>
-
-<p><!-- golang.org/cl/263267 -->
-  <code>go</code> <code>get</code> <code>example.com/mod@patch</code> now
-  requires that some version of <code>example.com/mod</code> already be
-  required by the main module.
-  (However, <code>go</code> <code>get</code> <code>-u=patch</code> continues
-  to patch even newly-added dependencies.)
-</p>
-
-<h4 id="govcs"><code>GOVCS</code> environment variable</h4>
-
-<p><!-- golang.org/issue/266420 -->
-  <code>GOVCS</code> is a new environment variable that limits which version
-  control tools the <code>go</code> command may use to download source code.
-  This mitigates security issues with tools that are typically used in trusted,
-  authenticated environments. By default, <code>git</code> and <code>hg</code>
-  may be used to download code from any repository. <code>svn</code>,
-  <code>bzr</code>, and <code>fossil</code> may only be used to download code
-  from repositories with module paths or package paths matching patterns in
-  the <code>GOPRIVATE</code> environment variable. See
-  <a href="/cmd/go/#hdr-Controlling_version_control_with_GOVCS"><code>go</code>
-  <code>help</code> <code>vcs</code></a> for details.
-</p>
-
-<h4 id="all-pattern">The <code>all</code> pattern</h4>
-
-<p><!-- golang.org/cl/240623 -->
-  When the main module's <code>go.mod</code> file
-  declares <code>go</code> <code>1.16</code> or higher, the <code>all</code>
-  package pattern now matches only those packages that are transitively imported
-  by a package or test found in the main module. (Packages imported by <em>tests
-  of</em> packages imported by the main module are no longer included.) This is
-  the same set of packages retained
-  by <code>go</code> <code>mod</code> <code>vendor</code> since Go 1.11.
-</p>
-
-<h4 id="toolexec">The <code>-toolexec</code> build flag</h4>
-
-<p><!-- golang.org/cl/263357 -->
-  When the <code>-toolexec</code> build flag is specified to use a program when
-  invoking toolchain programs like compile or asm, the environment variable
-  <code>TOOLEXEC_IMPORTPATH</code> is now set to the import path of the package
-  being built.
-</p>
-
-<h4 id="i-flag">The <code>-i</code> build flag</h4>
-
-<p><!-- golang.org/issue/41696 -->
-  The <code>-i</code> flag accepted by <code>go</code> <code>build</code>,
-  <code>go</code> <code>install</code>, and <code>go</code> <code>test</code> is
-  now deprecated. The <code>-i</code> flag instructs the <code>go</code> command
-  to install packages imported by packages named on the command line. Since
-  the build cache was introduced in Go 1.10, the <code>-i</code> flag no longer
-  has a significant effect on build times, and it causes errors when the install
-  directory is not writable.
-</p>
-
-<h4 id="list-buildid">The <code>list</code> command</h4>
-
-<p><!-- golang.org/cl/263542 -->
-  When the <code>-export</code> flag is specified, the <code>BuildID</code>
-  field is now set to the build ID of the compiled package. This is equivalent
-  to running <code>go</code> <code>tool</code> <code>buildid</code> on
-  <code>go</code> <code>list</code> <code>-exported</code> <code>-f</code> <code>{{.Export}}</code>,
-  but without the extra step.
-</p>
-
-<h4 id="overlay-flag">The <code>-overlay</code> flag</h4>
-
-<p><!-- golang.org/issue/39958 -->
-  The <code>-overlay</code> flag specifies a JSON configuration file containing
-  a set of file path replacements. The <code>-overlay</code> flag may be used
-  with all build commands and <code>go</code> <code>mod</code> subcommands.
-  It is primarily intended to be used by editor tooling such as gopls to
-  understand the effects of unsaved changes to source files.  The config file
-  maps actual file paths to replacement file paths and the <code>go</code>
-  command and its builds will run as if the actual file paths exist with the
-  contents given by the replacement file paths, or don't exist if the replacement
-  file paths are empty.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p><!-- CL 252378 -->
-  The <a href="/cmd/cgo">cgo</a> tool will no longer try to translate
-  C struct bitfields into Go struct fields, even if their size can be
-  represented in Go. The order in which C bitfields appear in memory
-  is implementation dependent, so in some cases the cgo tool produced
-  results that were silently incorrect.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<h4 id="vet-testing-T">New warning for invalid testing.T use in
-goroutines</h4>
-
-<p><!-- CL 235677 -->
-  The vet tool now warns about invalid calls to the <code>testing.T</code>
-  method <code>Fatal</code> from within a goroutine created during the test.
-  This also warns on calls to <code>Fatalf</code>, <code>FailNow</code>, and
-  <code>Skip{,f,Now}</code> methods on <code>testing.T</code> tests or
-  <code>testing.B</code> benchmarks.
-</p>
-
-<p>
-  Calls to these methods stop the execution of the created goroutine and not
-  the <code>Test*</code> or <code>Benchmark*</code> function. So these are
-  <a href="/pkg/testing/#T.FailNow">required</a> to be called by the goroutine
-  running the test or benchmark function. For example:
-</p>
-
-<pre>
-func TestFoo(t *testing.T) {
-    go func() {
-        if condition() {
-            t.Fatal("oops") // This exits the inner func instead of TestFoo.
-        }
-        ...
-    }()
-}
-</pre>
-
-<p>
-  Code calling <code>t.Fatal</code> (or a similar method) from a created
-  goroutine should be rewritten to signal the test failure using
-  <code>t.Error</code> and exit the goroutine early using an alternative
-  method, such as using a <code>return</code> statement. The previous example
-  could be rewritten as:
-</p>
-
-<pre>
-func TestFoo(t *testing.T) {
-    go func() {
-        if condition() {
-            t.Error("oops")
-            return
-        }
-        ...
-    }()
-}
-</pre>
-
-<h4 id="vet-frame-pointer">New warning for frame pointer</h4>
-
-<p><!-- CL 248686, CL 276372 -->
-  The vet tool now warns about amd64 assembly that clobbers the BP
-  register (the frame pointer) without saving and restoring it,
-  contrary to the calling convention. Code that doesn't preserve the
-  BP register must be modified to either not use BP at all or preserve
-  BP by saving and restoring it. An easy way to preserve BP is to set
-  the frame size to a nonzero value, which causes the generated
-  prologue and epilogue to preserve the BP register for you.
-  See <a href="/cl/248260">CL 248260</a> for example
-  fixes.
-</p>
-
-<h4 id="vet-asn1-unmarshal">New warning for asn1.Unmarshal</h4>
-
-<p><!-- CL 243397 -->
-  The vet tool now warns about incorrectly passing a non-pointer or nil argument to
-  <a href="/pkg/encoding/asn1/#Unmarshal"><code>asn1.Unmarshal</code></a>.
-  This is like the existing checks for
-  <a href="/pkg/encoding/json/#Unmarshal"><code>encoding/json.Unmarshal</code></a>
-  and <a href="/pkg/encoding/xml/#Unmarshal"><code>encoding/xml.Unmarshal</code></a>.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p>
-  The new <a href="/pkg/runtime/metrics/"><code>runtime/metrics</code></a> package
-  introduces a stable interface for reading
-  implementation-defined metrics from the Go runtime.
-  It supersedes existing functions like
-  <a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a>
-  and
-  <a href="/pkg/runtime/debug/#GCStats"><code>debug.GCStats</code></a>
-  and is significantly more general and efficient.
-  See the package documentation for more details.
-</p>
-
-<p><!-- CL 254659 -->
-  Setting the <code>GODEBUG</code> environment variable
-  to <code>inittrace=1</code> now causes the runtime to emit a single
-  line to standard error for each package <code>init</code>,
-  summarizing its execution time and memory allocation. This trace can
-  be used to find bottlenecks or regressions in Go startup
-  performance.
-  The <a href="/pkg/runtime/#hdr-Environment_Variables"><code>GODEBUG</code>
-  documentation</a> describes the format.
-</p>
-
-<p><!-- CL 267100 -->
-  On Linux, the runtime now defaults to releasing memory to the
-  operating system promptly (using <code>MADV_DONTNEED</code>), rather
-  than lazily when the operating system is under memory pressure
-  (using <code>MADV_FREE</code>). This means process-level memory
-  statistics like RSS will more accurately reflect the amount of
-  physical memory being used by Go processes. Systems that are
-  currently using <code>GODEBUG=madvdontneed=1</code> to improve
-  memory monitoring behavior no longer need to set this environment
-  variable.
-</p>
-
-<p><!-- CL 220419, CL 271987 -->
-  Go 1.16 fixes a discrepancy between the race detector and
-  the <a href="/ref/mem">Go memory model</a>. The race detector now
-  more precisely follows the channel synchronization rules of the
-  memory model. As a result, the detector may now report races it
-  previously missed.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- CL 256459, CL 264837, CL 266203, CL 256460 -->
-  The compiler can now inline functions with
-  non-labeled <code>for</code> loops, method values, and type
-  switches. The inliner can also detect more indirect calls where
-  inlining is possible.
-</p>
-
-<h2 id="linker">Linker</h2>
-
-<p><!-- CL 248197 -->
-  This release includes additional improvements to the Go linker,
-  reducing linker resource usage (both time and memory) and improving
-  code robustness/maintainability. These changes form the second half
-  of a two-release project to
-  <a href="/s/better-linker">modernize the Go
-  linker</a>.
-</p>
-
-<p>
-  The linker changes in 1.16 extend the 1.15 improvements to all
-  supported architecture/OS combinations (the 1.15 performance improvements
-  were primarily focused on <code>ELF</code>-based OSes and
-  <code>amd64</code> architectures).  For a representative set of
-  large Go programs, linking is 20-25% faster than 1.15 and requires
-  5-15% less memory on average for <code>linux/amd64</code>, with larger
-  improvements for other architectures and OSes. Most binaries are
-  also smaller as a result of more aggressive symbol pruning.
-</p>
-
-<p><!-- CL 255259 -->
-  On Windows, <code>go build -buildmode=c-shared</code> now generates Windows
-  ASLR DLLs by default. ASLR can be disabled with <code>--ldflags=-aslr=false</code>.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="library-embed">Embedded Files</h3>
-
-<p>
-  The new <a href="/pkg/embed/"><code>embed</code></a> package
-  provides access to files embedded in the program during compilation
-  using the new <a href="#embed"><code>//go:embed</code> directive</a>.
-</p>
-
-<h3 id="fs">File Systems</h3>
-
-<p>
-  The new <a href="/pkg/io/fs/"><code>io/fs</code></a> package
-  defines the <a href="/pkg/io/fs/#FS"><code>fs.FS</code></a> interface,
-  an abstraction for read-only trees of files.
-  The standard library packages have been adapted to make use
-  of the interface as appropriate.
-</p>
-
-<p>
-  On the producer side of the interface,
-  the new <a href="/pkg/embed/#FS"><code>embed.FS</code></a> type
-  implements <code>fs.FS</code>, as does
-  <a href="/pkg/archive/zip/#Reader"><code>zip.Reader</code></a>.
-  The new <a href="/pkg/os/#DirFS"><code>os.DirFS</code></a> function
-  provides an implementation of <code>fs.FS</code> backed by a tree
-  of operating system files.
-</p>
-
-<p>
-  On the consumer side,
-  the new <a href="/pkg/net/http/#FS"><code>http.FS</code></a>
-  function converts an <code>fs.FS</code> to an
-  <a href="/pkg/net/http/#FileSystem"><code>http.FileSystem</code></a>.
-  Also, the <a href="/pkg/html/template/"><code>html/template</code></a>
-  and <a href="/pkg/text/template/"><code>text/template</code></a>
-  packages’ <a href="/pkg/html/template/#ParseFS"><code>ParseFS</code></a>
-  functions and methods read templates from an <code>fs.FS</code>.
-</p>
-
-<p>
-  For testing code that implements <code>fs.FS</code>,
-  the new <a href="/pkg/testing/fstest/"><code>testing/fstest</code></a>
-  package provides a <a href="/pkg/testing/fstest/#TestFS"><code>TestFS</code></a>
-  function that checks for and reports common mistakes.
-  It also provides a simple in-memory file system implementation,
-  <a href="/pkg/testing/fstest/#MapFS"><code>MapFS</code></a>,
-  which can be useful for testing code that accepts <code>fs.FS</code>
-  implementations.
-</p>
-
-<h3 id="ioutil">Deprecation of io/ioutil</h3>
-
-<p>
-  The <a href="/pkg/io/ioutil/"><code>io/ioutil</code></a> package has
-  turned out to be a poorly defined and hard to understand collection
-  of things. All functionality provided by the package has been moved
-  to other packages. The <code>io/ioutil</code> package remains and
-  will continue to work as before, but we encourage new code to use
-  the new definitions in the <a href="/pkg/io/"><code>io</code></a> and
-  <a href="/pkg/os/"><code>os</code></a> packages.
-
-  Here is a list of the new locations of the names exported
-  by <code>io/ioutil</code>:
-  <ul>
-    <li><a href="/pkg/io/ioutil/#Discard"><code>Discard</code></a>
-      => <a href="/pkg/io/#Discard"><code>io.Discard</code></a></li>
-    <li><a href="/pkg/io/ioutil/#NopCloser"><code>NopCloser</code></a>
-      => <a href="/pkg/io/#NopCloser"><code>io.NopCloser</code></a></li>
-    <li><a href="/pkg/io/ioutil/#ReadAll"><code>ReadAll</code></a>
-      => <a href="/pkg/io/#ReadAll"><code>io.ReadAll</code></a></li>
-    <li><a href="/pkg/io/ioutil/#ReadDir"><code>ReadDir</code></a>
-      => <a href="/pkg/os/#ReadDir"><code>os.ReadDir</code></a>
-      (note: returns a slice of
-      <a href="/pkg/os/#DirEntry"><code>os.DirEntry</code></a>
-      rather than a slice of
-      <a href="/pkg/io/fs/#FileInfo"><code>fs.FileInfo</code></a>)
-    </li>
-    <li><a href="/pkg/io/ioutil/#ReadFile"><code>ReadFile</code></a>
-      => <a href="/pkg/os/#ReadFile"><code>os.ReadFile</code></a></li>
-    <li><a href="/pkg/io/ioutil/#TempDir"><code>TempDir</code></a>
-      => <a href="/pkg/os/#MkdirTemp"><code>os.MkdirTemp</code></a></li>
-    <li><a href="/pkg/io/ioutil/#TempFile"><code>TempFile</code></a>
-      => <a href="/pkg/os/#CreateTemp"><code>os.CreateTemp</code></a></li>
-    <li><a href="/pkg/io/ioutil/#WriteFile"><code>WriteFile</code></a>
-      => <a href="/pkg/os/#WriteFile"><code>os.WriteFile</code></a></li>
-  </ul>
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-  <dd>
-    <p><!-- CL 243937 -->
-      The new <a href="/pkg/archive/zip/#Reader.Open"><code>Reader.Open</code></a>
-      method implements the <a href="/pkg/io/fs/#FS"><code>fs.FS</code></a>
-      interface.
-    </p>
-  </dd>
-</dl>
-
-<dl id="crypto/dsa"><dt><a href="/pkg/crypto/dsa/">crypto/dsa</a></dt>
-  <dd>
-    <p><!-- CL 257939 -->
-      The <a href="/pkg/crypto/dsa/"><code>crypto/dsa</code></a> package is now deprecated.
-      See <a href="/issue/40337">issue #40337</a>.
-    </p>
-  </dd>
-</dl><!-- crypto/dsa -->
-
-<dl id="crypto/hmac"><dt><a href="/pkg/crypto/hmac/">crypto/hmac</a></dt>
-  <dd>
-    <p><!-- CL 261960 -->
-      <a href="/pkg/crypto/hmac/#New"><code>New</code></a> will now panic if
-      separate calls to the hash generation function fail to return new values.
-      Previously, the behavior was undefined and invalid outputs were sometimes
-      generated.
-    </p>
-  </dd>
-</dl><!-- crypto/hmac -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 256897 -->
-      I/O operations on closing or closed TLS connections can now be detected
-      using the new <a href="/pkg/net/#ErrClosed"><code>net.ErrClosed</code></a>
-      error. A typical use would be <code>errors.Is(err, net.ErrClosed)</code>.
-    </p>
-
-    <p><!-- CL 266037 -->
-      A default write deadline is now set in
-      <a href="/pkg/crypto/tls/#Conn.Close"><code>Conn.Close</code></a>
-      before sending the "close notify" alert, in order to prevent blocking
-      indefinitely.
-    </p>
-
-    <p><!-- CL 239748 -->
-      Clients now return a handshake error if the server selects
-      <a href="/pkg/crypto/tls/#ConnectionState.NegotiatedProtocol">
-      an ALPN protocol</a> that was not in
-      <a href="/pkg/crypto/tls/#Config.NextProtos">
-      the list advertised by the client</a>.
-    </p>
-
-    <p><!-- CL 262857 -->
-      Servers will now prefer other available AEAD cipher suites (such as ChaCha20Poly1305)
-      over AES-GCM cipher suites if either the client or server doesn't have AES hardware
-      support, unless both <a href="/pkg/crypto/tls/#Config.PreferServerCipherSuites">
-      <code>Config.PreferServerCipherSuites</code></a>
-      and <a href="/pkg/crypto/tls/#Config.CipherSuites"><code>Config.CipherSuites</code></a>
-      are set. The client is assumed not to have AES hardware support if it does
-      not signal a preference for AES-GCM cipher suites.
-    </p>
-
-    <p><!-- CL 246637 -->
-      <a href="/pkg/crypto/tls/#Config.Clone"><code>Config.Clone</code></a> now
-      returns nil if the receiver is nil, rather than panicking.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p>
-      The <code>GODEBUG=x509ignoreCN=0</code> flag will be removed in Go 1.17.
-      It enables the legacy behavior of treating the <code>CommonName</code>
-      field on X.509 certificates as a host name when no Subject Alternative
-      Names are present.
-    </p>
-
-    <p><!-- CL 235078 -->
-      <a href="/pkg/crypto/x509/#ParseCertificate"><code>ParseCertificate</code></a> and
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      now enforce string encoding restrictions for the <code>DNSNames</code>,
-      <code>EmailAddresses</code>, and <code>URIs</code> fields. These fields
-      can only contain strings with characters within the ASCII range.
-    </p>
-
-    <p><!-- CL 259697 -->
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      now verifies the generated certificate's signature using the signer's
-      public key. If the signature is invalid, an error is returned, instead of
-      a malformed certificate.
-    </p>
-
-    <p><!-- CL 257939 -->
-      DSA signature verification is no longer supported. Note that DSA signature
-      generation was never supported.
-      See <a href="/issue/40337">issue #40337</a>.
-    </p>
-
-    <p><!-- CL 257257 -->
-      On Windows, <a href="/pkg/crypto/x509/#Certificate.Verify"><code>Certificate.Verify</code></a>
-      will now return all certificate chains that are built by the platform
-      certificate verifier, instead of just the highest ranked chain.
-    </p>
-
-    <p><!-- CL 262343 -->
-      The new <a href="/pkg/crypto/x509/#SystemRootsError.Unwrap"><code>SystemRootsError.Unwrap</code></a>
-      method allows accessing the <a href="/pkg/crypto/x509/#SystemRootsError.Err"><code>Err</code></a>
-      field through the <a href="/pkg/errors"><code>errors</code></a> package functions.
-    </p>
-
-    <p><!-- CL 230025 -->
-      On Unix systems, the <code>crypto/x509</code> package is now more
-      efficient in how it stores its copy of the system cert pool.
-      Programs that use only a small number of roots will use around a
-      half megabyte less memory.
-    </p>
-
-  </dd>
-</dl><!-- crypto/x509 -->
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- CL 255138 -->
-      More <a href="/pkg/debug/elf/#DT_NULL"><code>DT</code></a>
-      and <a href="/pkg/debug/elf/#PT_NULL"><code>PT</code></a>
-      constants have been added.
-    </p>
-  </dd>
-</dl><!-- debug/elf -->
-
-<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1">encoding/asn1</a></dt>
-  <dd>
-    <p><!-- CL 255881 -->
-      <a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a> and
-      <a href="/pkg/encoding/asn1/#UnmarshalWithParams"><code>UnmarshalWithParams</code></a>
-      now return an error instead of panicking when the argument is not
-      a pointer or is nil. This change matches the behavior of other
-      encoding packages such as <a href="/pkg/encoding/json"><code>encoding/json</code></a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="encoding/json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
-  <dd>
-    <p><!-- CL 234818 -->
-      The <code>json</code> struct field tags understood by
-      <a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>,
-      <a href="/pkg/encoding/json/#Unmarshal"><code>Unmarshal</code></a>,
-      and related functionality now permit semicolon characters within
-      a JSON object name for a Go struct field.
-    </p>
-  </dd>
-</dl><!-- encoding/json -->
-
-<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
-  <dd>
-    <p><!-- CL 264024 -->
-      The encoder has always taken care to avoid using namespace prefixes
-      beginning with <code>xml</code>, which are reserved by the XML
-      specification.
-      Now, following the specification more closely, that check is
-      case-insensitive, so that prefixes beginning
-      with <code>XML</code>, <code>XmL</code>, and so on are also
-      avoided.
-    </p>
-  </dd>
-</dl><!-- encoding/xml -->
-
-<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
-  <dd>
-    <p><!-- CL 240014 -->
-      The new <a href="/pkg/flag/#Func"><code>Func</code></a> function
-      allows registering a flag implemented by calling a function,
-      as a lighter-weight alternative to implementing the
-      <a href="/pkg/flag/#Value"><code>Value</code></a> interface.
-    </p>
-  </dd>
-</dl><!-- flag -->
-
-<dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt>
-  <dd>
-    <p><!-- CL 243941, CL 283636 -->
-      The <a href="/pkg/go/build/#Package"><code>Package</code></a>
-      struct has new fields that report information
-      about <code>//go:embed</code> directives in the package:
-      <a href="/pkg/go/build/#Package.EmbedPatterns"><code>EmbedPatterns</code></a>,
-      <a href="/pkg/go/build/#Package.EmbedPatternPos"><code>EmbedPatternPos</code></a>,
-      <a href="/pkg/go/build/#Package.TestEmbedPatterns"><code>TestEmbedPatterns</code></a>,
-      <a href="/pkg/go/build/#Package.TestEmbedPatternPos"><code>TestEmbedPatternPos</code></a>,
-      <a href="/pkg/go/build/#Package.XTestEmbedPatterns"><code>XTestEmbedPatterns</code></a>,
-      <a href="/pkg/go/build/#Package.XTestEmbedPatternPos"><code>XTestEmbedPatternPos</code></a>.
-    </p>
-
-    <p><!-- CL 240551 -->
-      The <a href="/pkg/go/build/#Package"><code>Package</code></a> field
-      <a href="/pkg/go/build/#Package.IgnoredGoFiles"><code>IgnoredGoFiles</code></a>
-      will no longer include files that start with "_" or ".",
-      as those files are always ignored.
-      <code>IgnoredGoFiles</code> is for files ignored because of
-      build constraints.
-    </p>
-
-    <p><!-- CL 240551 -->
-      The new <a href="/pkg/go/build/#Package"><code>Package</code></a>
-      field <a href="/pkg/go/build/#Package.IgnoredOtherFiles"><code>IgnoredOtherFiles</code></a>
-      has a list of non-Go files ignored because of build constraints.
-    </p>
-  </dd>
-</dl><!-- go/build -->
-
-<dl id="go/build/constraint"><dt><a href="/pkg/go/build/constraint/">go/build/constraint</a></dt>
-  <dd>
-    <p><!-- CL 240604 -->
-      The new
-      <a href="/pkg/go/build/constraint/"><code>go/build/constraint</code></a>
-      package parses build constraint lines, both the original
-      <code>// +build</code> syntax and the <code>//go:build</code>
-      syntax that will be introduced in Go 1.17.
-      This package exists so that tools built with Go 1.16 will be able
-      to process Go 1.17 source code.
-      See <a href="/design/draft-gobuild">https://golang.org/design/draft-gobuild</a>
-      for details about the build constraint syntaxes and the planned
-      transition to the <code>//go:build</code> syntax.
-      Note that <code>//go:build</code> lines are <b>not</b> supported
-      in Go 1.16 and should not be introduced into Go programs yet.
-    </p>
-  </dd>
-</dl><!-- go/build/constraint -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 243938 -->
-      The new <a href="/pkg/html/template/#ParseFS"><code>template.ParseFS</code></a>
-      function and <a href="/pkg/html/template/#Template.ParseFS"><code>template.Template.ParseFS</code></a>
-      method are like <a href="/pkg/html/template/#ParseGlob"><code>template.ParseGlob</code></a>
-      and <a href="/pkg/html/template/#Template.ParseGlob"><code>template.Template.ParseGlob</code></a>,
-      but read the templates from an <a href="/pkg/io/fs/#FS"><code>fs.FS</code></a>.
-    </p>
-  </dd>
-</dl><!-- html/template -->
-
-<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
-  <dd>
-    <p><!-- CL 261577 -->
-      The package now defines a
-      <a href="/pkg/io/#ReadSeekCloser"><code>ReadSeekCloser</code></a> interface.
-    </p>
-
-    <p><!-- CL 263141 -->
-      The package now defines
-      <a href="/pkg/io/#Discard"><code>Discard</code></a>,
-      <a href="/pkg/io/#NopCloser"><code>NopCloser</code></a>, and
-      <a href="/pkg/io/#ReadAll"><code>ReadAll</code></a>,
-      to be used instead of the same names in the
-      <a href="/pkg/io/ioutil/"><code>io/ioutil</code></a> package.
-    </p>
-  </dd>
-</dl><!-- io -->
-
-<dl id="log"><dt><a href="/pkg/log/">log</a></dt>
-  <dd>
-    <p><!-- CL 264460 -->
-      The new <a href="/pkg/log/#Default"><code>Default</code></a> function
-      provides access to the default <a href="/pkg/log/#Logger"><code>Logger</code></a>.
-    </p>
-  </dd>
-</dl><!-- log -->
-
-<dl id="log/syslog"><dt><a href="/pkg/log/syslog/">log/syslog</a></dt>
-  <dd>
-    <p><!-- CL 264297 -->
-      The <a href="/pkg/log/syslog/#Writer"><code>Writer</code></a>
-      now uses the local message format
-      (omitting the host name and using a shorter time stamp)
-      when logging to custom Unix domain sockets,
-      matching the format already used for the default log socket.
-    </p>
-  </dd>
-</dl><!-- log/syslog -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-  <dd>
-    <p><!-- CL 247477 -->
-      The <a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a>'s
-      <a href="/pkg/mime/multipart/#Reader.ReadForm"><code>ReadForm</code></a>
-      method no longer rejects form data
-      when passed the maximum int64 value as a limit.
-    </p>
-  </dd>
-</dl><!-- mime/multipart -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 250357 -->
-      The case of I/O on a closed network connection, or I/O on a network
-      connection that is closed before any of the I/O completes, can now
-      be detected using the new <a href="/pkg/net/#ErrClosed"><code>ErrClosed</code></a>
-      error. A typical use would be <code>errors.Is(err, net.ErrClosed)</code>.
-      In earlier releases the only way to reliably detect this case was to
-      match the string returned by the <code>Error</code> method
-      with <code>"use of closed network connection"</code>.
-    </p>
-
-    <p><!-- CL 255898 -->
-      In previous Go releases the default TCP listener backlog size on Linux systems,
-      set by <code>/proc/sys/net/core/somaxconn</code>, was limited to a maximum of <code>65535</code>.
-      On Linux kernel version 4.1 and above, the maximum is now <code>4294967295</code>.
-    </p>
-
-    <p><!-- CL 238629 -->
-      On Linux, host name lookups no longer use DNS before checking
-      <code>/etc/hosts</code> when <code>/etc/nsswitch.conf</code>
-      is missing; this is common on musl-based systems and makes
-      Go programs match the behavior of C programs on those systems.
-    </p>
-  </dd>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 233637 -->
-      In the <a href="/pkg/net/http/"><code>net/http</code></a> package, the
-      behavior of <a href="/pkg/net/http/#StripPrefix"><code>StripPrefix</code></a>
-      has been changed to strip the prefix from the request URL's
-      <code>RawPath</code> field in addition to its <code>Path</code> field.
-      In past releases, only the <code>Path</code> field was trimmed, and so if the
-      request URL contained any escaped characters the URL would be modified to
-      have mismatched <code>Path</code> and <code>RawPath</code> fields.
-      In Go 1.16, <code>StripPrefix</code> trims both fields.
-      If there are escaped characters in the prefix part of the request URL the
-      handler serves a 404 instead of its previous behavior of invoking the
-      underlying handler with a mismatched <code>Path</code>/<code>RawPath</code> pair.
-    </p>
-
-    <p><!-- CL 252497 -->
-      The <a href="/pkg/net/http/"><code>net/http</code></a> package now rejects HTTP range requests
-      of the form <code>"Range": "bytes=--N"</code> where <code>"-N"</code> is a negative suffix length, for
-      example <code>"Range": "bytes=--2"</code>. It now replies with a <code>416 "Range Not Satisfiable"</code> response.
-    </p>
-
-    <p><!-- CL 256498, golang.org/issue/36990 -->
-      Cookies set with <a href="/pkg/net/http/#SameSiteDefaultMode"><code>SameSiteDefaultMode</code></a>
-      now behave according to the current spec (no attribute is set) instead of
-      generating a SameSite key without a value.
-    </p>
-
-    <p><!-- CL 250039 -->
-      The <a href="/pkg/net/http/#Client"><code>Client</code></a> now sends
-      an explicit <code>Content-Length:</code> <code>0</code>
-      header in <code>PATCH</code> requests with empty bodies,
-      matching the existing behavior of <code>POST</code> and <code>PUT</code>.
-    </p>
-
-    <p><!-- CL 249440 -->
-      The <a href="/pkg/net/http/#ProxyFromEnvironment"><code>ProxyFromEnvironment</code></a>
-      function no longer returns the setting of the <code>HTTP_PROXY</code>
-      environment variable for <code>https://</code> URLs when
-      <code>HTTPS_PROXY</code> is unset.
-    </p>
-
-    <p><!-- 259917 -->
-      The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-      type has a new field
-      <a href="/pkg/net/http/#Transport.GetProxyConnectHeader"><code>GetProxyConnectHeader</code></a>
-      which may be set to a function that returns headers to send to a
-      proxy during a <code>CONNECT</code> request.
-      In effect <code>GetProxyConnectHeader</code> is a dynamic
-      version of the existing field
-      <a href="/pkg/net/http/#Transport.ProxyConnectHeader"><code>ProxyConnectHeader</code></a>;
-      if <code>GetProxyConnectHeader</code> is not <code>nil</code>,
-      then <code>ProxyConnectHeader</code> is ignored.
-    </p>
-
-    <p><!-- CL 243939 -->
-      The new <a href="/pkg/net/http/#FS"><code>http.FS</code></a>
-      function converts an <a href="/pkg/io/fs/#FS"><code>fs.FS</code></a>
-      to an <a href="/pkg/net/http/#FileSystem"><code>http.FileSystem</code></a>.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-  <dd>
-    <p><!-- CL 260637 -->
-      <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
-      now flushes buffered data more aggressively when proxying
-      streamed responses with unknown body lengths.
-    </p>
-  </dd>
-</dl><!-- net/http/httputil -->
-
-<dl id="net/smtp"><dt><a href="/pkg/net/smtp/">net/smtp</a></dt>
-  <dd>
-    <p><!-- CL 247257 -->
-      The <a href="/pkg/net/smtp/#Client"><code>Client</code></a>'s
-      <a href="/pkg/net/smtp/#Client.Mail"><code>Mail</code></a>
-      method now sends the <code>SMTPUTF8</code> directive to
-      servers that support it, signaling that addresses are encoded in UTF-8.
-    </p>
-  </dd>
-</dl><!-- net/smtp -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 242998 -->
-      <a href="/pkg/os/#Process.Signal"><code>Process.Signal</code></a> now
-      returns <a href="/pkg/os/#ErrProcessDone"><code>ErrProcessDone</code></a>
-      instead of the unexported <code>errFinished</code> when the process has
-      already finished.
-    </p>
-
-    <p><!-- CL 261540 -->
-      The package defines a new type
-      <a href="/pkg/os/#DirEntry"><code>DirEntry</code></a>
-      as an alias for <a href="/pkg/io/fs/#DirEntry"><code>fs.DirEntry</code></a>.
-      The new <a href="/pkg/os/#ReadDir"><code>ReadDir</code></a>
-      function and the new
-      <a href="/pkg/os/#File.ReadDir"><code>File.ReadDir</code></a>
-      method can be used to read the contents of a directory into a
-      slice of <a href="/pkg/os/#DirEntry"><code>DirEntry</code></a>.
-      The <a href="/pkg/os/#File.Readdir"><code>File.Readdir</code></a>
-      method (note the lower case <code>d</code> in <code>dir</code>)
-      still exists, returning a slice of
-      <a href="/pkg/os/#FileInfo"><code>FileInfo</code></a>, but for
-      most programs it will be more efficient to switch to
-      <a href="/pkg/os/#File.ReadDir"><code>File.ReadDir</code></a>.
-    </p>
-
-    <p><!-- CL 263141 -->
-      The package now defines
-      <a href="/pkg/os/#CreateTemp"><code>CreateTemp</code></a>,
-      <a href="/pkg/os/#MkdirTemp"><code>MkdirTemp</code></a>,
-      <a href="/pkg/os/#ReadFile"><code>ReadFile</code></a>, and
-      <a href="/pkg/os/#WriteFile"><code>WriteFile</code></a>,
-      to be used instead of functions defined in the
-      <a href="/pkg/io/ioutil/"><code>io/ioutil</code></a> package.
-    </p>
-
-    <p><!-- CL 243906 -->
-      The types <a href="/pkg/os/#FileInfo"><code>FileInfo</code></a>,
-      <a href="/pkg/os/#FileMode"><code>FileMode</code></a>, and
-      <a href="/pkg/os/#PathError"><code>PathError</code></a>
-      are now aliases for types of the same name in the
-      <a href="/pkg/io/fs/"><code>io/fs</code></a> package.
-      Function signatures in the <a href="/pkg/os/"><code>os</code></a>
-      package have been updated to refer to the names in the
-      <a href="/pkg/io/fs/"><code>io/fs</code></a> package.
-      This should not affect any existing code.
-    </p>
-
-    <p><!-- CL 243911 -->
-      The new <a href="/pkg/os/#DirFS"><code>DirFS</code></a> function
-      provides an implementation of
-      <a href="/pkg/io/fs/#FS"><code>fs.FS</code></a> backed by a tree
-      of operating system files.
-    </p>
-  </dd>
-</dl><!-- os -->
-
-<dl id="os/signal"><dt><a href="/pkg/os/signal/">os/signal</a></dt>
-  <dd>
-    <p><!-- CL 219640 -->
-      The new
-      <a href="/pkg/os/signal/#NotifyContext"><code>NotifyContext</code></a>
-      function allows creating contexts that are canceled upon arrival of
-      specific signals.
-    </p>
-  </dd>
-</dl><!-- os/signal -->
-
-<dl id="path"><dt><a href="/pkg/path/">path</a></dt>
-  <dd>
-    <p><!-- CL 264397, golang.org/issues/28614 -->
-      The <a href="/pkg/path/#Match"><code>Match</code></a> function now
-      returns an error if the unmatched part of the pattern has a
-      syntax error. Previously, the function returned early on a failed
-      match, and thus did not report any later syntax error in the
-      pattern.
-    </p>
-  </dd>
-</dl><!-- path -->
-
-<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
-  <dd>
-    <p><!-- CL 267887 -->
-      The new function
-      <a href="/pkg/path/filepath/#WalkDir"><code>WalkDir</code></a>
-      is similar to
-      <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a>,
-      but is typically more efficient.
-      The function passed to <code>WalkDir</code> receives a
-      <a href="/pkg/io/fs/#DirEntry"><code>fs.DirEntry</code></a>
-      instead of a
-      <a href="/pkg/io/fs/#FileInfo"><code>fs.FileInfo</code></a>.
-      (To clarify for those who recall the <code>Walk</code> function
-      as taking an <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a>,
-      <code>os.FileInfo</code> is now an alias for <code>fs.FileInfo</code>.)
-    </p>
-
-    <p><!-- CL 264397, golang.org/issues/28614 -->
-      The <a href="/pkg/path/filepath#Match"><code>Match</code></a> and
-      <a href="/pkg/path/filepath#Glob"><code>Glob</code></a> functions now
-      return an error if the unmatched part of the pattern has a
-      syntax error. Previously, the functions returned early on a failed
-      match, and thus did not report any later syntax error in the
-      pattern.
-    </p>
-  </dd>
-</dl><!-- path/filepath -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 192331 -->
-      The Zero function has been optimized to avoid allocations. Code
-      which incorrectly compares the returned Value to another Value
-      using == or DeepEqual may get different results than those
-      obtained in previous Go versions. The documentation
-      for <a href="/pkg/reflect#Value"><code>reflect.Value</code></a>
-      describes how to compare two <code>Value</code>s correctly.
-    </p>
-  </dd>
-</dl><!-- reflect -->
-
-<dl id="runtime/debug"><dt><a href="/pkg/runtime/debug/">runtime/debug</a></dt>
-  <dd>
-    <p><!-- CL 249677 -->
-      The <a href="/pkg/runtime#Error"><code>runtime.Error</code></a> values
-      used when <code>SetPanicOnFault</code> is enabled may now have an
-      <code>Addr</code> method. If that method exists, it returns the memory
-      address that triggered the fault.
-    </p>
-  </dd>
-</dl><!-- runtime/debug -->
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p><!-- CL 260858 -->
-      <a href="/pkg/strconv/#ParseFloat"><code>ParseFloat</code></a> now uses
-      the <a
-      href="https://nigeltao.github.io/blog/2020/eisel-lemire.html">Eisel-Lemire
-      algorithm</a>, improving performance by up to a factor of 2. This can
-      also speed up decoding textual formats like <a
-      href="/pkg/encoding/json/"><code>encoding/json</code></a>.
-    </p>
-  </dd>
-</dl><!-- strconv -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 263271 -->
-      <a href="/pkg/syscall/?GOOS=windows#NewCallback"><code>NewCallback</code></a>
-      and
-      <a href="/pkg/syscall/?GOOS=windows#NewCallbackCDecl"><code>NewCallbackCDecl</code></a>
-      now correctly support callback functions with multiple
-      sub-<code>uintptr</code>-sized arguments in a row. This may
-      require changing uses of these functions to eliminate manual
-      padding between small arguments.
-    </p>
-
-    <p><!-- CL 261917 -->
-      <a href="/pkg/syscall/?GOOS=windows#SysProcAttr"><code>SysProcAttr</code></a> on Windows has a new <code>NoInheritHandles</code> field that disables inheriting handles when creating a new process.
-    </p>
-
-    <p><!-- CL 269761, golang.org/issue/42584 -->
-      <a href="/pkg/syscall/?GOOS=windows#DLLError"><code>DLLError</code></a> on Windows now has an <code>Unwrap</code> method for unwrapping its underlying error.
-    </p>
-
-    <p><!-- CL 210639 -->
-      On Linux,
-      <a href="/pkg/syscall/#Setgid"><code>Setgid</code></a>,
-      <a href="/pkg/syscall/#Setuid"><code>Setuid</code></a>,
-      and related calls are now implemented.
-      Previously, they returned an <code>syscall.EOPNOTSUPP</code> error.
-    </p>
-
-    <p><!-- CL 210639 -->
-      On Linux, the new functions
-      <a href="/pkg/syscall/#AllThreadsSyscall"><code>AllThreadsSyscall</code></a>
-      and <a href="/pkg/syscall/#AllThreadsSyscall6"><code>AllThreadsSyscall6</code></a>
-      may be used to make a system call on all Go threads in the process.
-      These functions may only be used by programs that do not use cgo;
-      if a program uses cgo, they will always return
-      <a href="/pkg/syscall/#ENOTSUP"><code>syscall.ENOTSUP</code></a>.
-    </p>
-  </dd>
-</dl><!-- syscall -->
-
-<dl id="testing/iotest"><dt><a href="/pkg/testing/iotest/">testing/iotest</a></dt>
-  <dd>
-    <p><!-- CL 199501 -->
-      The new
-      <a href="/pkg/testing/iotest/#ErrReader"><code>ErrReader</code></a>
-      function returns an
-      <a href="/pkg/io/#Reader"><code>io.Reader</code></a> that always
-      returns an error.
-    </p>
-
-    <p><!-- CL 243909 -->
-      The new
-      <a href="/pkg/testing/iotest/#TestReader"><code>TestReader</code></a>
-      function tests that an <a href="/pkg/io/#Reader"><code>io.Reader</code></a>
-      behaves correctly.
-    </p>
-  </dd>
-</dl><!-- testing/iotest -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 254257, golang.org/issue/29770 -->
-      Newlines characters are now allowed inside action delimiters,
-      permitting actions to span multiple lines.
-    </p>
-
-    <p><!-- CL 243938 -->
-      The new <a href="/pkg/text/template/#ParseFS"><code>template.ParseFS</code></a>
-      function and <a href="/pkg/text/template/#Template.ParseFS"><code>template.Template.ParseFS</code></a>
-      method are like <a href="/pkg/text/template/#ParseGlob"><code>template.ParseGlob</code></a>
-      and <a href="/pkg/text/template/#Template.ParseGlob"><code>template.Template.ParseGlob</code></a>,
-      but read the templates from an <a href="/pkg/io/fs/#FS"><code>fs.FS</code></a>.
-    </p>
-  </dd>
-</dl><!-- text/template -->
-
-<dl id="text/template/parse"><dt><a href="/pkg/text/template/parse/">text/template/parse</a></dt>
-  <dd>
-    <p><!-- CL 229398, golang.org/issue/34652 -->
-      A new <a href="/pkg/text/template/parse/#CommentNode"><code>CommentNode</code></a>
-      was added to the parse tree. The <a href="/pkg/text/template/parse/#Mode"><code>Mode</code></a>
-      field in the <code>parse.Tree</code> enables access to it.
-    </p>
-  </dd>
-</dl><!-- text/template/parse -->
-
-<dl id="time/tzdata"><dt><a href="/pkg/time/tzdata/">time/tzdata</a></dt>
-  <dd>
-    <p><!-- CL 261877 -->
-      The slim timezone data format is now used for the timezone database in
-      <code>$GOROOT/lib/time/zoneinfo.zip</code> and the embedded copy in this
-      package. This reduces the size of the timezone database by about 350 KB.
-    </p>
-  </dd>
-</dl><!-- time/tzdata -->
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-  <dd>
-    <p><!-- CL 248765 -->
-      The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-      support throughout the system has been upgraded from Unicode 12.0.0 to
-      <a href="https://www.unicode.org/versions/Unicode13.0.0/">Unicode 13.0.0</a>,
-      which adds 5,930 new characters, including four new scripts, and 55 new emoji.
-      Unicode 13.0.0 also designates plane 3 (U+30000-U+3FFFF) as the tertiary
-      ideographic plane.
-    </p>
-  </dd>
-</dl><!-- unicode -->
diff --git a/_content/doc/go1.17.html b/_content/doc/go1.17.html
deleted file mode 100644
index 81c6603..0000000
--- a/_content/doc/go1.17.html
+++ /dev/null
@@ -1,1248 +0,0 @@
-<!--{
-	"Title": "Go 1.17 Release Notes",
-	"Path":  "/doc/go1.17"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.17</h2>
-
-<p>
-  The latest Go release, version 1.17, arrives six months after <a href="/doc/go1.16">Go 1.16</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  Go 1.17 includes three small enhancements to the language.
-</p>
-
-<ul>
-  <li><!-- CL 216424; issue 395 -->
-    <a href="/ref/spec#Conversions_from_slice_to_array_pointer">Conversions
-    from slice to array pointer</a>: An expression <code>s</code> of
-    type <code>[]T</code> may now be converted to array pointer type
-    <code>*[N]T</code>. If <code>a</code> is the result of such a
-    conversion, then corresponding indices that are in range refer to
-    the same underlying elements: <code>&amp;a[i] == &amp;s[i]</code>
-    for <code>0 &lt;= i &lt; N</code>. The conversion panics if
-    <code>len(s)</code> is less than <code>N</code>.
-  </li>
-
-  <li><!-- CL 312212; issue 40481 -->
-    <a href="/pkg/unsafe#Add"><code>unsafe.Add</code></a>:
-    <code>unsafe.Add(ptr, len)</code> adds <code>len</code>
-    to <code>ptr</code> and returns the updated pointer
-    <code>unsafe.Pointer(uintptr(ptr) + uintptr(len))</code>.
-  </li>
-
-  <li><!-- CL 312212; issue 19367 -->
-    <a href="/pkg/unsafe#Slice"><code>unsafe.Slice</code></a>:
-    For expression <code>ptr</code> of type <code>*T</code>,
-    <code>unsafe.Slice(ptr, len)</code> returns a slice of
-    type <code>[]T</code> whose underlying array starts
-    at <code>ptr</code> and whose length and capacity
-    are <code>len</code>.
-  </li>
-</ul>
-
-<p>
-  The package unsafe enhancements were added to simplify writing code that conforms
-  to <code>unsafe.Pointer</code>'s <a href="/pkg/unsafe/#Pointer">safety
-  rules</a>, but the rules remain unchanged. In particular, existing
-  programs that correctly use <code>unsafe.Pointer</code> remain
-  valid, and new programs must still follow the rules when
-  using <code>unsafe.Add</code> or <code>unsafe.Slice</code>.
-</p>
-
-
-<p>
-  Note that the new conversion from slice to array pointer is the
-  first case in which a type conversion can panic at run time.
-  Analysis tools that assume type conversions can never panic
-  should be updated to consider this possibility.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="darwin">Darwin</h3>
-
-<p><!-- golang.org/issue/23011 -->
-  As <a href="go1.16#darwin">announced</a> in the Go 1.16 release
-  notes, Go 1.17 requires macOS 10.13 High Sierra or later; support
-  for previous versions has been discontinued.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p><!-- golang.org/issue/36439 -->
-  Go 1.17 adds support of 64-bit ARM architecture on Windows (the
-  <code>windows/arm64</code> port). This port supports cgo.
-</p>
-
-<h3 id="openbsd">OpenBSD</h3>
-
-<p><!-- golang.org/issue/43005 -->
-  The 64-bit MIPS architecture on OpenBSD (the <code>openbsd/mips64</code>
-  port) now supports cgo.
-</p>
-
-<p><!-- golang.org/issue/36435 -->
-  In Go 1.16, on the 64-bit x86 and 64-bit ARM architectures on
-  OpenBSD (the <code>openbsd/amd64</code> and <code>openbsd/arm64</code>
-  ports) system calls are made through <code>libc</code>, instead
-  of directly using machine instructions. In Go 1.17, this is also
-  done on the 32-bit x86 and 32-bit ARM architectures on OpenBSD
-  (the <code>openbsd/386</code> and <code>openbsd/arm</code> ports).
-  This ensures compatibility with OpenBSD 6.9 onwards, which require
-  system calls to be made through <code>libc</code> for non-static
-  Go binaries.
-</p>
-
-<h3 id="arm64">ARM64</h3>
-
-<p><!-- CL 288814 -->
-  Go programs now maintain stack frame pointers on the 64-bit ARM
-  architecture on all operating systems. Previously, stack frame
-  pointers were only enabled on Linux, macOS, and iOS.
-</p>
-
-<h3 id="loong64">loong64 GOARCH value reserved</h3>
-
-<p><!-- CL 333909 -->
-  The main Go compiler does not yet support the LoongArch
-  architecture, but we've reserved the <code>GOARCH</code> value
-  "<code>loong64</code>".
-  This means that Go files named <code>*_loong64.go</code> will now
-  be <a href="/pkg/go/build/#hdr-Build_Constraints">ignored by Go
-  tools</a> except when that GOARCH value is being used.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="go-command">Go command</h3>
-
-<a id="lazy-loading"><!-- for existing links only --></a>
-<h4 id="graph-pruning">Pruned module graphs in <code>go 1.17</code> modules</h4>
-
-<p><!-- golang.org/issue/36460 -->
-  If a module specifies <code>go</code> <code>1.17</code> or higher, the module
-  graph includes only the <em>immediate</em> dependencies of
-  other <code>go</code> <code>1.17</code> modules, not their full transitive
-  dependencies. (See <a href="/ref/mod#graph-pruning">Module graph pruning</a>
-  for more detail.)
-</p>
-
-<p>
-  For the <code>go</code> command to correctly resolve transitive imports using
-  the pruned module graph, the <code>go.mod</code> file for each module needs to
-  include more detail about the transitive dependencies relevant to that module.
-  If a module specifies <code>go</code> <code>1.17</code> or higher in its
-  <code>go.mod</code> file, its <code>go.mod</code> file now contains an
-  explicit <a href="/ref/mod#go-mod-file-require"><code>require</code>
-  directive</a> for every module that provides a transitively-imported package.
-  (In previous versions, the <code>go.mod</code> file typically only included
-  explicit requirements for <em>directly</em>-imported packages.)
-<p>
-
-<p>
-  Since the expanded <code>go.mod</code> file needed for module graph pruning
-  includes all of the dependencies needed to load the imports of any package in
-  the main module, if the main module specifies
-  <code>go</code> <code>1.17</code> or higher the <code>go</code> tool no longer
-  reads (or even downloads) <code>go.mod</code> files for dependencies if they
-  are not needed in order to complete the requested command.
-  (See <a href="/ref/mod#lazy-loading">Lazy loading</a>.)
-</p>
-
-<p><!-- golang.org/issue/45965 -->
-  Because the number of explicit requirements may be substantially larger in an
-  expanded Go 1.17 <code>go.mod</code> file, the newly-added requirements
-  on <em>indirect</em> dependencies in a <code>go</code> <code>1.17</code>
-  module are maintained in a separate <code>require</code> block from the block
-  containing direct dependencies.
-</p>
-
-<p><!-- golang.org/issue/45094 -->
-  To facilitate the upgrade to Go 1.17 pruned module graphs, the
-  <a href="/ref/mod#go-mod-tidy"><code>go</code> <code>mod</code> <code>tidy</code></a>
-  subcommand now supports a <code>-go</code> flag to set or change
-  the <code>go</code> version in the <code>go.mod</code> file. To convert
-  the <code>go.mod</code> file for an existing module to Go 1.17 without
-  changing the selected versions of its dependencies, run:
-</p>
-
-<pre>
-  go mod tidy -go=1.17
-</pre>
-
-<p><!-- golang.org/issue/46141 -->
-  By default, <code>go</code> <code>mod</code> <code>tidy</code> verifies that
-  the selected versions of dependencies relevant to the main module are the same
-  versions that would be used by the prior Go release (Go 1.16 for a module that
-  specifies <code>go</code> <code>1.17</code>), and preserves
-  the <code>go.sum</code> entries needed by that release even for dependencies
-  that are not normally needed by other commands.
-</p>
-
-<p>
-  The <code>-compat</code> flag allows that version to be overridden to support
-  older (or only newer) versions, up to the version specified by
-  the <code>go</code> directive in the <code>go.mod</code> file. To tidy
-  a <code>go</code> <code>1.17</code> module for Go 1.17 only, without saving
-  checksums for (or checking for consistency with) Go 1.16:
-</p>
-
-<pre>
-  go mod tidy -compat=1.17
-</pre>
-
-<p>
-  Note that even if the main module is tidied with <code>-compat=1.17</code>,
-  users who <code>require</code> the module from a
-  <code>go</code> <code>1.16</code> or earlier module will still be able to
-  use it, provided that the packages use only compatible language and library
-  features.
-</p>
-
-<p><!-- golang.org/issue/46366 -->
-  The <a href="/ref/mod#go-mod-graph"><code>go</code> <code>mod</code> <code>graph</code></a>
-  subcommand also supports the <code>-go</code> flag, which causes it to report
-  the graph as seen by the indicated Go version, showing dependencies that may
-  otherwise be pruned out.
-</p>
-
-<h4 id="module-deprecation-comments">Module deprecation comments</h4>
-
-<p><!-- golang.org/issue/40357 -->
-  Module authors may deprecate a module by adding a
-  <a href="/ref/mod#go-mod-file-module-deprecation"><code>// Deprecated:</code>
-  comment</a> to <code>go.mod</code>, then tagging a new version.
-  <code>go</code> <code>get</code> now prints a warning if a module needed to
-  build packages named on the command line is deprecated. <code>go</code>
-  <code>list</code> <code>-m</code> <code>-u</code> prints deprecations for all
-  dependencies (use <code>-f</code> or <code>-json</code> to show the full
-  message). The <code>go</code> command considers different major versions to
-  be distinct modules, so this mechanism may be used, for example, to provide
-  users with migration instructions for a new major version.
-</p>
-
-<h4 id="go-get"><code>go</code> <code>get</code></h4>
-
-<p><!-- golang.org/issue/37519 -->
-  The <code>go</code> <code>get</code> <code>-insecure</code> flag is
-  deprecated and has been removed. To permit the use of insecure schemes
-  when fetching dependencies, please use the <code>GOINSECURE</code>
-  environment variable. The <code>-insecure</code> flag also bypassed module
-  sum validation, use <code>GOPRIVATE</code> or <code>GONOSUMDB</code> if
-  you need that functionality. See <code>go</code> <code>help</code>
-  <code>environment</code> for details.
-</p>
-
-<p><!-- golang.org/issue/43684 -->
-  <code>go</code> <code>get</code> prints a deprecation warning when installing
-  commands outside the main module (without the <code>-d</code> flag).
-  <code>go</code> <code>install</code> <code>cmd@version</code> should be used
-  instead to install a command at a specific version, using a suffix like
-  <code>@latest</code> or <code>@v1.2.3</code>. In Go 1.18, the <code>-d</code>
-  flag will always be enabled, and <code>go</code> <code>get</code> will only
-  be used to change dependencies in <code>go.mod</code>.
-</p>
-
-<h4 id="missing-go-directive"><code>go.mod</code> files missing <code>go</code> directives</h4>
-
-<p><!-- golang.org/issue/44976 -->
-  If the main module's <code>go.mod</code> file does not contain
-  a <a href="/doc/modules/gomod-ref#go"><code>go</code> directive</a> and
-  the <code>go</code> command cannot update the <code>go.mod</code> file, the
-  <code>go</code> command now assumes <code>go 1.11</code> instead of the
-  current release. (<code>go</code> <code>mod</code> <code>init</code> has added
-  <code>go</code> directives automatically <a href="/doc/go1.12#modules">since
-  Go 1.12</a>.)
-</p>
-
-<p><!-- golang.org/issue/44976 -->
-  If a module dependency lacks an explicit <code>go.mod</code> file, or
-  its <code>go.mod</code> file does not contain
-  a <a href="/doc/modules/gomod-ref#go"><code>go</code> directive</a>,
-  the <code>go</code> command now assumes <code>go 1.16</code> for that
-  dependency instead of the current release. (Dependencies developed in GOPATH
-  mode may lack a <code>go.mod</code> file, and
-  the <code>vendor/modules.txt</code> has to date never recorded
-  the <code>go</code> versions indicated by dependencies' <code>go.mod</code>
-  files.)
-</p>
-
-<h4 id="vendor"><code>vendor</code> contents</h4>
-
-<p><!-- golang.org/issue/36876 -->
-  If the main module specifies <code>go</code> <code>1.17</code> or higher,
-  <a href="/ref/mod#go-mod-vendor"><code>go</code> <code>mod</code> <code>vendor</code></a>
-  now annotates
-  <code>vendor/modules.txt</code> with the <code>go</code> version indicated by
-  each vendored module in its own <code>go.mod</code> file. The annotated
-  version is used when building the module's packages from vendored source code.
-</p>
-
-<p><!-- golang.org/issue/42970 -->
-  If the main module specifies <code>go</code> <code>1.17</code> or higher,
-  <code>go</code> <code>mod</code> <code>vendor</code> now omits <code>go.mod</code>
-  and <code>go.sum</code> files for vendored dependencies, which can otherwise
-  interfere with the ability of the <code>go</code> command to identify the correct
-  module root when invoked within the <code>vendor</code> tree.
-</p>
-
-<h4 id="password-prompts">Password prompts</h4>
-
-<p><!-- golang.org/issue/44904 -->
-  The <code>go</code> command by default now suppresses SSH password prompts and
-  Git Credential Manager prompts when fetching Git repositories using SSH, as it
-  already did previously for other Git password prompts. Users authenticating to
-  private Git repos with password-protected SSH may configure
-  an <code>ssh-agent</code> to enable the <code>go</code> command to use
-  password-protected SSH keys.
-</p>
-
-<h4 id="go-mod-download"><code>go</code> <code>mod</code> <code>download</code></h4>
-
-<p><!-- golang.org/issue/45332 -->
-  When <code>go</code> <code>mod</code> <code>download</code> is invoked without
-  arguments, it will no longer save sums for downloaded module content to
-  <code>go.sum</code>. It may still make changes to <code>go.mod</code> and
-  <code>go.sum</code> needed to load the build list. This is the same as the
-  behavior in Go 1.15. To save sums for all modules, use <code>go</code>
-  <code>mod</code> <code>download</code> <code>all</code>.
-</p>
-
-<h4 id="build-lines"><code>//go:build</code> lines</h4>
-
-<p>
-  The <code>go</code> command now understands <code>//go:build</code> lines
-  and prefers them over <code>// +build</code> lines. The new syntax uses
-  boolean expressions, just like Go, and should be less error-prone.
-  As of this release, the new syntax is fully supported, and all Go files
-  should be updated to have both forms with the same meaning. To aid in
-  migration, <a href="#gofmt"><code>gofmt</code></a> now automatically
-  synchronizes the two forms. For more details on the syntax and migration plan,
-  see
-  <a href="/design/draft-gobuild">https://golang.org/design/draft-gobuild</a>.
-</p>
-
-<h4 id="go run"><code>go</code> <code>run</code></h4>
-
-<p><!-- golang.org/issue/42088 -->
-  <code>go</code> <code>run</code> now accepts arguments with version suffixes
-  (for example, <code>go</code> <code>run</code>
-  <code>example.com/cmd@v1.0.0</code>).  This causes <code>go</code>
-  <code>run</code> to build and run packages in module-aware mode, ignoring the
-  <code>go.mod</code> file in the current directory or any parent directory, if
-  there is one. This is useful for running executables without installing them or
-  without changing dependencies of the current module.
-</p>
-
-<h3 id="gofmt">Gofmt</h3>
-
-<p>
-  <code>gofmt</code> (and <code>go</code> <code>fmt</code>) now synchronizes
-  <code>//go:build</code> lines with <code>// +build</code> lines. If a file
-  only has <code>// +build</code> lines, they will be moved to the appropriate
-  location in the file, and matching <code>//go:build</code> lines will be
-  added. Otherwise, <code>// +build</code> lines will be overwritten based on
-  any existing <code>//go:build</code> lines. For more information, see
-  <a href="/design/draft-gobuild">https://golang.org/design/draft-gobuild</a>.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<h4 id="vet-buildtags">New warning for mismatched <code>//go:build</code> and <code>// +build</code> lines</h4>
-
-<p><!-- CL 240609 -->
-  The <code>vet</code> tool now verifies that <code>//go:build</code> and
-  <code>// +build</code> lines are in the correct part of the file and
-  synchronized with each other. If they aren't,
-  <a href="#gofmt"><code>gofmt</code></a> can be used to fix them. For more
-  information, see
-  <a href="/design/draft-gobuild">https://golang.org/design/draft-gobuild</a>.
-</p>
-
-<h4 id="vet-sigchanyzer">New warning for calling <code>signal.Notify</code> on unbuffered channels</h4>
-
-<p><!-- CL 299532 -->
-  The vet tool now warns about calls to <a href="/pkg/os/signal/#Notify">signal.Notify</a>
-  with incoming signals being sent to an unbuffered channel. Using an unbuffered channel
-  risks missing signals sent on them as <code>signal.Notify</code> does not block when
-  sending to a channel. For example:
-</p>
-
-<pre>
-c := make(chan os.Signal)
-// signals are sent on c before the channel is read from.
-// This signal may be dropped as c is unbuffered.
-signal.Notify(c, os.Interrupt)
-</pre>
-
-<p>
-  Users of <code>signal.Notify</code> should use channels with sufficient buffer space to keep up with the
-  expected signal rate.
-</p>
-
-<h4 id="vet-error-stdmethods">New warnings for Is, As and Unwrap methods</h4>
-
-<p><!-- CL 321389 -->
-  The vet tool now warns about methods named <code>As</code>, <code>Is</code> or <code>Unwrap</code>
-  on types implementing the <code>error</code> interface that have a different signature than the
-  one expected by the <code>errors</code> package. The <code>errors.{As,Is,Unwrap}</code> functions
-  expect such methods to implement either <code>Is(error)</code> <code>bool</code>,
-  <code>As(interface{})</code> <code>bool</code>, or <code>Unwrap()</code> <code>error</code>
-  respectively. The functions <code>errors.{As,Is,Unwrap}</code> will ignore methods with the same
-  names but a different signature. For example:
-</p>
-
-<pre>
-type MyError struct { hint string }
-func (m MyError) Error() string { ... } // MyError implements error.
-func (MyError) Is(target interface{}) bool { ... } // target is interface{} instead of error.
-func Foo() bool {
-	x, y := MyError{"A"}, MyError{"B"}
-	return errors.Is(x, y) // returns false as x != y and MyError does not have an `Is(error) bool` function.
-}
-</pre>
-
-<h3 id="cover">Cover</h3>
-
-<p><!-- CL 249759 -->
-  The <code>cover</code> tool now uses an optimized parser
-  from <code>golang.org/x/tools/cover</code>, which may be noticeably faster
-  when parsing large coverage profiles.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- golang.org/issue/40724 -->
-  Go 1.17 implements a new way of passing function arguments and results using
-  registers instead of the stack.
-  Benchmarks for a representative set of Go packages and programs show
-  performance improvements of about 5%, and a typical reduction in
-  binary size of about 2%.
-  This is currently enabled for Linux, macOS, and Windows on the
-  64-bit x86 architecture (the <code>linux/amd64</code>,
-  <code>darwin/amd64</code>, and <code>windows/amd64</code> ports).
-</p>
-
-<p>
-  This change does not affect the functionality of any safe Go code
-  and is designed to have no impact on most assembly code.
-  It may affect code that violates
-  the <a href="/pkg/unsafe#Pointer"><code>unsafe.Pointer</code></a>
-  rules when accessing function arguments, or that depends on
-  undocumented behavior involving comparing function code pointers.
-  To maintain compatibility with existing assembly functions, the
-  compiler generates adapter functions that convert between the new
-  register-based calling convention and the previous stack-based
-  calling convention.
-  These adapters are typically invisible to users, except that taking
-  the address of a Go function in assembly code or taking the address
-  of an assembly function in Go code
-  using <code>reflect.ValueOf(fn).Pointer()</code>
-  or <code>unsafe.Pointer</code> will now return the address of the
-  adapter.
-  Code that depends on the value of these code pointers may no longer
-  behave as expected.
-  Adapters also may cause a very small performance overhead in two
-  cases: calling an assembly function indirectly from Go via
-  a <code>func</code> value, and calling Go functions from assembly.
-</p>
-
-<p><!-- CL 304470 -->
-  The format of stack traces from the runtime (printed when an uncaught panic
-  occurs, or when <code>runtime.Stack</code> is called) is improved. Previously,
-  the function arguments were printed as hexadecimal words based on the memory
-  layout. Now each argument in the source code is printed separately, separated
-  by commas. Aggregate-typed (struct, array, string, slice, interface, and complex)
-  arguments are delimited by curly braces. A caveat is that the value of an
-  argument that only lives in a register and is not stored to memory may be
-  inaccurate. Function return values (which were usually inaccurate) are no longer
-  printed.
-</p>
-
-<p><!-- CL 283112, golang.org/issue/28727 -->
-  Functions containing closures can now be inlined.
-  One effect of this change is that a function with a closure may
-  produce a distinct closure code pointer for each place that the
-  function is inlined.
-  Go function values are not directly comparable, but this change
-  could reveal bugs in code that uses <code>reflect</code>
-  or <code>unsafe.Pointer</code> to bypass this language restriction
-  and compare functions by code pointer.
-</p>
-
-<h3 id="link">Linker</h3>
-
-<p><!-- CL 310349 -->
-  When the linker uses external linking mode, which is the default
-  when linking a program that uses cgo, and the linker is invoked
-  with a <code>-I</code> option, the option will now be passed to the
-  external linker as a <code>-Wl,--dynamic-linker</code> option.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="runtime/cgo"><a href="/pkg/runtime/cgo">Cgo</a></h3>
-
-<p>
-  The <a href="/pkg/runtime/cgo">runtime/cgo</a> package now provides a
-  new facility that allows to turn any Go values to a safe representation
-  that can be used to pass values between C and Go safely. See
-  <a href="/pkg/runtime/cgo#Handle">runtime/cgo.Handle</a> for more information.
-</p>
-
-<h3 id="semicolons">URL query parsing</h3>
-<!-- CL 325697, CL 326309 -->
-
-<p>
-  The <code>net/url</code> and <code>net/http</code> packages used to accept
-  <code>";"</code> (semicolon) as a setting separator in URL queries, in
-  addition to <code>"&"</code> (ampersand). Now, settings with non-percent-encoded
-  semicolons are rejected and <code>net/http</code> servers will log a warning to
-  <a href="/pkg/net/http#Server.ErrorLog"><code>Server.ErrorLog</code></a>
-  when encountering one in a request URL.
-</p>
-
-<p>
-  For example, before Go 1.17 the <a href="/pkg/net/url#URL.Query"><code>Query</code></a>
-  method of the URL <code>example?a=1;b=2&c=3</code> would have returned
-  <code>map[a:[1] b:[2] c:[3]]</code>, while now it returns <code>map[c:[3]]</code>.
-</p>
-
-<p>
-  When encountering such a query string,
-  <a href="/pkg/net/url#URL.Query"><code>URL.Query</code></a>
-  and
-  <a href="/pkg/net/http#Request.FormValue"><code>Request.FormValue</code></a>
-  ignore any settings that contain a semicolon,
-  <a href="/pkg/net/url#ParseQuery"><code>ParseQuery</code></a>
-  returns the remaining settings and an error, and
-  <a href="/pkg/net/http#Request.ParseForm"><code>Request.ParseForm</code></a>
-  and
-  <a href="/pkg/net/http#Request.ParseMultipartForm"><code>Request.ParseMultipartForm</code></a>
-  return an error but still set <code>Request</code> fields based on the
-  remaining settings.
-</p>
-
-<p>
-  <code>net/http</code> users can restore the original behavior by using the new
-  <a href="/pkg/net/http#AllowQuerySemicolons"><code>AllowQuerySemicolons</code></a>
-  handler wrapper. This will also suppress the <code>ErrorLog</code> warning.
-  Note that accepting semicolons as query separators can lead to security issues
-  if different systems interpret cache keys differently.
-  See <a href="/issue/25192">issue 25192</a> for more information.
-</p>
-
-<h3 id="ALPN">TLS strict ALPN</h3>
-<!-- CL 289209, CL 325432 -->
-
-<p>
-  When <a href="/pkg/crypto/tls#Config.NextProtos"><code>Config.NextProtos</code></a>
-  is set, servers now enforce that there is an overlap between the configured
-  protocols and the ALPN protocols advertised by the client, if any. If there is
-  no mutually supported protocol, the connection is closed with the
-  <code>no_application_protocol</code> alert, as required by RFC 7301. This
-  helps mitigate <a href="https://alpaca-attack.com/">the ALPACA cross-protocol attack</a>.
-</p>
-
-<p>
-  As an exception, when the value <code>"h2"</code> is included in the server's
-  <code>Config.NextProtos</code>, HTTP/1.1 clients will be allowed to connect as
-  if they didn't support ALPN.
-  See <a href="/issue/46310">issue 46310</a> for more information.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-  <dd>
-    <p><!-- CL 312310 -->
-      The new methods <a href="/pkg/archive/zip#File.OpenRaw"><code>File.OpenRaw</code></a>, <a href="/pkg/archive/zip#Writer.CreateRaw"><code>Writer.CreateRaw</code></a>, <a href="/pkg/archive/zip#Writer.Copy"><code>Writer.Copy</code></a> provide support for cases where performance is a primary concern.
-    </p>
-  </dd>
-</dl><!-- archive/zip -->
-
-<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
-  <dd>
-    <p><!-- CL 280492 -->
-      The <a href="/pkg/bufio/#Writer.WriteRune"><code>Writer.WriteRune</code></a> method
-      now writes the replacement character U+FFFD for negative rune values,
-      as it does for other invalid runes.
-    </p>
-  </dd>
-</dl><!-- bufio -->
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-  <dd>
-    <p><!-- CL 280492 -->
-      The <a href="/pkg/bytes/#Buffer.WriteRune"><code>Buffer.WriteRune</code></a> method
-      now writes the replacement character U+FFFD for negative rune values,
-      as it does for other invalid runes.
-    </p>
-  </dd>
-</dl><!-- bytes -->
-
-<dl id="compress/lzw"><dt><a href="/pkg/compress/lzw/">compress/lzw</a></dt>
-  <dd>
-    <p><!-- CL 273667 -->
-      The <a href="/pkg/compress/lzw/#NewReader"><code>NewReader</code></a>
-      function is guaranteed to return a value of the new
-      type <a href="/pkg/compress/lzw/#Reader"><code>Reader</code></a>,
-      and similarly <a href="/pkg/compress/lzw/#NewWriter"><code>NewWriter</code></a>
-      is guaranteed to return a value of the new
-      type <a href="/pkg/compress/lzw/#Writer"><code>Writer</code></a>.
-      These new types both implement a <code>Reset</code> method
-      (<a href="/pkg/compress/lzw/#Reader.Reset"><code>Reader.Reset</code></a>,
-      <a href="/pkg/compress/lzw/#Writer.Reset"><code>Writer.Reset</code></a>)
-      that allows reuse of the <code>Reader</code> or <code>Writer</code>.
-    </p>
-  </dd>
-</dl><!-- compress/lzw -->
-
-<dl id="crypto/ed25519"><dt><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></dt>
-  <dd>
-    <p><!-- CL 276272 -->
-      The <code>crypto/ed25519</code> package has been rewritten, and all
-      operations are now approximately twice as fast on amd64 and arm64.
-      The observable behavior has not otherwise changed.
-    </p>
-  </dd>
-</dl><!-- crypto/ed25519 -->
-
-<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
-  <dd>
-    <p><!-- CL 233939 -->
-      <a href="/pkg/crypto/elliptic#CurveParams"><code>CurveParams</code></a>
-      methods now automatically invoke faster and safer dedicated
-      implementations for known curves (P-224, P-256, and P-521) when
-      available. Note that this is a best-effort approach and applications
-      should avoid using the generic, not constant-time <code>CurveParams</code>
-      methods and instead use dedicated
-      <a href="/pkg/crypto/elliptic#Curve"><code>Curve</code></a> implementations
-      such as <a href="/pkg/crypto/elliptic#P256"><code>P256</code></a>.
-    </p>
-
-    <p><!-- CL 315271, CL 315274 -->
-      The <a href="/pkg/crypto/elliptic#P521"><code>P521</code></a> curve
-      implementation has been rewritten using code generated by the
-      <a href="https://github.com/mit-plv/fiat-crypto">fiat-crypto project</a>,
-      which is based on a formally-verified model of the arithmetic
-      operations. It is now constant-time and three times faster on amd64 and
-      arm64. The observable behavior has not otherwise changed.
-    </p>
-  </dd>
-</dl><!-- crypto/elliptic -->
-
-<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
-  <dd>
-    <p><!-- CL 302489, CL 299134, CL 269999 -->
-      The <code>crypto/rand</code> package now uses the <code>getentropy</code>
-      syscall on macOS and the <code>getrandom</code> syscall on Solaris,
-      Illumos, and DragonFlyBSD.
-    </p>
-  </dd>
-</dl><!-- crypto/rand -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 295370 -->
-      The new <a href="/pkg/crypto/tls#Conn.HandshakeContext"><code>Conn.HandshakeContext</code></a>
-      method allows the user to control cancellation of an in-progress TLS
-      handshake. The provided context is accessible from various callbacks through the new
-      <a href="/pkg/crypto/tls#ClientHelloInfo.Context"><code>ClientHelloInfo.Context</code></a> and
-      <a href="/pkg/crypto/tls#CertificateRequestInfo.Context"><code>CertificateRequestInfo.Context</code></a>
-      methods. Canceling the context after the handshake has finished has no effect.
-    </p>
-
-    <p><!-- CL 314609 -->
-      Cipher suite ordering is now handled entirely by the
-      <code>crypto/tls</code> package. Currently, cipher suites are sorted based
-      on their security, performance, and hardware support taking into account
-      both the local and peer's hardware. The order of the
-      <a href="/pkg/crypto/tls#Config.CipherSuites"><code>Config.CipherSuites</code></a>
-      field is now ignored, as well as the
-      <a href="/pkg/crypto/tls#Config.PreferServerCipherSuites"><code>Config.PreferServerCipherSuites</code></a>
-      field. Note that <code>Config.CipherSuites</code> still allows
-      applications to choose what TLS 1.0–1.2 cipher suites to enable.
-    </p>
-
-    <p>
-      The 3DES cipher suites have been moved to
-      <a href="/pkg/crypto/tls#InsecureCipherSuites"><code>InsecureCipherSuites</code></a>
-      due to <a href="https://sweet32.info/">fundamental block size-related
-      weakness</a>. They are still enabled by default but only as a last resort,
-      thanks to the cipher suite ordering change above.
-    </p>
-
-    <p><!-- golang.org/issue/45428 -->
-      Beginning in the next release, Go 1.18, the
-      <a href="/pkg/crypto/tls/#Config.MinVersion"><code>Config.MinVersion</code></a>
-      for <code>crypto/tls</code> clients will default to TLS 1.2, disabling TLS 1.0
-      and TLS 1.1 by default. Applications will be able to override the change by
-      explicitly setting <code>Config.MinVersion</code>.
-      This will not affect <code>crypto/tls</code> servers.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 224157 -->
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      now returns an error if the provided private key doesn't match the
-      parent's public key, if any. The resulting certificate would have failed
-      to verify.
-    </p>
-
-    <p><!-- CL 315209 -->
-      The temporary <code>GODEBUG=x509ignoreCN=0</code> flag has been removed.
-    </p>
-
-    <p><!-- CL 274234 -->
-      <a href="/pkg/crypto/x509/#ParseCertificate"><code>ParseCertificate</code></a>
-      has been rewritten, and now consumes ~70% fewer resources. The observable
-      behavior when processing WebPKI certificates has not otherwise changed,
-      except for error messages.
-    </p>
-
-    <p><!-- CL 321190 -->
-      On BSD systems, <code>/etc/ssl/certs</code> is now searched for trusted
-      roots. This adds support for the new system trusted certificate store in
-      FreeBSD 12.2+.
-    </p>
-
-    <p><!-- golang.org/issue/41682 -->
-      Beginning in the next release, Go 1.18, <code>crypto/x509</code> will
-      reject certificates signed with the SHA-1 hash function. This doesn't
-      apply to self-signed root certificates. Practical attacks against SHA-1
-      <a href="https://shattered.io/">have been demonstrated in 2017</a> and publicly
-      trusted Certificate Authorities have not issued SHA-1 certificates since 2015.
-    </p>
-  </dd>
-</dl><!-- crypto/x509 -->
-
-<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
-  <dd>
-    <p><!-- CL 258360 -->
-      The <a href="/pkg/database/sql/#DB.Close"><code>DB.Close</code></a> method now closes
-      the <code>connector</code> field if the type in this field implements the
-      <a href="/pkg/io/#Closer"><code>io.Closer</code></a> interface.
-    </p>
-
-    <p><!-- CL 311572 -->
-      The new
-      <a href="/pkg/database/sql/#NullInt16"><code>NullInt16</code></a>
-      and
-      <a href="/pkg/database/sql/#NullByte"><code>NullByte</code></a>
-      structs represent the int16 and byte values that may be null. These can be used as
-      destinations of the <a href="/pkg/database/sql/#Scan"><code>Scan</code></a> method,
-      similar to NullString.
-    </p>
-  </dd>
-</dl><!-- database/sql -->
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- CL 239217 -->
-      The <a href="/pkg/debug/elf/#SHT_MIPS_ABIFLAGS"><code>SHT_MIPS_ABIFLAGS</code></a>
-      constant has been added.
-    </p>
-  </dd>
-</dl><!-- debug/elf -->
-
-<dl id="encoding/binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
-  <dd>
-    <p><!-- CL 299531 -->
-      <code>binary.Uvarint</code> will stop reading after <code>10 bytes</code> to avoid
-      wasted computations. If more than <code>10 bytes</code> are needed, the byte count returned is <code>-11</code>.
-      <br />
-      Previous Go versions could return larger negative counts when reading incorrectly encoded varints.
-    </p>
-  </dd>
-</dl><!-- encoding/binary -->
-
-<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
-  <dd>
-    <p><!-- CL 291290 -->
-      The new
-      <a href="/pkg/encoding/csv/#Reader.FieldPos"><code>Reader.FieldPos</code></a>
-      method returns the line and column corresponding to the start of
-      a given field in the record most recently returned by
-      <a href="/pkg/encoding/csv/#Reader.Read"><code>Read</code></a>.
-    </p>
-  </dd>
-</dl><!-- encoding/csv -->
-
-<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
-  <dd>
-    <p><!-- CL 277893 -->
-      When a comment appears within a
-      <a href="/pkg/encoding/xml/#Directive"><code>Directive</code></a>, it is now replaced
-      with a single space instead of being completely elided.
-    </p>
-
-    <p>
-      Invalid element or attribute names with leading, trailing, or multiple
-      colons are now stored unmodified into the
-      <a href="/pkg/encoding/xml/#Name"><code>Name.Local</code></a> field.
-    </p>
-  </dd>
-</dl><!-- encoding/xml -->
-
-<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
-  <dd>
-    <p><!-- CL 271788 -->
-      Flag declarations now panic if an invalid name is specified.
-    </p>
-  </dd>
-</dl><!-- flag -->
-
-<dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt>
-  <dd>
-    <p><!-- CL 310732 -->
-      The new
-      <a href="/pkg/go/build/#Context.ToolTags"><code>Context.ToolTags</code></a>
-      field holds the build tags appropriate to the current Go
-      toolchain configuration.
-    </p>
-  </dd>
-</dl><!-- go/build -->
-
-<dl id="go/format"><dt><a href="/pkg/go/format/">go/format</a></dt>
-  <dd>
-    <p>
-      The <a href="/pkg/go/format/#Source"><code>Source</code></a> and
-      <a href="/pkg/go/format/#Node"><code>Node</code></a> functions now
-      synchronize <code>//go:build</code> lines with <code>// +build</code>
-      lines. If a file only has <code>// +build</code> lines, they will be
-      moved to the appropriate location in the file, and matching
-      <code>//go:build</code> lines will be added. Otherwise,
-      <code>// +build</code> lines will be overwritten based on any existing
-      <code>//go:build</code> lines. For more information, see
-      <a href="/design/draft-gobuild">https://golang.org/design/draft-gobuild</a>.
-    </p>
-  </dd>
-</dl><!-- go/format -->
-
-<dl id="go/parser"><dt><a href="/pkg/go/parser/">go/parser</a></dt>
-  <dd>
-    <p><!-- CL 306149 -->
-      The new <a href="/pkg/go/parser/#SkipObjectResolution"><code>SkipObjectResolution</code></a>
-      <code>Mode</code> value instructs the parser not to resolve identifiers to
-      their declaration. This may improve parsing speed.
-    </p>
-  </dd>
-</dl><!-- go/parser -->
-
-<dl id="image"><dt><a href="/pkg/image/">image</a></dt>
-  <dd>
-    <p><!-- CL 311129 -->
-      The concrete image types (<code>RGBA</code>, <code>Gray16</code> and so on)
-      now implement a new <a href="/pkg/image/#RGBA64Image"><code>RGBA64Image</code></a>
-      interface. The concrete types that previously implemented
-      <a href="/pkg/image/draw/#Image"><code>draw.Image</code></a> now also implement
-      <a href="/pkg/image/draw/#RGBA64Image"><code>draw.RGBA64Image</code></a>, a
-      new interface in the <code>image/draw</code> package.
-    </p>
-  </dd>
-</dl><!-- image -->
-
-<dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt>
-  <dd>
-    <p><!-- CL 293649 -->
-      The new <a href="/pkg/io/fs/#FileInfoToDirEntry"><code>FileInfoToDirEntry</code></a> function converts a <code>FileInfo</code> to a <code>DirEntry</code>.
-    </p>
-  </dd>
-</dl><!-- io/fs -->
-
-<dl id="math"><dt><a href="/pkg/math/">math</a></dt>
-  <dd>
-    <p><!-- CL 247058 -->
-      The math package now defines three more constants: <code>MaxUint</code>, <code>MaxInt</code> and <code>MinInt</code>.
-      For 32-bit systems their values are <code>2^32 - 1</code>, <code>2^31 - 1</code> and <code>-2^31</code>, respectively.
-      For 64-bit systems their values are <code>2^64 - 1</code>, <code>2^63 - 1</code> and <code>-2^63</code>, respectively.
-    </p>
-  </dd>
-</dl><!-- math -->
-
-<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
-  <dd>
-    <p><!-- CL 305230 -->
-      On Unix systems, the table of MIME types is now read from the local system's
-      <a href="https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-0.21.html">Shared MIME-info Database</a>
-      when available.
-    </p>
-  </dd>
-</dl><!-- mime -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-  <dd>
-    <p><!-- CL 313809 -->
-      <a href="/pkg/mime/multipart/#Part.FileName"><code>Part.FileName</code></a>
-      now applies
-      <a href="/pkg/path/filepath/#Base"><code>filepath.Base</code></a> to the
-      return value. This mitigates potential path traversal vulnerabilities in
-      applications that accept multipart messages, such as <code>net/http</code>
-      servers that call
-      <a href="/pkg/net/http/#Request.FormFile"><code>Request.FormFile</code></a>.
-    </p>
-  </dd>
-</dl><!-- mime/multipart -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 272668 -->
-      The new method <a href="/pkg/net/#IP.IsPrivate"><code>IP.IsPrivate</code></a> reports whether an address is
-      a private IPv4 address according to <a href="https://datatracker.ietf.org/doc/rfc1918">RFC 1918</a>
-      or a local IPv6 address according <a href="https://datatracker.ietf.org/doc/rfc4193">RFC 4193</a>.
-    </p>
-
-    <p><!-- CL 301709 -->
-      The Go DNS resolver now only sends one DNS query when resolving an address for an IPv4-only or IPv6-only network,
-      rather than querying for both address families.
-    </p>
-
-    <p><!-- CL 307030 -->
-      The <a href="/pkg/net/#ErrClosed"><code>ErrClosed</code></a> sentinel error and
-      <a href="/pkg/net/#ParseError"><code>ParseError</code></a> error type now implement
-      the <a href="/pkg/net/#Error"><code>net.Error</code></a> interface.
-    </p>
-
-    <p><!-- CL 325829 -->
-      The <a href="/pkg/net/#ParseIP"><code>ParseIP</code></a> and <a href="/pkg/net/#ParseCIDR"><code>ParseCIDR</code></a>
-      functions now reject IPv4 addresses which contain decimal components with leading zeros.
-
-      These components were always interpreted as decimal, but some operating systems treat them as octal.
-      This mismatch could hypothetically lead to security issues if a Go application was used to validate IP addresses
-      which were then used in their original form with non-Go applications which interpreted components as octal. Generally,
-      it is advisable to always re-encode values after validation, which avoids this class of parser misalignment issues.
-    </p>
-  </dd>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 295370 -->
-      The <a href="/pkg/net/http/"><code>net/http</code></a> package now uses the new
-      <a href="/pkg/crypto/tls#Conn.HandshakeContext"><code>(*tls.Conn).HandshakeContext</code></a>
-      with the <a href="/pkg/net/http/#Request"><code>Request</code></a> context
-      when performing TLS handshakes in the client or server.
-    </p>
-
-    <p><!-- CL 235437 -->
-      Setting the <a href="/pkg/net/http/#Server"><code>Server</code></a>
-      <code>ReadTimeout</code> or <code>WriteTimeout</code> fields to a negative value now indicates no timeout
-      rather than an immediate timeout.
-    </p>
-
-    <p><!-- CL 308952 -->
-      The <a href="/pkg/net/http/#ReadRequest"><code>ReadRequest</code></a> function
-      now returns an error when the request has multiple Host headers.
-    </p>
-
-    <p><!-- CL 313950 -->
-      When producing a redirect to the cleaned version of a URL,
-      <a href="/pkg/net/http/#ServeMux"><code>ServeMux</code></a> now always
-      uses relative URLs in the <code>Location</code> header. Previously it
-      would echo the full URL of the request, which could lead to unintended
-      redirects if the client could be made to send an absolute request URL.
-    </p>
-
-    <p><!-- CL 308009, CL 313489 -->
-      When interpreting certain HTTP headers handled by <code>net/http</code>,
-      non-ASCII characters are now ignored or rejected.
-    </p>
-
-    <p><!-- CL 325697 -->
-      If
-      <a href="/pkg/net/http/#Request.ParseForm"><code>Request.ParseForm</code></a>
-      returns an error when called by
-      <a href="/pkg/net/http/#Request.ParseMultipartForm"><code>Request.ParseMultipartForm</code></a>,
-      the latter now continues populating
-      <a href="/pkg/net/http/#Request.MultipartForm"><code>Request.MultipartForm</code></a>
-      before returning it.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="net/http/httptest"><dt><a href="/pkg/net/http/httptest/">net/http/httptest</a></dt>
-  <dd>
-    <p><!-- CL 308950 -->
-      <a href="/pkg/net/http/httptest/#ResponseRecorder.WriteHeader"><code>ResponseRecorder.WriteHeader</code></a>
-      now panics when the provided code is not a valid three-digit HTTP status code.
-      This matches the behavior of <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>
-      implementations in the <a href="/pkg/net/http/"><code>net/http</code></a> package.
-    </p>
-  </dd>
-</dl><!-- net/http/httptest -->
-
-<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-  <dd>
-    <p><!-- CL 314850 -->
-      The new method <a href="/pkg/net/url/#Values.Has"><code>Values.Has</code></a>
-      reports whether a query parameter is set.
-    </p>
-  </dd>
-</dl><!-- net/url -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 268020 -->
-      The <a href="/pkg/os/#File.WriteString"><code>File.WriteString</code></a> method
-      has been optimized to not make a copy of the input string.
-    </p>
-  </dd>
-</dl><!-- os -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 334669 -->
-      The new
-      <a href="/pkg/reflect/#Value.CanConvert"><code>Value.CanConvert</code></a>
-      method reports whether a value can be converted to a type.
-      This may be used to avoid a panic when converting a slice to an
-      array pointer type if the slice is too short.
-      Previously it was sufficient to use
-      <a href="/pkg/reflect/#Type.ConvertibleTo"><code>Type.ConvertibleTo</code></a>
-      for this, but the newly permitted conversion from slice to array
-      pointer type can panic even if the types are convertible.
-    </p>
-
-    <p><!-- CL 266197 -->
-      The new
-      <a href="/pkg/reflect/#StructField.IsExported"><code>StructField.IsExported</code></a>
-      and
-      <a href="/pkg/reflect/#Method.IsExported"><code>Method.IsExported</code></a>
-      methods report whether a struct field or type method is exported.
-      They provide a more readable alternative to checking whether <code>PkgPath</code>
-      is empty.
-    </p>
-
-    <p><!-- CL 281233 -->
-      The new <a href="/pkg/reflect/#VisibleFields"><code>VisibleFields</code></a> function
-      returns all the visible fields in a struct type, including fields inside anonymous struct members.
-    </p>
-
-    <p><!-- CL 284136 -->
-      The <a href="/pkg/reflect/#ArrayOf"><code>ArrayOf</code></a> function now panics when
-      called with a negative length.
-    </p>
-
-    <p><!-- CL 301652 -->
-      Checking the <a href="/pkg/reflect/#Type.ConvertibleTo"><code>Type.ConvertibleTo</code></a> method
-      is no longer sufficient to guarantee that a call to
-      <a href="/pkg/reflect/#Value.Convert"><code>Value.Convert</code></a> will not panic.
-      It may panic when converting `[]T` to `*[N]T` if the slice's length is less than N.
-      See the <a href="#language">language changes</a> section above.
-    </p>
-
-    <p><!-- CL 309729 -->
-      The <a href="/pkg/reflect/#Value.Convert"><code>Value.Convert</code></a> and
-      <a href="/pkg/reflect/#Type.ConvertibleTo"><code>Type.ConvertibleTo</code></a> methods
-      have been fixed to not treat types in different packages with the same name
-      as identical, to match what the language allows.
-    </p>
-  </dd>
-</dl><!-- reflect -->
-
-<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics">runtime/metrics</a></dt>
-  <dd>
-    <p><!-- CL 308933, CL 312431, CL 312909 -->
-      New metrics were added that track total bytes and objects allocated and freed.
-      A new metric tracking the distribution of goroutine scheduling latencies was
-      also added.
-    </p>
-  </dd>
-</dl><!-- runtime/metrics -->
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- CL 299991 -->
-      Block profiles are no longer biased to favor infrequent long events over
-      frequent short events.
-    </p>
-  </dd>
-</dl><!-- runtime/pprof -->
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p><!-- CL 170079, CL 170080 -->
-      The <code>strconv</code> package now uses Ulf Adams's Ryū algorithm for formatting floating-point numbers.
-      This algorithm improves performance on most inputs and is more than 99% faster on worst-case inputs.
-    </p>
-
-    <p><!-- CL 314775 -->
-      The new <a href="/pkg/strconv/#QuotedPrefix"><code>QuotedPrefix</code></a> function
-      returns the quoted string (as understood by
-      <a href="/pkg/strconv/#Unquote"><code>Unquote</code></a>)
-      at the start of input.
-    </p>
-  </dd>
-</dl><!-- strconv -->
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-  <dd>
-    <p><!-- CL 280492 -->
-      The <a href="/pkg/strings/#Builder.WriteRune"><code>Builder.WriteRune</code></a> method
-      now writes the replacement character U+FFFD for negative rune values,
-      as it does for other invalid runes.
-    </p>
-  </dd>
-</dl><!-- strings -->
-
-<dl id="sync/atomic"><dt><a href="/pkg/sync/atomic/">sync/atomic</a></dt>
-  <dd>
-    <p><!-- CL 241678 -->
-      <code>atomic.Value</code> now has <a href="/pkg/sync/atomic/#Value.Swap"><code>Swap</code></a> and
-      <a href="/pkg/sync/atomic/#Value.CompareAndSwap"><code>CompareAndSwap</code></a> methods that provide
-      additional atomic operations.
-    </p>
-  </dd>
-</dl><!-- sync/atomic -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 295371 -->
-    <p>
-      The <a href="/pkg/syscall/#GetQueuedCompletionStatus"><code>GetQueuedCompletionStatus</code></a> and
-      <a href="/pkg/syscall/#PostQueuedCompletionStatus"><code>PostQueuedCompletionStatus</code></a>
-      functions are now deprecated. These functions have incorrect signatures and are superseded by
-      equivalents in the <a href="https://godoc.org/golang.org/x/sys/windows"><code>golang.org/x/sys/windows</code></a> package.
-    </p>
-
-    <p><!-- CL 313653 -->
-      On Unix-like systems, the process group of a child process is now set with signals blocked.
-      This avoids sending a <code>SIGTTOU</code> to the child when the parent is in a background process group.
-    </p>
-
-    <p><!-- CL 288298, CL 288300 -->
-      The Windows version of
-      <a href="/pkg/syscall/#SysProcAttr"><code>SysProcAttr</code></a>
-      has two new fields. <code>AdditionalInheritedHandles</code> is
-      a list of additional handles to be inherited by the new child
-      process. <code>ParentProcess</code> permits specifying the
-      parent process of the new process.
-
-    <p><!-- CL 311570 -->
-      The constant <code>MSG_CMSG_CLOEXEC</code> is now defined on
-      DragonFly and all OpenBSD systems (it was already defined on
-      some OpenBSD systems and all FreeBSD, NetBSD, and Linux systems).
-    </p>
-
-    <p><!-- CL 315281 -->
-      The constants <code>SYS_WAIT6</code> and <code>WEXITED</code>
-      are now defined on NetBSD systems (<code>SYS_WAIT6</code> was
-      already defined on DragonFly and FreeBSD systems;
-      <code>WEXITED</code> was already defined on Darwin, DragonFly,
-      FreeBSD, Linux, and Solaris systems).
-    </p>
-  </dd>
-</dl><!-- syscall -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- CL 310033 -->
-      Added a new <a href="/cmd/go/#hdr-Testing_flags">testing flag</a> <code>-shuffle</code> which controls the execution order of tests and benchmarks.
-    </p>
-    <p><!-- CL 260577 -->
-      The new
-      <a href="/pkg/testing/#T.Setenv"><code>T.Setenv</code></a>
-      and <a href="/pkg/testing/#B.Setenv"><code>B.Setenv</code></a>
-      methods support setting an environment variable for the duration
-      of the test or benchmark.
-    </p>
-  </dd>
-</dl><!-- testing -->
-
-<dl id="text/template/parse"><dt><a href="/pkg/text/template/parse/">text/template/parse</a></dt>
-  <dd>
-    <p><!-- CL 301493 -->
-      The new <a href="/pkg/text/template/parse/#Mode"><code>SkipFuncCheck</code></a> <code>Mode</code>
-      value changes the template parser to not verify that functions are defined.
-    </p>
-  </dd>
-</dl><!-- text/template/parse -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- CL 260858 -->
-      The <a href="/pkg/time/#Time"><code>Time</code></a> type now has a
-      <a href="/pkg/time/#Time.GoString"><code>GoString</code></a> method that
-      will return a more useful value for times when printed with the
-      <code>%#v</code> format specifier in the <code>fmt</code> package.
-    </p>
-
-    <p><!-- CL 264077 -->
-      The new <a href="/pkg/time/#Time.IsDST"><code>Time.IsDST</code></a> method can be used to check whether the time
-      is in Daylight Savings Time in its configured location.
-    </p>
-
-    <p><!-- CL 293349 -->
-      The new <a href="/pkg/time/#Time.UnixMilli"><code>Time.UnixMilli</code></a> and
-      <a href="/pkg/time/#Time.UnixMicro"><code>Time.UnixMicro</code></a>
-      methods return the number of milliseconds and microseconds elapsed since
-      January 1, 1970 UTC respectively.
-      <br />
-      The new <a href="/pkg/time/#UnixMilli"><code>UnixMilli</code></a> and
-      <a href="/pkg/time/#UnixMicro"><code>UnixMicro</code></a> functions
-      return the local <code>Time</code> corresponding to the given Unix time.
-    </p>
-
-    <p><!-- CL 300996 -->
-      The package now accepts comma "," as a separator for fractional seconds when parsing and formatting time.
-      For example, the following time layouts are now accepted:
-      <ul>
-        <li>2006-01-02 15:04:05,999999999 -0700 MST</li>
-        <li>Mon Jan _2 15:04:05,000000 2006</li>
-        <li>Monday, January 2 15:04:05,000 2006</li>
-      </ul>
-    </p>
-
-    <p><!-- CL 320252 -->
-      The new constant <a href="/pkg/time/#Layout"><code>Layout</code></a>
-      defines the reference time.
-    </p>
-  </dd>
-</dl><!-- time -->
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-  <dd>
-    <p><!-- CL 280493 -->
-      The <a href="/pkg/unicode/#Is"><code>Is</code></a>,
-      <a href="/pkg/unicode/#IsGraphic"><code>IsGraphic</code></a>,
-      <a href="/pkg/unicode/#IsLetter"><code>IsLetter</code></a>,
-      <a href="/pkg/unicode/#IsLower"><code>IsLower</code></a>,
-      <a href="/pkg/unicode/#IsMark"><code>IsMark</code></a>,
-      <a href="/pkg/unicode/#IsNumber"><code>IsNumber</code></a>,
-      <a href="/pkg/unicode/#IsPrint"><code>IsPrint</code></a>,
-      <a href="/pkg/unicode/#IsPunct"><code>IsPunct</code></a>,
-      <a href="/pkg/unicode/#IsSpace"><code>IsSpace</code></a>,
-      <a href="/pkg/unicode/#IsSymbol"><code>IsSymbol</code></a>, and
-      <a href="/pkg/unicode/#IsUpper"><code>IsUpper</code></a> functions
-      now return <code>false</code> on negative rune values, as they do for other invalid runes.
-    </p>
-  </dd>
-</dl><!-- unicode -->
diff --git a/_content/doc/go1.18.html b/_content/doc/go1.18.html
deleted file mode 100644
index 6e2de13..0000000
--- a/_content/doc/go1.18.html
+++ /dev/null
@@ -1,1411 +0,0 @@
-<!--{
-	"Title": "Go 1.18 Release Notes",
-	"Path":  "/doc/go1.18"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.18</h2>
-
-<p>
-  The latest Go release, version 1.18,
-  is a significant release, including changes to the language,
-  implementation of the toolchain, runtime, and libraries.
-  Go 1.18 arrives seven months after <a href="/doc/go1.17">Go 1.17</a>.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<h3 id="generics">Generics</h3>
-
-<p><!-- https://golang.org/issue/43651, https://golang.org/issue/45346 -->
-  Go 1.18 includes an implementation of generic features as described by the
-  <a href="https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md">Type
-    Parameters Proposal</a>.
-  This includes major - but fully backward-compatible - changes to the language.
-</p>
-
-<p>
-  These new language changes required a large amount of new code that
-  has not had significant testing in production settings. That will
-  only happen as more people write and use generic code. We believe
-  that this feature is well implemented and high quality. However,
-  unlike most aspects of Go, we can't back up that belief with real
-  world experience. Therefore, while we encourage the use of generics
-  where it makes sense, please use appropriate caution when deploying
-  generic code in production.
-</p>
-
-<p>
-  While we believe that the new language features are well designed
-  and clearly specified, it is possible that we have made mistakes.
-  We want to stress that the <a href="/doc/go1compat">Go 1
-  compatibility guarantee</a> says "If it becomes necessary to address
-  an inconsistency or incompleteness in the specification, resolving
-  the issue could affect the meaning or legality of existing
-  programs. We reserve the right to address such issues, including
-  updating the implementations." It also says "If a compiler or
-  library has a bug that violates the specification, a program that
-  depends on the buggy behavior may break if the bug is fixed. We
-  reserve the right to fix such bugs." In other words, it is possible
-  that there will be code using generics that will work with the 1.18
-  release but break in later releases. We do not plan or expect to
-  make any such change. However, breaking 1.18 programs in future
-  releases may become necessary for reasons that we cannot today
-  foresee. We will minimize any such breakage as much as possible, but
-  we can't guarantee that the breakage will be zero.
-</p>
-
-<p>
-  The following is a list of the most visible changes. For a more comprehensive overview, see the
-  <a href="https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md">proposal</a>.
-  For details see the <a href="/ref/spec">language spec</a>.
-</p>
-
-<ul>
-  <li>
-    The syntax for
-    <a href="/ref/spec#Function_declarations">function</a> and
-    <a href="/ref/spec#Type_declarations">type declarations</a>
-    now accepts
-    <a href="/ref/spec#Type_parameter_declarations">type parameters</a>.
-  </li>
-  <li>
-    Parameterized functions and types can be instantiated by following them with a list of
-    type arguments in square brackets.
-  </li>
-  <li>
-    The new token <code>~</code> has been added to the set of
-    <a href="/ref/spec#Operators_and_punctuation">operators and punctuation</a>.
-  </li>
-  <li>
-    The syntax for
-    <a href="/ref/spec#Interface_types">Interface types</a>
-    now permits the embedding of arbitrary types (not just type names of interfaces)
-    as well as union and <code>~T</code> type elements. Such interfaces may only be used
-    as type constraints.
-    An interface now defines a set of types as well as a set of methods.
-  </li>
-  <li>
-    The new
-    <a href="/ref/spec#Predeclared_identifiers">predeclared identifier</a>
-    <code>any</code> is an alias for the empty interface. It may be used instead of
-    <code>interface{}</code>.
-  </li>
-  <li>
-    The new
-    <a href="/ref/spec#Predeclared_identifiers">predeclared identifier</a>
-    <code>comparable</code> is an interface that denotes the set of all types which can be
-    compared using <code>==</code> or <code>!=</code>. It may only be used as (or embedded in)
-    a type constraint.
-  </li>
-</ul>
-
-<p>
-  There are three experimental packages using generics that may be
-  useful.
-  These packages are in x/exp repository; their API is not covered by
-  the Go 1 guarantee and may change as we gain more experience with
-  generics.
-  <dl>
-    <dt><a href="https://pkg.go.dev/golang.org/x/exp/constraints"><code>golang.org/x/exp/constraints</code></a></dt>
-    <dd>
-      <p>
-	Constraints that are useful for generic code, such as
-	<a href="https://pkg.go.dev/golang.org/x/exp/constraints#Ordered"><code>constraints.Ordered</code></a>.
-      </p>
-    </dd>
-
-    <dt><a href="https://pkg.go.dev/golang.org/x/exp/slices"><code>golang.org/x/exp/slices</code></a></dt>
-    <dd>
-      <p>
-	A collection of generic functions that operate on slices of
-	any element type.
-      </p>
-    </dd>
-
-    <dt><a href="https://pkg.go.dev/golang.org/x/exp/maps"><code>golang.org/x/exp/maps</code></a></dt>
-    <dd>
-      <p>
-	A collection of generic functions that operate on maps of
-	any key or element type.
-      </p>
-    </dd>
-  </dl>
-</p>
-
-<p>
-  The current generics implementation has the following known limitations:
-  <ul>
-    <li><!-- https://golang.org/issue/47631 -->
-      The Go compiler cannot handle type declarations inside generic functions
-      or methods. We hope to provide support for this feature in a
-      future release.
-    </li>
-    <li><!-- https://golang.org/issue/50937 -->
-      The Go compiler does not accept arguments of type parameter type with
-      the predeclared functions <code>real</code>, <code>imag</code>, and <code>complex</code>.
-      We hope to remove this restriction in a future release.
-    </li>
-    <li><!-- https://golang.org/issue/51183 -->
-      The Go compiler only supports calling a method <code>m</code> on a value
-      <code>x</code> of type parameter type <code>P</code> if <code>m</code> is explicitly
-      declared by <code>P</code>'s constraint interface.
-      Similarly, method values <code>x.m</code> and method expressions
-      <code>P.m</code> also are only supported if <code>m</code> is explicitly
-      declared by <code>P</code>, even though <code>m</code> might be in the method set
-      of <code>P</code> by virtue of the fact that all types in <code>P</code> implement
-      <code>m</code>. We hope to remove this restriction in a future
-      release.
-    </li>
-    <li><!-- https://golang.org/issue/51576 -->
-      The Go compiler does not support accessing a struct field <code>x.f</code>
-      where <code>x</code> is of type parameter type even if all types in the
-      type parameter's type set have a field <code>f</code>.
-      We may remove this restriction in a future release.
-    </li>
-    <li><!-- https://golang.org/issue/49030 -->
-      Embedding a type parameter, or a pointer to a type parameter, as
-      an unnamed field in a struct type is not permitted. Similarly,
-      embedding a type parameter in an interface type is not permitted.
-      Whether these will ever be permitted is unclear at present.
-    </li>
-    <li>
-      A union element with more than one term may not contain an
-      interface type with a non-empty method set. Whether this will
-      ever be permitted is unclear at present.
-    </li>
-  </ul>
-</p>
-
-<p>
-  Generics also represent a large change for the Go ecosystem. While we have
-  updated several core tools with generics support, there is much more to do.
-  It will take time for remaining tools, documentation, and libraries to catch
-  up with these language changes.
-</p>
-
-<h3 id="bug_fixes">Bug fixes</h3>
-
-<p>
-  The Go 1.18 compiler now correctly reports <code>declared but not used</code> errors
-  for variables that are set inside a function literal but are never used. Before Go 1.18,
-  the compiler did not report an error in such cases. This fixes long-outstanding compiler
-  issue <a href="https://golang.org/issue/8560">#8560</a>. As a result of this change,
-  (possibly incorrect) programs may not compile anymore. The necessary fix is
-  straightforward: fix the program if it was in fact incorrect, or use the offending
-  variable, for instance by assigning it to the blank identifier <code>_</code>.
-  Since <code>go vet</code> always pointed out this error, the number of affected
-  programs is likely very small.
-</p>
-
-<p>
-  The Go 1.18 compiler now reports an overflow when passing a rune constant expression
-  such as <code>'1' &lt;&lt; 32</code> as an argument to the predeclared functions
-  <code>print</code> and <code>println</code>, consistent with the behavior of
-  user-defined functions. Before Go 1.18, the compiler did not report an error
-  in such cases but silently accepted such constant arguments if they fit into an
-  <code>int64</code>. As a result of this change, (possibly incorrect) programs
-  may not compile anymore. The necessary fix is straightforward: fix the program if it
-  was in fact incorrect, or explicitly convert the offending argument to the correct type.
-  Since <code>go vet</code> always pointed out this error, the number of affected
-  programs is likely very small.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="amd64">AMD64</h3>
-
-<p><!-- CL 349595 -->
-  Go 1.18 introduces the new <code>GOAMD64</code> environment variable, which selects at compile time
-  a minimum target version of the AMD64 architecture. Allowed values are <code>v1</code>,
-  <code>v2</code>, <code>v3</code>, or <code>v4</code>. Each higher level requires,
-  and takes advantage of, additional processor features. A detailed
-  description can be found
-  <a href="https://golang.org/wiki/MinimumRequirements#amd64">here</a>.
-</p>
-<p>
-  The <code>GOAMD64</code> environment variable defaults to <code>v1</code>.
-</p>
-
-<h3 id="riscv">RISC-V</h3>
-
-<p><!-- golang.org/issue/47100, CL 334872 -->
-  The 64-bit RISC-V architecture on Linux (the <code>linux/riscv64</code> port)
-  now supports the <code>c-archive</code> and <code>c-shared</code> build modes.
-</p>
-
-<h3 id="linux">Linux</h3>
-
-<p><!-- golang.org/issue/45964 -->
-  Go 1.18 requires Linux kernel version 2.6.32 or later.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p><!-- https://golang.org/issue/49759 -->
-  The <code>windows/arm</code> and <code>windows/arm64</code> ports now support
-  non-cooperative preemption, bringing that capability to all four Windows
-  ports, which should hopefully address subtle bugs encountered when calling
-  into Win32 functions that block for extended periods of time.
-</p>
-
-<h3 id="ios">iOS</h3>
-
-<p><!-- golang.org/issue/48076, golang.org/issue/49616 -->
-  On iOS (the <code>ios/arm64</code> port)
-  and iOS simulator running on AMD64-based macOS (the <code>ios/amd64</code> port),
-  Go 1.18 now requires iOS 12 or later; support for previous versions has been discontinued.
-</p>
-
-<h3 id="freebsd">FreeBSD</h3>
-
-<p>
-  Go 1.18 is the last release that is supported on FreeBSD 11.x, which has
-  already reached end-of-life. Go 1.19 will require FreeBSD 12.2+ or FreeBSD
-  13.0+.
-  FreeBSD 13.0+ will require a kernel with the COMPAT_FREEBSD12 option set (this is the default).
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="fuzzing">Fuzzing</h3>
-
-<p>
-  Go 1.18 includes an implementation of fuzzing as described by
-  <a href="https://golang.org/issue/44551">the fuzzing proposal</a>.
-</p>
-
-<p>
-  See the <a href="https://go.dev/security/fuzz">fuzzing landing page</a> to get
-  started.
-</p>
-
-<p>
-  Please be aware that fuzzing can consume a lot of memory and may impact your
-  machine’s performance while it runs. Also be aware that the fuzzing engine
-  writes values that expand test coverage to a fuzz cache directory within
-  <code>$GOCACHE/fuzz</code> while it runs. There is currently no limit to the
-  number of files or total bytes that may be written to the fuzz cache, so it
-  may occupy a large amount of storage (possibly several GBs).
-</p>
-
-<h3 id="go-command">Go command</h3>
-
-<h4 id="go-get"><code>go</code> <code>get</code></h4>
-
-<p><!-- golang.org/issue/43684 -->
-  <code>go</code> <code>get</code> no longer builds or installs packages in
-  module-aware mode. <code>go</code> <code>get</code> is now dedicated to
-  adjusting dependencies in <code>go.mod</code>. Effectively, the
-  <code>-d</code> flag is always enabled. To install the latest version
-  of an executable outside the context of the current module, use
-  <a href="https://golang.org/ref/mod#go-install"><code>go</code>
-  <code>install</code> <code>example.com/cmd@latest</code></a>. Any
-  <a href="https://golang.org/ref/mod#version-queries">version query</a>
-  may be used instead of <code>latest</code>. This form of <code>go</code>
-  <code>install</code> was added in Go 1.16, so projects supporting older
-  versions may need to provide install instructions for both <code>go</code>
-  <code>install</code> and <code>go</code> <code>get</code>. <code>go</code>
-  <code>get</code> now reports an error when used outside a module, since there
-  is no <code>go.mod</code> file to update. In GOPATH mode (with
-  <code>GO111MODULE=off</code>), <code>go</code> <code>get</code> still builds
-  and installs packages, as before.
-</p>
-
-<h4 id="go-mod-updates">Automatic <code>go.mod</code> and <code>go.sum</code> updates</h4>
-
-<p><!-- https://go.dev/issue/45551 -->
-  The <code>go</code> <code>mod</code> <code>graph</code>,
-  <code>go</code> <code>mod</code> <code>vendor</code>,
-  <code>go</code> <code>mod</code> <code>verify</code>, and
-  <code>go</code> <code>mod</code> <code>why</code> subcommands
-  no longer automatically update the <code>go.mod</code> and
-  <code>go.sum</code> files.
-  (Those files can be updated explicitly using <code>go</code> <code>get</code>,
-  <code>go</code> <code>mod</code> <code>tidy</code>, or
-  <code>go</code> <code>mod</code> <code>download</code>.)
-</p>
-
-<h4 id="go-version"><code>go</code> <code>version</code></h4>
-
-<p><!-- golang.org/issue/37475 -->
-  The <code>go</code> command now embeds version control information in
-  binaries. It includes the currently checked-out revision, commit time, and a
-  flag indicating whether edited or untracked files are present. Version
-  control information is embedded if the <code>go</code> command is invoked in
-  a directory within a Git, Mercurial, Fossil, or Bazaar repository, and the
-  <code>main</code> package and its containing main module are in the same
-  repository. This information may be omitted using the flag
-  <code>-buildvcs=false</code>.
-</p>
-
-<p><!-- golang.org/issue/37475 -->
-  Additionally, the <code>go</code> command embeds information about the build,
-  including build and tool tags (set with <code>-tags</code>), compiler,
-  assembler, and linker flags (like <code>-gcflags</code>), whether cgo was
-  enabled, and if it was, the values of the cgo environment variables
-  (like <code>CGO_CFLAGS</code>).
-  Both VCS and build information may be read together with module
-  information using
-  <code>go</code> <code>version</code> <code>-m</code> <code>file</code> or
-  <code>runtime/debug.ReadBuildInfo</code> (for the currently running binary)
-  or the new <a href="#debug/buildinfo"><code>debug/buildinfo</code></a>
-  package.
-</p>
-
-<p><!-- CL 369977 -->
-  The underlying data format of the embedded build information can change with
-  new go releases, so an older version of <code>go</code> may not handle the
-  build information produced with a newer version of <code>go</code>.
-  To read the version information from a binary built with <code>go</code> 1.18,
-  use the <code>go</code> <code>version</code> command and the
-  <code>debug/buildinfo</code> package from <code>go</code> 1.18+.
-</p>
-
-<h4 id="go-mod-download"><code>go</code> <code>mod</code> <code>download</code></h4>
-
-<p><!-- https://golang.org/issue/44435 -->
-  If the main module's <code>go.mod</code> file
-  specifies <a href="/ref/mod#go-mod-file-go"><code>go</code> <code>1.17</code></a>
-  or higher, <code>go</code> <code>mod</code> <code>download</code> without
-  arguments now downloads source code for only the modules
-  explicitly <a href="/ref/mod#go-mod-file-require">required</a> in the main
-  module's <code>go.mod</code> file. (In a <code>go</code> <code>1.17</code> or
-  higher module, that set already includes all dependencies needed to build the
-  packages and tests in the main module.)
-  To also download source code for transitive dependencies, use
-  <code>go</code> <code>mod</code> <code>download</code> <code>all</code>.
-</p>
-
-<h4 id="go-mod-vendor"><code>go</code> <code>mod</code> <code>vendor</code></h4>
-
-<p><!-- https://golang.org/issue/47327 -->
-  The <code>go</code> <code>mod</code> <code>vendor</code> subcommand now
-  supports a <code>-o</code> flag to set the output directory.
-  (Other <code>go</code> commands still read from the <code>vendor</code>
-  directory at the module root when loading packages
-  with <code>-mod=vendor</code>, so the main use for this flag is for
-  third-party tools that need to collect package source code.)
-</p>
-
-<h4 id="go-mod-tidy"><code>go</code> <code>mod</code> <code>tidy</code></h4>
-
-<p><!-- https://golang.org/issue/47738, CL 344572 -->
-  The <code>go</code> <code>mod</code> <code>tidy</code> command now retains
-  additional checksums in the <code>go.sum</code> file for modules whose source
-  code is needed to verify that each imported package is provided by only one
-  module in the <a href="/ref/mod#glos-build-list">build list</a>. Because this
-  condition is rare and failure to apply it results in a build error, this
-  change is <em>not</em> conditioned on the <code>go</code> version in the main
-  module's <code>go.mod</code> file.
-</p>
-
-<h4 id="go-work"><code>go</code> <code>work</code></h4>
-
-<p><!-- https://golang.org/issue/45713 -->
-  The <code>go</code> command now supports a "Workspace" mode. If a
-  <code>go.work</code> file is found in the working directory or a
-  parent directory, or one is specified using the <code>GOWORK</code>
-  environment variable, it will put the <code>go</code> command into workspace mode.
-  In workspace mode, the <code>go.work</code> file will be used to
-  determine the set of main modules used as the roots for module
-  resolution, instead of using the normally-found <code>go.mod</code>
-  file to specify the single main module. For more information see the
-  <a href="/pkg/cmd/go#hdr-Workspace_maintenance"><code>go work</code></a>
-  documentation.
-</p>
-
-<h4 id="go-build-asan"><code>go</code> <code>build</code> <code>-asan</code></h4>
-
-<p><!-- CL 298612 -->
-  The <code>go</code> <code>build</code> command and related commands
-  now support an <code>-asan</code> flag that enables interoperation
-  with C (or C++) code compiled with the address sanitizer (C compiler
-  option <code>-fsanitize=address</code>).
-</p>
-
-<h4 id="go-test"><code>go</code> <code>test</code></h4>
-
-<p><!-- CL 251441 -->
-  The <code>go</code> command now supports additional command line
-  options for the new <a href="#fuzzing">fuzzing support described
-  above</a>:
-  <ul>
-    <li>
-      <code>go test</code> supports
-      <code>-fuzz</code>, <code>-fuzztime</code>, and
-      <code>-fuzzminimizetime</code> options.
-      For documentation on these see
-      <a href="/pkg/cmd/go#hdr-Testing_flags"><code>go help testflag</code></a>.
-    </li>
-    <li>
-      <code>go clean</code> supports a <code>-fuzzcache</code>
-      option.
-      For documentation see
-      <a href="/pkg/cmd/go#hdr-Remove_object_files_and_cached_files"><code>go help clean</code></a>.
-    </li>
-  </ul>
-</p>
-
-<h4 id="go-build-lines"><code>//go:build</code> lines</h4>
-
-<p><!-- CL 240611 -->
-Go 1.17 introduced <code>//go:build</code> lines as a more readable way to write build constraints,
-instead of <code>//</code> <code>+build</code> lines.
-As of Go 1.17, <code>gofmt</code> adds <code>//go:build</code> lines
-to match existing <code>+build</code> lines and keeps them in sync,
-while <code>go</code> <code>vet</code> diagnoses when they are out of sync.
-</p>
-
-<p>Since the release of Go 1.18 marks the end of support for Go 1.16,
-all supported versions of Go now understand <code>//go:build</code> lines.
-In Go 1.18, <code>go</code> <code>fix</code> now removes the now-obsolete
-<code>//</code> <code>+build</code> lines in modules declaring
-<code>go</code> <code>1.18</code> or later in their <code>go.mod</code> files.
-</p>
-
-<p>
-For more information, see <a href="https://go.dev/design/draft-gobuild">https://go.dev/design/draft-gobuild</a>.
-</p>
-
-<h3 id="gofmt">Gofmt</h3>
-
-<p><!-- https://golang.org/issue/43566 -->
-  <code>gofmt</code> now reads and formats input files concurrently, with a
-  memory limit proportional to <code>GOMAXPROCS</code>. On a machine with
-  multiple CPUs, <code>gofmt</code> should now be significantly faster.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<h4 id="vet-generics">Updates for Generics</h4>
-
-<p><!-- https://golang.org/issue/48704 -->
-	The <code>vet</code> tool is updated to support generic code. In most cases,
-	it reports an error in generic code whenever it would report an error in the
-	equivalent non-generic code after substituting for type parameters with a
-	type from their
-	<a href="https://golang.org/ref/spec#Interface_types">type set</a>.
-
-	For example, <code>vet</code> reports a format error in
-	<pre>func Print[T ~int|~string](t T) {
-	fmt.Printf("%d", t)
-}</pre>
-	because it would report a format error in the non-generic equivalent of
-	<code>Print[string]</code>:
-	<pre>func PrintString(x string) {
-	fmt.Printf("%d", x)
-}</pre>
-</p>
-
-<h4 id="vet-precision">Precision improvements for existing checkers</h4>
-
-<p><!-- CL 323589 356830 319689 355730 351553 338529 -->
-  The <code>cmd/vet</code> checkers <code>copylock</code>, <code>printf</code>,
-  <code>sortslice</code>, <code>testinggoroutine</code>, and <code>tests</code>
-  have all had moderate precision improvements to handle additional code patterns.
-  This may lead to newly reported errors in existing packages. For example, the
-  <code>printf</code> checker now tracks formatting strings created by
-  concatenating string constants. So <code>vet</code> will report an error in:
-<pre>
-  // fmt.Printf formatting directive %d is being passed to Println.
-  fmt.Println("%d"+` ≡ x (mod 2)`+"\n", x%2)
-</pre>
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- https://golang.org/issue/44167 -->
-  The garbage collector now includes non-heap sources of garbage collector work
-  (e.g., stack scanning) when determining how frequently to run. As a result,
-  garbage collector overhead is more predictable when these sources are
-  significant. For most applications these changes will be negligible; however,
-  some Go applications may now use less memory and spend more time on garbage
-  collection, or vice versa, than before. The intended workaround is to tweak
-  <code>GOGC</code> where necessary.
-</p>
-
-<p><!-- CL 358675, CL 353975, CL 353974 -->
-  The runtime now returns memory to the operating system more efficiently and has
-  been tuned to work more aggressively as a result.
-</p>
-
-<p><!-- CL 352057, https://golang.org/issue/45728 -->
-  Go 1.17 generally improved the formatting of arguments in stack traces,
-  but could print inaccurate values for arguments passed in registers.
-  This is improved in Go 1.18 by printing a question mark (<code>?</code>)
-  after each value that may be inaccurate.
-</p>
-
-<p><!-- CL 347917 -->
-  The built-in function <code>append</code> now uses a slightly different formula
-  when deciding how much to grow a slice when it must allocate a new underlying array.
-  The new formula is less prone to sudden transitions in allocation behavior.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- https://golang.org/issue/40724 -->
-  Go 1.17 <a href="go1.17#compiler">implemented</a> a new way of passing
-  function arguments and results using registers instead of the stack
-  on 64-bit x86 architecture on selected operating systems.
-  Go 1.18 expands the supported platforms to include 64-bit ARM (<code>GOARCH=arm64</code>),
-  big- and little-endian 64-bit PowerPC (<code>GOARCH=ppc64</code>, <code>ppc64le</code>),
-  as well as 64-bit x86 architecture (<code>GOARCH=amd64</code>)
-  on all operating systems.
-  On 64-bit ARM and 64-bit PowerPC systems, benchmarking shows
-  typical performance improvements of 10% or more.
-</p>
-
-<p>
-  As <a href="go1.17#compiler">mentioned</a> in the Go 1.17 release notes,
-  this change does not affect the functionality of any safe Go code and
-  is designed to have no impact on most assembly code. See the
-  <a href="go1.17#compiler">Go 1.17 release notes</a> for more details.
-</p>
-
-<p><!-- CL 355497, CL 356869 -->
-  The compiler now can inline functions that contain range loops or
-  labeled for loops.
-</p>
-
-<p><!-- CL 298611 -->
-  The new <code>-asan</code> compiler option supports the
-  new <code>go</code> command <code>-asan</code> option.
-</p>
-
-<p><!-- https://golang.org/issue/50954 -->
-  Because the compiler's type checker was replaced in its entirety to
-  support generics, some error messages now may use different wording
-  than before. In some cases, pre-Go 1.18 error messages provided more
-  detail or were phrased in a more helpful way.
-  We intend to address these cases in Go 1.19.
-</p>
-
-<p> <!-- https://github.com/golang/go/issues/49569 -->
-  Because of changes in the compiler related to supporting generics, the
-  Go 1.18 compile speed can be roughly 15% slower than the Go 1.17 compile speed.
-  The execution time of the compiled code is not affected.  We
-  intend to improve the speed of the compiler in future releases.
-</p>
-
-<h2 id="linker">Linker</h2>
-
-<p>
-  The linker emits <a href="https://tailscale.com/blog/go-linker/">far fewer relocations</a>.
-  As a result, most codebases will link faster, require less memory to link,
-  and generate smaller binaries.
-  Tools that process Go binaries should use Go 1.18's <code>debug/gosym</code> package
-  to transparently handle both old and new binaries.
-</p>
-
-<p><!-- CL 298610 -->
-  The new <code>-asan</code> linker option supports the
-  new <code>go</code> command <code>-asan</code> option.
-</p>
-
-<h2 id="bootstrap">Bootstrap</h2>
-
-<p><!-- CL 369914, CL 370274 -->
-When building a Go release from source and <code>GOROOT_BOOTSTRAP</code>
-is not set, previous versions of Go looked for a Go 1.4 or later bootstrap toolchain
-in the directory <code>$HOME/go1.4</code> (<code>%HOMEDRIVE%%HOMEPATH%\go1.4</code> on Windows).
-Go now looks first for <code>$HOME/go1.17</code> or <code>$HOME/sdk/go1.17</code>
-before falling back to <code>$HOME/go1.4</code>.
-We intend for Go 1.19 to require Go 1.17 or later for bootstrap,
-and this change should make the transition smoother.
-For more details, see <a href="https://go.dev/issue/44505">go.dev/issue/44505</a>.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="debug/buildinfo">New <code>debug/buildinfo</code> package</h3>
-
-<p><!-- golang.org/issue/39301 -->
-  The new <a href="/pkg/debug/buildinfo"><code>debug/buildinfo</code></a> package
-  provides access to module versions, version control information, and build
-  flags embedded in executable files built by the <code>go</code> command.
-  The same information is also available via
-  <a href="/pkg/runtime/debug#ReadBuildInfo"><code>runtime/debug.ReadBuildInfo</code></a>
-  for the currently running binary and via <code>go</code>
-  <code>version</code> <code>-m</code> on the command line.
-</p>
-
-<h3 id="netip">New <code>net/netip</code> package</h3>
-
-<p>
-  The new <a href="/pkg/net/netip/"><code>net/netip</code></a>
-  package defines a new IP address type, <a href="/pkg/net/netip/#Addr"><code>Addr</code></a>.
-  Compared to the existing
-  <a href="/pkg/net/#IP"><code>net.IP</code></a> type, the <code>netip.Addr</code> type takes less
-  memory, is immutable, and is comparable so it supports <code>==</code>
-  and can be used as a map key.
-</p>
-<p>
-  In addition to <code>Addr</code>, the package defines
-  <a href="/pkg/net/netip/#AddrPort"><code>AddrPort</code></a>, representing
-  an IP and port, and
-  <a href="/pkg/net/netip/#Prefix"><code>Prefix</code></a>, representing
-  a network CIDR prefix.
-</p>
-<p>
-  The package also defines several functions to create and examine
-  these new types:
-  <a href="/pkg/net/netip#AddrFrom4"><code>AddrFrom4</code></a>,
-  <a href="/pkg/net/netip#AddrFrom16"><code>AddrFrom16</code></a>,
-  <a href="/pkg/net/netip#AddrFromSlice"><code>AddrFromSlice</code></a>,
-  <a href="/pkg/net/netip#AddrPortFrom"><code>AddrPortFrom</code></a>,
-  <a href="/pkg/net/netip#IPv4Unspecified"><code>IPv4Unspecified</code></a>,
-  <a href="/pkg/net/netip#IPv6LinkLocalAllNodes"><code>IPv6LinkLocalAllNodes</code></a>,
-  <a href="/pkg/net/netip#IPv6Unspecified"><code>IPv6Unspecified</code></a>,
-  <a href="/pkg/net/netip#MustParseAddr"><code>MustParseAddr</code></a>,
-  <a href="/pkg/net/netip#MustParseAddrPort"><code>MustParseAddrPort</code></a>,
-  <a href="/pkg/net/netip#MustParsePrefix"><code>MustParsePrefix</code></a>,
-  <a href="/pkg/net/netip#ParseAddr"><code>ParseAddr</code></a>,
-  <a href="/pkg/net/netip#ParseAddrPort"><code>ParseAddrPort</code></a>,
-  <a href="/pkg/net/netip#ParsePrefix"><code>ParsePrefix</code></a>,
-  <a href="/pkg/net/netip#PrefixFrom"><code>PrefixFrom</code></a>.
-</p>
-<p>
-  The <a href="/pkg/net/"><code>net</code></a> package includes new
-  methods that parallel existing methods, but
-  return <code>netip.AddrPort</code> instead of the
-  heavier-weight <a href="/pkg/net/#IP"><code>net.IP</code></a> or
-  <a href="/pkg/net/#UDPAddr"><code>*net.UDPAddr</code></a> types:
-  <a href="/pkg/net/#Resolver.LookupNetIP"><code>Resolver.LookupNetIP</code></a>,
-  <a href="/pkg/net/#UDPConn.ReadFromUDPAddrPort"><code>UDPConn.ReadFromUDPAddrPort</code></a>,
-  <a href="/pkg/net/#UDPConn.ReadMsgUDPAddrPort"><code>UDPConn.ReadMsgUDPAddrPort</code></a>,
-  <a href="/pkg/net/#UDPConn.WriteToUDPAddrPort"><code>UDPConn.WriteToUDPAddrPort</code></a>,
-  <a href="/pkg/net/#UDPConn.WriteMsgUDPAddrPort"><code>UDPConn.WriteMsgUDPAddrPort</code></a>.
-  The new <code>UDPConn</code> methods support allocation-free I/O.
-</p>
-<p>
-  The <code>net</code> package also now includes functions and methods
-  to convert between the existing
-  <a href="/pkg/net/#TCPAddr"><code>TCPAddr</code></a>/<a href="/pkg/net/#UDPAddr"><code>UDPAddr</code></a>
-  types and <code>netip.AddrPort</code>:
-  <a href="/pkg/net/#TCPAddrFromAddrPort"><code>TCPAddrFromAddrPort</code></a>,
-  <a href="/pkg/net/#UDPAddrFromAddrPort"><code>UDPAddrFromAddrPort</code></a>,
-  <a href="/pkg/net/#TCPAddr.AddrPort"><code>TCPAddr.AddrPort</code></a>,
-  <a href="/pkg/net/#UDPAddr.AddrPort"><code>UDPAddr.AddrPort</code></a>.
-</p>
-
-<h3 id="tls10">TLS 1.0 and 1.1 disabled by default client-side</h3>
-
-<p><!-- CL 359779, golang.org/issue/45428 -->
-  If <a href="/pkg/crypto/tls/#Config.MinVersion"><code>Config.MinVersion</code></a>
-  is not set, it now defaults to TLS 1.2 for client connections. Any safely
-  up-to-date server is expected to support TLS 1.2, and browsers have required
-  it since 2020. TLS 1.0 and 1.1 are still supported by setting
-  <code>Config.MinVersion</code> to <code>VersionTLS10</code>.
-  The server-side default is unchanged at TLS 1.0.
-</p>
-
-<p>
-  The default can be temporarily reverted to TLS 1.0 by setting the
-  <code>GODEBUG=tls10default=1</code> environment variable.
-  This option will be removed in Go 1.19.
-</p>
-
-<h3 id="sha1">Rejecting SHA-1 certificates</h3>
-
-<p><!-- CL 359777, golang.org/issue/41682 -->
-  <code>crypto/x509</code> will now
-  reject certificates signed with the SHA-1 hash function. This doesn't
-  apply to self-signed root certificates. Practical attacks against SHA-1
-  <a href="https://shattered.io/">have been demonstrated since 2017</a> and publicly
-  trusted Certificate Authorities have not issued SHA-1 certificates since 2015.
-</p>
-
-<p>
-  This can be temporarily reverted by setting the
-  <code>GODEBUG=x509sha1=1</code> environment variable.
-  This option will be removed in a future release.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
-  <dd>
-    <p><!-- CL 345569 -->
-      The new <a href="/pkg/bufio#Writer.AvailableBuffer"><code>Writer.AvailableBuffer</code></a>
-      method returns an empty buffer with a possibly non-empty capacity for use
-      with append-like APIs. After appending, the buffer can be provided to a
-      succeeding <code>Write</code> call and possibly avoid any copying.
-    </p>
-
-    <p><!-- CL 345570 -->
-      The <a href="/pkg/bufio#Reader.Reset"><code>Reader.Reset</code></a> and
-      <a href="/pkg/bufio#Writer.Reset"><code>Writer.Reset</code></a> methods
-      now use the default buffer size when called on objects with a
-      <code>nil</code> buffer.
-    </p>
-  </dd>
-</dl><!-- bufio -->
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-  <dd>
-    <p><!-- CL 351710 -->
-      The new <a href="/pkg/bytes/#Cut"><code>Cut</code></a> function
-      slices a <code>[]byte</code> around a separator. It can replace
-      and simplify many common uses of
-      <a href="/pkg/bytes/#Index"><code>Index</code></a>,
-      <a href="/pkg/bytes/#IndexByte"><code>IndexByte</code></a>,
-      <a href="/pkg/bytes/#IndexRune"><code>IndexRune</code></a>,
-      and <a href="/pkg/bytes/#SplitN"><code>SplitN</code></a>.
-    </p>
-
-    <p><!-- CL 323318, CL 332771 -->
-      <a href="/pkg/bytes/#Trim"><code>Trim</code></a>, <a href="/pkg/bytes/#TrimLeft"><code>TrimLeft</code></a>,
-      and <a href="/pkg/bytes/#TrimRight"><code>TrimRight</code></a> are now allocation free and, especially for
-      small ASCII cutsets, up to 10 times faster.
-    </p>
-
-    <p><!-- CL 359485 -->
-      The <a href="/pkg/bytes/#Title"><code>Title</code></a> function is now deprecated. It doesn't
-      handle Unicode punctuation and language-specific capitalization rules, and is superseded by the
-      <a href="https://golang.org/x/text/cases">golang.org/x/text/cases</a> package.
-    </p>
-  </dd>
-</dl><!-- bytes -->
-
-<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
-  <dd>
-    <p><!-- CL 320071, CL 320072, CL 320074, CL 361402, CL 360014 -->
-      The <a href="/pkg/crypto/elliptic#P224"><code>P224</code></a>,
-      <a href="/pkg/crypto/elliptic#P384"><code>P384</code></a>, and
-      <a href="/pkg/crypto/elliptic#P521"><code>P521</code></a> curve
-      implementations are now all backed by code generated by the
-      <a href="https://github.com/mmcloughlin/addchain">addchain</a> and
-      <a href="https://github.com/mit-plv/fiat-crypto">fiat-crypto</a>
-      projects, the latter of which is based on a formally-verified model
-      of the arithmetic operations. They now use safer complete formulas
-      and internal APIs. P-224 and P-384 are now approximately four times
-      faster. All specific curve implementations are now constant-time.
-    </p>
-
-    <p>
-      Operating on invalid curve points (those for which the
-      <code>IsOnCurve</code> method returns false, and which are never returned
-      by <a href="/pkg/crypto/elliptic#Unmarshal"><code>Unmarshal</code></a> or
-      a <code>Curve</code> method operating on a valid point) has always been
-      undefined behavior, can lead to key recovery attacks, and is now
-      unsupported by the new backend. If an invalid point is supplied to a
-      <code>P224</code>, <code>P384</code>, or <code>P521</code> method, that
-      method will now return a random point. The behavior might change to an
-      explicit panic in a future release.
-    </p>
-  </dd>
-</dl><!-- crypto/elliptic -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 325250 -->
-      The new <a href="/pkg/crypto/tls/#Conn.NetConn"><code>Conn.NetConn</code></a>
-      method allows access to the underlying
-      <a href="/pkg/net#Conn"><code>net.Conn</code></a>.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 353132, CL 353403 -->
-      <a href="/pkg/crypto/x509/#Certificate.Verify"><code>Certificate.Verify</code></a>
-      now uses platform APIs to verify certificate validity on macOS and iOS when it
-      is called with a nil
-      <a href="/pkg/crypto/x509/#VerifyOpts.Roots"><code>VerifyOpts.Roots</code></a>
-      or when using the root pool returned from
-      <a href="/pkg/crypto/x509/#SystemCertPool"><code>SystemCertPool</code></a>.
-    </p>
-
-    <p><!-- CL 353589 -->
-      <a href="/pkg/crypto/x509/#SystemCertPool"><code>SystemCertPool</code></a>
-      is now available on Windows.
-    </p>
-
-    <p>
-      On Windows, macOS, and iOS, when a
-      <a href="/pkg/crypto/x509/#CertPool"><code>CertPool</code></a> returned by
-      <a href="/pkg/crypto/x509/#SystemCertPool"><code>SystemCertPool</code></a>
-      has additional certificates added to it,
-      <a href="/pkg/crypto/x509/#Certificate.Verify"><code>Certificate.Verify</code></a>
-      will do two verifications: one using the platform verifier APIs and the
-      system roots, and one using the Go verifier and the additional roots.
-      Chains returned by the platform verifier APIs will be prioritized.
-    </p>
-
-    <p>
-      <a href="/pkg/crypto/x509/#CertPool.Subjects"><code>CertPool.Subjects</code></a>
-      is deprecated. On Windows, macOS, and iOS the
-      <a href="/pkg/crypto/x509/#CertPool"><code>CertPool</code></a> returned by
-      <a href="/pkg/crypto/x509/#SystemCertPool"><code>SystemCertPool</code></a>
-      will return a pool which does not include system roots in the slice
-      returned by <code>Subjects</code>, as a static list can't appropriately
-      represent the platform policies and might not be available at all from the
-      platform APIs.
-    </p>
-
-    <p>
-      Support for signing certificates using signature algorithms that depend on the
-      MD5 hash (<code>MD5WithRSA</code>) may be removed in Go 1.19.
-    </p>
-  </dd>
-</dl>
-
-<dl id="debug/dwarf"><dt><a href="/pkg/debug/dwarf/">debug/dwarf</a></dt>
-  <dd>
-    <p><!-- CL 380714 -->
-      The <a href="/pkg/debug/dwarf#StructField"><code>StructField</code></a>
-      and <a href="/pkg/debug/dwarf#BasicType"><code>BasicType</code></a>
-      structs both now have a <code>DataBitOffset</code> field, which
-      holds the value of the <code>DW_AT_data_bit_offset</code>
-      attribute if present.
-  </dd>
-</dl>
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- CL 352829 -->
-      The <a href="/pkg/debug/elf/#R_PPC64_RELATIVE"><code>R_PPC64_RELATIVE</code></a>
-      constant has been added.
-    </p>
-  </dd>
-</dl><!-- debug/elf -->
-
-<dl id="debug/plan9obj"><dt><a href="/pkg/debug/plan9obj/">debug/plan9obj</a></dt>
-  <dd>
-    <p><!-- CL 350229 -->
-      The <a href="/pkg/debug/plan9obj#File.Symbols">File.Symbols</a>
-      method now returns the new exported error
-      value <a href="/pkg/debug/plan9obj#ErrNoSymbols">ErrNoSymbols</a>
-      if the file has no symbol section.
-    </p>
-  </dd>
-</dl><!-- debug/plan9obj -->
-
-<dl id="embed"><dt><a href="/pkg/embed/">embed</a></dt>
-  <dd>
-    <p><!-- CL 359413 -->
-      A <a href="/pkg/embed#hdr-Directives"><code>go:embed</code></a>
-      directive may now start with <code>all:</code> to include files
-      whose names start with dot or underscore.
-    </p>
-  </dd>
-</dl><!-- debug/plan9obj -->
-
-<dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt>
-  <dd>
-    <p><!-- https://golang.org/issue/47781, CL 325689, CL 327149, CL 348375, CL 348609 -->
-      Per the proposal
-      <a href="https://go.googlesource.com/proposal/+/master/design/47781-parameterized-go-ast.md">
-        Additions to go/ast and go/token to support parameterized functions and types
-      </a>
-      the following additions are made to the <a href="/pkg/go/ast"><code>go/ast</code></a> package:
-      <ul>
-        <li>
-          the <a href="/pkg/go/ast/#FuncType"><code>FuncType</code></a>
-          and <a href="/pkg/go/ast/#TypeSpec"><code>TypeSpec</code></a>
-          nodes have a new field <code>TypeParams</code> to hold type parameters, if any.
-        </li>
-        <li>
-          The new expression node <a href="/pkg/go/ast/#IndexListExpr"><code>IndexListExpr</code></a>
-          represents index expressions with multiple indices, used for function and type instantiations
-          with more than one explicit type argument.
-        </li>
-      </ul>
-    </p>
-  </dd>
-</dl>
-
-<dl id="go/constant"><dt><a href="/pkg/go/constant/">go/constant</a></dt>
-  <dd>
-    <p><!-- https://golang.org/issue/46211, CL 320491 -->
-      The new <a href="/pkg/go/constant/#Kind.String"><code>Kind.String</code></a>
-      method returns a human-readable name for the receiver kind.
-    </p>
-  </dd>
-</dl>
-
-<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
-  <dd>
-    <p><!-- https://golang.org/issue/47781, CL 324992 -->
-      The new constant <a href="/pkg/go/token/#TILDE"><code>TILDE</code></a>
-      represents the <code>~</code> token per the proposal
-      <a href="https://go.googlesource.com/proposal/+/master/design/47781-parameterized-go-ast.md">
-        Additions to go/ast and go/token to support parameterized functions and types
-      </a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
-  <dd>
-    <p><!-- https://golang.org/issue/46648 -->
-      The new <a href="/pkg/go/types/#Config.GoVersion"><code>Config.GoVersion</code></a>
-      field sets the accepted Go language version.
-    </p>
-
-    <p><!-- https://golang.org/issue/47916 -->
-      Per the proposal
-      <a href="https://go.googlesource.com/proposal/+/master/design/47916-parameterized-go-types.md">
-        Additions to go/types to support type parameters
-      </a>
-      the following additions are made to the <a href="/pkg/go/types"><code>go/types</code></a> package:
-    </p>
-    <ul>
-      <li>
-        The new type
-        <a href="/pkg/go/types/#TypeParam"><code>TypeParam</code></a>, factory function
-        <a href="/pkg/go/types/#NewTypeParam"><code>NewTypeParam</code></a>,
-        and associated methods are added to represent a type parameter.
-      </li>
-      <li>
-        The new type
-        <a href="/pkg/go/types/#TypeParamList"><code>TypeParamList</code></a> holds a list of
-        type parameters.
-      </li>
-      <li>
-        The new type
-        <a href="/pkg/go/types/#TypeList"><code>TypeList</code></a> holds a list of types.
-      </li>
-      <li>
-        The new factory function
-        <a href="/pkg/go/types/#NewSignatureType"><code>NewSignatureType</code></a> allocates a
-        <a href="/pkg/go/types/#Signature"><code>Signature</code></a> with
-        (receiver or function) type parameters.
-        To access those type parameters, the <code>Signature</code> type has two new methods
-        <a href="/pkg/go/types/#Signature.RecvTypeParams"><code>Signature.RecvTypeParams</code></a> and
-        <a href="/pkg/go/types/#Signature.TypeParams"><code>Signature.TypeParams</code></a>.
-      </li>
-      <li>
-        <a href="/pkg/go/types/#Named"><code>Named</code></a> types have four new methods:
-        <a href="/pkg/go/types/#Named.Origin"><code>Named.Origin</code></a> to get the original
-        parameterized types of instantiated types,
-        <a href="/pkg/go/types/#Named.TypeArgs"><code>Named.TypeArgs</code></a> and
-        <a href="/pkg/go/types/#Named.TypeParams"><code>Named.TypeParams</code></a> to get the
-        type arguments or type parameters of an instantiated or parameterized type, and
-        <a href="/pkg/go/types/#Named.TypeParams"><code>Named.SetTypeParams</code></a> to set the
-        type parameters (for instance, when importing a named type where allocation of the named
-        type and setting of type parameters cannot be done simultaneously due to possible cycles).
-      </li>
-      <li>
-        The <a href="/pkg/go/types/#Interface"><code>Interface</code></a> type has four new methods:
-        <a href="/pkg/go/types/#Interface.IsComparable"><code>Interface.IsComparable</code></a> and
-        <a href="/pkg/go/types/#Interface.IsMethodSet"><code>Interface.IsMethodSet</code></a> to
-        query properties of the type set defined by the interface, and
-        <a href="/pkg/go/types/#Interface.MarkImplicit"><code>Interface.MarkImplicit</code></a> and
-        <a href="/pkg/go/types/#Interface.IsImplicit"><code>Interface.IsImplicit</code></a> to set
-        and test whether the interface is an implicit interface around a type constraint literal.
-      </li>
-      <li>
-        The new types
-        <a href="/pkg/go/types/#Union"><code>Union</code></a> and
-        <a href="/pkg/go/types/#Term"><code>Term</code></a>, factory functions
-        <a href="/pkg/go/types/#NewUnion"><code>NewUnion</code></a> and
-        <a href="/pkg/go/types/#NewTerm"><code>NewTerm</code></a>, and associated
-        methods are added to represent type sets in interfaces.
-      </li>
-      <li>
-        The new function
-        <a href="/pkg/go/types/#Instantiate"><code>Instantiate</code></a>
-        instantiates a parameterized type.
-      </li>
-      <li>
-        The new <a href="/pkg/go/types/#Info.Instances"><code>Info.Instances</code></a>
-        map records function and type instantiations through the new
-        <a href="/pkg/go/types/#Instance"><code>Instance</code></a> type.
-      </li>
-      <li><!-- CL 342671 -->
-        The new type <a href="/pkg/go/types/#ArgumentError"><code>ArgumentError</code></a>
-        and associated methods are added to represent an error related to a type argument.
-      </li>
-      <li><!-- CL 353089 -->
-        The new type <a href="/pkg/go/types/#Context"><code>Context</code></a> and factory function
-        <a href="/pkg/go/types/#NewContext"><code>NewContext</code></a>
-        are added to facilitate sharing of identical type instances
-        across type-checked packages, via the new
-        <a href="/pkg/go/types/#Config.Context"><code>Config.Context</code></a>
-        field.
-      </li>
-    </ul>
-    <p>
-      The predicates
-      <a href="/pkg/go/types/#AssignableTo"><code>AssignableTo</code></a>,
-      <a href="/pkg/go/types/#ConvertibleTo"><code>ConvertibleTo</code></a>,
-      <a href="/pkg/go/types/#Implements"><code>Implements</code></a>,
-      <a href="/pkg/go/types/#Identical"><code>Identical</code></a>,
-      <a href="/pkg/go/types/#IdenticalIgnoreTags"><code>IdenticalIgnoreTags</code></a>, and
-      <a href="/pkg/go/types/#AssertableTo"><code>AssertableTo</code></a>
-      now also work with arguments that are or contain generalized interfaces,
-      i.e. interfaces that may only be used as type constraints in Go code.
-      Note that the behavior of <code>AssignableTo</code>,
-      <code>ConvertibleTo</code>, <code>Implements</code>, and
-      <code>AssertableTo</code> is undefined with arguments that are
-      uninstantiated generic types, and <code>AssertableTo</code> is undefined
-      if the first argument is a generalized interface.
-    </p>
-  </dd>
-</dl>
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 321491 -->
-      Within a <code>range</code> pipeline the new
-      <code>{{break}}</code> command will end the loop early and the
-      new <code>{{continue}}</code> command will immediately start the
-      next loop iteration.
-    </p>
-
-    <p><!-- CL 321490 -->
-      The <code>and</code> function no longer always evaluates all arguments; it
-      stops evaluating arguments after the first argument that evaluates to
-      false.  Similarly, the <code>or</code> function now stops evaluating
-      arguments after the first argument that evaluates to true. This makes a
-      difference if any of the arguments is a function call.
-    </p>
-  </dd>
-</dl><!-- html/template -->
-
-<dl id="image/draw"><dt><a href="/pkg/image/draw/">image/draw</a></dt>
-  <dd>
-    <p><!-- CL 340049 -->
-      The <code>Draw</code> and <code>DrawMask</code> fallback implementations
-      (used when the arguments are not the most common image types) are now
-      faster when those arguments implement the optional
-      <a href="/pkg/image/draw/#RGBA64Image"><code>draw.RGBA64Image</code></a>
-      and <a href="/pkg/image/#RGBA64Image"><code>image.RGBA64Image</code></a>
-      interfaces that were added in Go 1.17.
-    </p>
-  </dd>
-</dl><!-- image/draw -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 340261 -->
-      <a href="/pkg/net#Error"><code>net.Error.Temporary</code></a> has been deprecated.
-    </p>
-  </dd>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 330852 -->
-      On WebAssembly targets, the <code>Dial</code>, <code>DialContext</code>,
-      <code>DialTLS</code> and <code>DialTLSContext</code> method fields in
-      <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-      will now be correctly used, if specified, for making HTTP requests.
-    </p>
-
-    <p><!-- CL 338590 -->
-      The new
-      <a href="/pkg/net/http#Cookie.Valid"><code>Cookie.Valid</code></a>
-      method reports whether the cookie is valid.
-    </p>
-
-    <p><!-- CL 346569 -->
-      The new
-      <a href="/pkg/net/http#MaxBytesHandler"><code>MaxBytesHandler</code></a>
-      function creates a <code>Handler</code> that wraps its
-      <code>ResponseWriter</code> and <code>Request.Body</code> with a
-      <a href="/pkg/net/http#MaxBytesReader"><code>MaxBytesReader</code></a>.
-    </p>
-
-    <p><!-- CL 359634, CL 360381, CL 362735 -->
-      When looking up a domain name containing non-ASCII characters,
-      the Unicode-to-ASCII conversion is now done in accordance with
-      Nontransitional Processing as defined in the
-      <a href="https://unicode.org/reports/tr46/">Unicode IDNA
-      Compatibility Processing</a> standard (UTS #46). The
-      interpretation of four distinct runes are changed: ß, ς,
-      zero-width joiner U+200D, and zero-width non-joiner
-      U+200C. Nontransitional Processing is consistent with most
-      applications and web browsers.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="os/user"><dt><a href="/pkg/os/user/">os/user</a></dt>
-  <dd>
-    <p><!-- CL 330753 -->
-      <a href="/pkg/os/user#User.GroupIds"><code>User.GroupIds</code></a>
-      now uses a Go native implementation when cgo is not available.
-    </p>
-  </dd>
-</dl><!-- os/user -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 356049, CL 320929 -->
-      The new
-      <a href="/pkg/reflect/#Value.SetIterKey"><code>Value.SetIterKey</code></a>
-      and <a href="/pkg/reflect/#Value.SetIterValue"><code>Value.SetIterValue</code></a>
-      methods set a Value using a map iterator as the source. They are equivalent to
-      <code>Value.Set(iter.Key())</code> and <code>Value.Set(iter.Value())</code>, but
-      do fewer allocations.
-    </p>
-
-    <p><!-- CL 350691 -->
-      The new
-      <a href="/pkg/reflect/#Value.UnsafePointer"><code>Value.UnsafePointer</code></a>
-      method returns the Value's value as an <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code></a>.
-      This allows callers to migrate from <a href="/pkg/reflect/#Value.UnsafeAddr"><code>Value.UnsafeAddr</code></a>
-      and <a href="/pkg/reflect/#Value.Pointer"><code>Value.Pointer</code></a>
-      to eliminate the need to perform uintptr to unsafe.Pointer conversions at the callsite (as unsafe.Pointer rules require).
-    </p>
-
-    <p><!-- CL 321891 -->
-      The new
-      <a href="/pkg/reflect/#MapIter.Reset"><code>MapIter.Reset</code></a>
-      method changes its receiver to iterate over a
-      different map. The use of
-      <a href="/pkg/reflect/#MapIter.Reset"><code>MapIter.Reset</code></a>
-      allows allocation-free iteration
-      over many maps.
-    </p>
-
-    <p><!-- CL 352131 -->
-      A number of methods (
-      <a href="/pkg/reflect#Value.CanInt"><code>Value.CanInt</code></a>,
-      <a href="/pkg/reflect#Value.CanUint"><code>Value.CanUint</code></a>,
-      <a href="/pkg/reflect#Value.CanFloat"><code>Value.CanFloat</code></a>,
-      <a href="/pkg/reflect#Value.CanComplex"><code>Value.CanComplex</code></a>
-      )
-      have been added to
-      <a href="/pkg/reflect#Value"><code>Value</code></a>
-      to test if a conversion is safe.
-    </p>
-
-    <p><!-- CL 357962 -->
-      <a href="/pkg/reflect#Value.FieldByIndexErr"><code>Value.FieldByIndexErr</code></a>
-      has been added to avoid the panic that occurs in
-      <a href="/pkg/reflect#Value.FieldByIndex"><code>Value.FieldByIndex</code></a>
-      when stepping through a nil pointer to an embedded struct.
-    </p>
-
-    <p><!-- CL 341333 -->
-      <a href="/pkg/reflect#Ptr"><code>reflect.Ptr</code></a> and
-      <a href="/pkg/reflect#PtrTo"><code>reflect.PtrTo</code></a>
-      have been renamed to
-      <a href="/pkg/reflect#Pointer"><code>reflect.Pointer</code></a> and
-      <a href="/pkg/reflect#PointerTo"><code>reflect.PointerTo</code></a>,
-      respectively, for consistency with the rest of the reflect package.
-      The old names will continue to work, but will be deprecated in a
-      future Go release.
-    </p>
-  </dd><!-- CL 321889 and CL 345486 are optimizations, no need to mention. -->
-</dl><!-- reflect -->
-
-<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
-  <dd>
-    <p><!-- CL 354569 -->
-      <a href="/pkg/regexp/"><code>regexp</code></a>
-      now treats each invalid byte of a UTF-8 string as <code>U+FFFD</code>.
-    </p>
-  </dd>
-</dl><!-- regexp -->
-
-<dl id="runtime/debug"><dt><a href="/pkg/runtime/debug/">runtime/debug</a></dt>
-  <dd>
-    <p><!-- CL 354569 -->
-      The <a href="/pkg/runtime/debug#BuildInfo"><code>BuildInfo</code></a>
-      struct has two new fields, containing additional information
-      about how the binary was built:
-      <ul>
-	<li><a href="/pkg/runtime/debug#BuildInfo.GoVersion"><code>GoVersion</code></a>
-	  holds the version of Go used to build the binary.
-	</li>
-	<li>
-	  <a href="/pkg/runtime/debug#BuildInfo.Settings"><code>Settings</code></a>
-	  is a slice of
-	  <a href="/pkg/runtime/debug#BuildSettings"><code>BuildSettings</code></a>
-	  structs holding key/value pairs describing the build.
-	</li>
-      </ul>
-    </p>
-  </dd>
-</dl><!-- runtime/debug -->
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- CL 324129 -->
-      The CPU profiler now uses per-thread timers on Linux. This increases the
-      maximum CPU usage that a profile can observe, and reduces some forms of
-      bias.
-    </p>
-  </dd>
-</dl><!-- runtime/pprof -->
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p><!-- CL 343877 -->
-      <a href="/pkg/strconv/#strconv.Unquote"><code>strconv.Unquote</code></a>
-      now rejects Unicode surrogate halves.
-    </p>
-  </dd>
-</dl><!-- strconv -->
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-  <dd>
-    <p><!-- CL 351710 -->
-      The new <a href="/pkg/strings/#Cut"><code>Cut</code></a> function
-      slices a <code>string</code> around a separator. It can replace
-      and simplify many common uses of
-      <a href="/pkg/strings/#Index"><code>Index</code></a>,
-      <a href="/pkg/strings/#IndexByte"><code>IndexByte</code></a>,
-      <a href="/pkg/strings/#IndexRune"><code>IndexRune</code></a>,
-      and <a href="/pkg/strings/#SplitN"><code>SplitN</code></a>.
-    </p>
-
-    <p><!-- CL 345849 -->
-      The new <a href="/pkg/strings/#Clone"><code>Clone</code></a> function copies the input
-      <code>string</code> without the returned cloned <code>string</code> referencing
-      the input string's memory.
-    </p>
-
-    <p><!-- CL 323318, CL 332771 -->
-      <a href="/pkg/strings/#Trim"><code>Trim</code></a>, <a href="/pkg/strings/#TrimLeft"><code>TrimLeft</code></a>,
-      and <a href="/pkg/strings/#TrimRight"><code>TrimRight</code></a> are now allocation free and, especially for
-      small ASCII cutsets, up to 10 times faster.
-    </p>
-
-    <p><!-- CL 359485 -->
-      The <a href="/pkg/strings/#Title"><code>Title</code></a> function is now deprecated. It doesn't
-      handle Unicode punctuation and language-specific capitalization rules, and is superseded by the
-      <a href="https://golang.org/x/text/cases">golang.org/x/text/cases</a> package.
-    </p>
-  </dd>
-</dl><!-- strings -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 319769 -->
-      The new methods
-      <a href="/pkg/sync#Mutex.TryLock"><code>Mutex.TryLock</code></a>,
-      <a href="/pkg/sync#RWMutex.TryLock"><code>RWMutex.TryLock</code></a>, and
-      <a href="/pkg/sync#RWMutex.TryRLock"><code>RWMutex.TryRLock</code></a>,
-      will acquire the lock if it is not currently held.
-    </p>
-  </dd>
-</dl><!-- sync -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 336550 -->
-      The new function <a href="/pkg/syscall/?GOOS=windows#SyscallN"><code>SyscallN</code></a>
-      has been introduced for Windows, allowing for calls with arbitrary number
-      of arguments. As a result,
-      <a href="/pkg/syscall/?GOOS=windows#Syscall"><code>Syscall</code></a>,
-      <a href="/pkg/syscall/?GOOS=windows#Syscall6"><code>Syscall6</code></a>,
-      <a href="/pkg/syscall/?GOOS=windows#Syscall9"><code>Syscall9</code></a>,
-      <a href="/pkg/syscall/?GOOS=windows#Syscall12"><code>Syscall12</code></a>,
-      <a href="/pkg/syscall/?GOOS=windows#Syscall15"><code>Syscall15</code></a>, and
-      <a href="/pkg/syscall/?GOOS=windows#Syscall18"><code>Syscall18</code></a> are
-      deprecated in favor of <a href="/pkg/syscall/?GOOS=windows#SyscallN"><code>SyscallN</code></a>.
-    </p>
-
-    <p><!-- CL 355570 -->
-      <a href="/pkg/syscall/?GOOS=freebsd#SysProcAttr.Pdeathsig"><code>SysProcAttr.Pdeathsig</code></a>
-      is now supported in FreeBSD.
-    </p>
-  </dd>
-</dl><!-- syscall -->
-
-<dl id="syscall/js"><dt><a href="/pkg/syscall/js/">syscall/js</a></dt>
-  <dd>
-    <p><!-- CL 356430 -->
-      The <code>Wrapper</code> interface has been removed.
-    </p>
-  </dd>
-</dl><!-- syscall/js -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- CL 343883 -->
-      The precedence of <code>/</code> in the argument for <code>-run</code> and
-      <code>-bench</code> has been increased. <code>A/B|C/D</code> used to be
-      treated as <code>A/(B|C)/D</code> and is now treated as
-      <code>(A/B)|(C/D)</code>.
-    </p>
-
-    <p><!-- CL 356669 -->
-      If the <code>-run</code> option does not select any tests, the
-      <code>-count</code> option is ignored. This could change the behavior of
-      existing tests in the unlikely case that a test changes the set of subtests
-      that are run each time the test function itself is run.
-    </p>
-
-    <p><!-- CL 251441 -->
-      The new <a href="/pkg/testing#F"><code>testing.F</code></a> type
-      is used by the new <a href="#fuzzing">fuzzing support described
-      above</a>. Tests also now support the command line
-      options <code>-test.fuzz</code>, <code>-test.fuzztime</code>, and
-      <code>-test.fuzzminimizetime</code>.
-    </p>
-  </dd>
-</dl><!-- testing -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 321491 -->
-      Within a <code>range</code> pipeline the new
-      <code>{{break}}</code> command will end the loop early and the
-      new <code>{{continue}}</code> command will immediately start the
-      next loop iteration.
-    </p>
-
-    <p><!-- CL 321490 -->
-      The <code>and</code> function no longer always evaluates all arguments; it
-      stops evaluating arguments after the first argument that evaluates to
-      false.  Similarly, the <code>or</code> function now stops evaluating
-      arguments after the first argument that evaluates to true. This makes a
-      difference if any of the arguments is a function call.
-    </p>
-  </dd>
-</dl><!-- text/template -->
-
-<dl id="text/template/parse"><dt><a href="/pkg/text/template/parse/">text/template/parse</a></dt>
-  <dd>
-    <p><!-- CL 321491 -->
-      The package supports the new
-      <a href="/pkg/text/template/">text/template</a> and
-      <a href="/pkg/html/template/">html/template</a>
-      <code>{{break}}</code> command via the new constant
-      <a href="/pkg/text/template/parse#NodeBreak"><code>NodeBreak</code></a>
-      and the new type
-      <a href="/pkg/text/template/parse#BreakNode"><code>BreakNode</code></a>,
-      and similarly supports the new <code>{{continue}}</code> command
-      via the new constant
-      <a href="/pkg/text/template/parse#NodeContinue"><code>NodeContinue</code></a>
-      and the new type
-      <a href="/pkg/text/template/parse#ContinueNode"><code>ContinueNode</code></a>.
-    </p>
-  </dd>
-</dl><!-- text/template -->
-
-<dl id="unicode/utf8"><dt><a href="/pkg/unicode/utf8/">unicode/utf8</a></dt>
-  <dd>
-    <p><!-- CL 345571 -->
-      The new <a href="/pkg/unicode/utf8/#AppendRune"><code>AppendRune</code></a> function appends the UTF-8
-      encoding of a <code>rune</code> to a <code>[]byte</code>.
-    </p>
-  </dd>
-</dl><!-- unicode/utf8 -->
diff --git a/_content/doc/go1.19.html b/_content/doc/go1.19.html
deleted file mode 100644
index 3c0d4d9..0000000
--- a/_content/doc/go1.19.html
+++ /dev/null
@@ -1,1028 +0,0 @@
-<!--{
-	"Title": "Go 1.19 Release Notes",
-	"Path":  "/doc/go1.19"
-}-->
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-<h2 id="introduction">Introduction to Go 1.19</h2>
-<p>
-  The latest Go release, version 1.19, arrives five months after <a href="/doc/go1.18">Go 1.18</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p><!-- https://go.dev/issue/52038 -->
-  There is only one small change to the language,
-  a <a href="https://github.com/golang/go/issues/52038">very small correction</a>
-  to the <a href="/ref/spec#Declarations_and_scope">scope of type parameters in method declarations</a>.
-  Existing programs are unaffected.
-</p>
-
-<h2 id="mem">Memory Model</h2>
-
-<p><!-- https://go.dev/issue/50859 -->
-  The <a href="/ref/mem">Go memory model</a> has been
-  <a href="https://research.swtch.com/gomm">revised</a> to align Go with
-  the memory model used by C, C++, Java, JavaScript, Rust, and Swift.
-  Go only provides sequentially consistent atomics, not any of the more relaxed forms found in other languages.
-  Along with the memory model update,
-  Go 1.19 introduces <a href="#atomic_types">new types in the <code>sync/atomic</code> package</a>
-  that make it easier to use atomic values, such as
-  <a href="/pkg/sync/atomic/#Int64">atomic.Int64</a>
-  and
-  <a href="/pkg/sync/atomic/#Pointer">atomic.Pointer[T]</a>.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="loong64">LoongArch 64-bit</h3>
-<p><!-- https://go.dev/issue/46229 -->
-  Go 1.19 adds support for the Loongson 64-bit architecture
-  <a href="https://loongson.github.io/LoongArch-Documentation">LoongArch</a>
-  on Linux (<code>GOOS=linux</code>, <code>GOARCH=loong64</code>).
-  The implemented ABI is LP64D. Minimum kernel version supported is 5.19.
-</p>
-<p>
-  Note that most existing commercial Linux distributions for LoongArch come
-  with older kernels, with a historical incompatible system call ABI.
-  Compiled binaries will not work on these systems, even if statically linked.
-  Users on such unsupported systems are limited to the distribution-provided
-  Go package.
-</p>
-
-<h3 id="riscv64">RISC-V</h3>
-<p><!-- CL 402374 -->
-  The <code>riscv64</code> port now supports passing function arguments
-  and result using registers. Benchmarking shows typical performance
-  improvements of 10% or more on <code>riscv64</code>.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="go-doc">Doc Comments</h3>
-
-<p><!-- https://go.dev/issue/51082 --><!-- CL 384265, CL 397276, CL 397278, CL 397279, CL 397281, CL 397284 -->
-Go 1.19 adds support for links, lists, and clearer headings in doc comments.
-As part of this change, <a href="/cmd/gofmt"><code>gofmt</code></a>
-now reformats doc comments to make their rendered meaning clearer.
-See “<a href="/doc/comment">Go Doc Comments</a>”
-for syntax details and descriptions of common mistakes now highlighted by <code>gofmt</code>.
-As another part of this change, the new package <a href="/pkg/go/doc/comment/">go/doc/comment</a>
-provides parsing and reformatting of doc comments
-as well as support for rendering them to HTML, Markdown, and text.
-</p>
-
-<h3 id="go-unix">New <code>unix</code> build constraint</h3>
-
-<p><!-- CL 389934 --><!-- https://go.dev/issue/20322 --><!-- https://go.dev/issue/51572 -->
-  The build constraint <code>unix</code> is now recognized
-  in <code>//go:build</code> lines. The constraint is satisfied
-  if the target operating system, also known as <code>GOOS</code>, is
-  a Unix or Unix-like system. For the 1.19 release it is satisfied
-  if <code>GOOS</code> is one of
-  <code>aix</code>, <code>android</code>, <code>darwin</code>,
-  <code>dragonfly</code>, <code>freebsd</code>, <code>hurd</code>,
-  <code>illumos</code>, <code>ios</code>, <code>linux</code>,
-  <code>netbsd</code>, <code>openbsd</code>, or <code>solaris</code>.
-  In future releases the <code>unix</code> constraint may match
-  additional newly supported operating systems.
-</p>
-
-<h3 id="go-command">Go command</h3>
-
-<!-- https://go.dev/issue/51461 -->
-<p>
-  The <code>-trimpath</code> flag, if set, is now included in the build settings
-  stamped into Go binaries by <code>go</code> <code>build</code>, and can be
-  examined using
-  <a href="https://pkg.go.dev/cmd/go#hdr-Print_Go_version"><code>go</code> <code>version</code> <code>-m</code></a>
-  or <a href="https://pkg.go.dev/runtime/debug#ReadBuildInfo"><code>debug.ReadBuildInfo</code></a>.
-</p>
-<p>
-  <code>go</code> <code>generate</code> now sets the <code>GOROOT</code>
-  environment variable explicitly in the generator's environment, so that
-  generators can locate the correct <code>GOROOT</code> even if built
-  with <code>-trimpath</code>.
-</p>
-
-<p><!-- CL 404134 -->
-  <code>go</code> <code>test</code> and <code>go</code> <code>generate</code> now place
-  <code>GOROOT/bin</code> at the beginning of the <code>PATH</code> used for the
-  subprocess, so tests and generators that execute the <code>go</code> command
-  will resolve it to same <code>GOROOT</code>.
-</p>
-
-<p><!-- CL 398058 -->
-  <code>go</code> <code>env</code> now quotes entries that contain spaces in
-  the <code>CGO_CFLAGS</code>, <code>CGO_CPPFLAGS</code>, <code>CGO_CXXFLAGS</code>, <code>CGO_FFLAGS</code>, <code>CGO_LDFLAGS</code>,
-  and <code>GOGCCFLAGS</code> variables it reports.
-</p>
-
-<p><!-- https://go.dev/issue/29666 -->
-  <code>go</code> <code>list</code> <code>-json</code> now accepts a
-  comma-separated list of JSON fields to populate. If a list is specified,
-  the JSON output will include only those fields, and
-  <code>go</code> <code>list</code> may avoid work to compute fields that are
-  not included. In some cases, this may suppress errors that would otherwise
-  be reported.
-</p>
-
-<p><!-- CL 410821 -->
-  The <code>go</code> command now caches information necessary to load some modules,
-  which should result in a speed-up of some <code>go</code> <code>list</code> invocations.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<p><!-- https://go.dev/issue/47528 -->
-  The <code>vet</code> checker “errorsas” now reports when
-  <a href="/pkg/errors/#As"><code>errors.As</code></a> is called
-  with a second argument of type <code>*error</code>,
-  a common mistake.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- https://go.dev/issue/48409 --><!-- CL 397018 -->
-  The runtime now includes support for a soft memory limit. This memory limit
-  includes the Go heap and all other memory managed by the runtime, and
-  excludes external memory sources such as mappings of the binary itself,
-  memory managed in other languages, and memory held by the operating system on
-  behalf of the Go program. This limit may be managed via
-  <a href="/pkg/runtime/debug/#SetMemoryLimit"><code>runtime/debug.SetMemoryLimit</code></a>
-  or the equivalent
-  <a href="/pkg/runtime/#hdr-Environment_Variables"><code>GOMEMLIMIT</code></a>
-  environment variable. The limit works in conjunction with
-  <a href="/pkg/runtime/debug/#SetGCPercent"><code>runtime/debug.SetGCPercent</code></a>
-  / <a href="/pkg/runtime/#hdr-Environment_Variables"><code>GOGC</code></a>,
-  and will be respected even if <code>GOGC=off</code>, allowing Go programs to
-  always make maximal use of their memory limit, improving resource efficiency
-  in some cases. See <a href="/doc/gc-guide">the GC guide</a> for
-  a detailed guide explaining the soft memory limit in more detail, as well as
-  a variety of common use-cases and scenarios. Please note that small memory
-  limits, on the order of tens of megabytes or less, are less likely to be
-  respected due to external latency factors, such as OS scheduling. See
-  <a href="https://go.dev/issue/52433">issue 52433</a> for more details. Larger
-  memory limits, on the order of hundreds of megabytes or more, are stable and
-  production-ready.
-</p>
-
-<p><!-- CL 353989 -->
-  In order to limit the effects of GC thrashing when the program's live heap
-  size approaches the soft memory limit, the Go runtime also attempts to limit
-  total GC CPU utilization to 50%, excluding idle time, choosing to use more
-  memory over preventing application progress. In practice, we expect this limit
-  to only play a role in exceptional cases, and the new
-  <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">runtime metric</a>
-  <code>/gc/limiter/last-enabled:gc-cycle</code> reports when this last
-  occurred.
-</p>
-
-<p><!-- https://go.dev/issue/44163 -->
-  The runtime now schedules many fewer GC worker goroutines on idle operating
-  system threads when the application is idle enough to force a periodic GC
-  cycle.
-</p>
-
-<p><!-- https://go.dev/issue/18138 --><!-- CL 345889 -->
-  The runtime will now allocate initial goroutine stacks based on the historic
-  average stack usage of goroutines. This avoids some of the early stack growth
-  and copying needed in the average case in exchange for at most 2x wasted
-  space on below-average goroutines.
-</p>
-
-<p><!-- https://go.dev/issue/46279 --><!-- CL 393354 --><!-- CL 392415 -->
-  On Unix operating systems, Go programs that import package
-  <a href="/pkg/os/">os</a> now automatically increase the open file limit
-  (<code>RLIMIT_NOFILE</code>) to the maximum allowed value;
-  that is, they change the soft limit to match the hard limit.
-  This corrects artificially low limits set on some systems for compatibility with very old C programs using the
-  <a href="https://en.wikipedia.org/wiki/Select_(Unix)"><i>select</i></a> system call.
-  Go programs are not helped by that limit, and instead even simple programs like <code>gofmt</code>
-  often ran out of file descriptors on such systems when processing many files in parallel.
-  One impact of this change is that Go programs that in turn execute very old C programs in child processes
-  may run those programs with too high a limit.
-  This can be corrected by setting the hard limit before invoking the Go program.
-</p>
-
-<p><!-- https://go.dev/issue/51485 --><!-- CL 390421 -->
-  Unrecoverable fatal errors (such as concurrent map writes, or unlock of
-  unlocked mutexes) now print a simpler traceback excluding runtime metadata
-  (equivalent to a fatal panic) unless <code>GOTRACEBACK=system</code> or
-  <code>crash</code>. Runtime-internal fatal error tracebacks always include
-  full metadata regardless of the value of <code>GOTRACEBACK</code>
-</p>
-
-<p><!-- https://go.dev/issue/50614 --><!-- CL 395754 -->
-  Support for debugger-injected function calls has been added on ARM64,
-  enabling users to call functions from their binary in an interactive
-  debugging session when using a debugger that is updated to make use of this
-  functionality.
-</p>
-
-<p><!-- https://go.dev/issue/44853 -->
-  The <a href="/doc/go1.18#go-build-asan">address sanitizer support added in Go 1.18</a>
-  now handles function arguments and global variables more precisely.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- https://go.dev/issue/5496 --><!-- CL 357330, 395714, 403979 -->
-  The compiler now uses
-  a <a href="https://en.wikipedia.org/wiki/Branch_table">jump
-  table</a> to implement large integer and string switch statements.
-  Performance improvements for the switch statement vary but can be
-  on the order of 20% faster.
-  (<code>GOARCH=amd64</code> and <code>GOARCH=arm64</code> only)
-</p>
-<p><!-- CL 391014 -->
-  The Go compiler now requires the <code>-p=importpath</code> flag to
-  build a linkable object file. This is already supplied by
-  the <code>go</code> command and by Bazel. Any other build systems
-  that invoke the Go compiler directly will need to make sure they
-  pass this flag as well.
-</p>
-<p><!-- CL 415235 -->
-  The Go compiler no longer accepts the <code>-importmap</code>
-  flag. Build systems that invoke the Go compiler directly must use
-  the <code>-importcfg</code> flag instead.
-</p>
-
-<h2 id="assembler">Assembler</h2>
-<p><!-- CL 404298 -->
-  Like the compiler, the assembler now requires the
-  <code>-p=importpath</code> flag to build a linkable object file.
-  This is already supplied by the <code>go</code> command. Any other
-  build systems that invoke the Go assembler directly will need to
-  make sure they pass this flag as well.
-</p>
-
-<h2 id="linker">Linker</h2>
-<p><!-- https://go.dev/issue/50796, CL 380755 -->
-  On ELF platforms, the linker now emits compressed DWARF sections in
-  the standard gABI format (<code>SHF_COMPRESSED</code>), instead of
-  the legacy <code>.zdebug</code> format.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="atomic_types">New atomic types</h3>
-
-<p><!-- https://go.dev/issue/50860 --><!-- CL 381317 -->
-  The <a href="/pkg/sync/atomic/"><code>sync/atomic</code></a> package defines new atomic types
-  <a href="/pkg/sync/atomic/#Bool"><code>Bool</code></a>,
-  <a href="/pkg/sync/atomic/#Int32"><code>Int32</code></a>,
-  <a href="/pkg/sync/atomic/#Int64"><code>Int64</code></a>,
-  <a href="/pkg/sync/atomic/#Uint32"><code>Uint32</code></a>,
-  <a href="/pkg/sync/atomic/#Uint64"><code>Uint64</code></a>,
-  <a href="/pkg/sync/atomic/#Uintptr"><code>Uintptr</code></a>, and
-  <a href="/pkg/sync/atomic/#Pointer"><code>Pointer</code></a>.
-  These types hide the underlying values so that all accesses are forced to use
-  the atomic APIs.
-  <a href="/pkg/sync/atomic/#Pointer"><code>Pointer</code></a> also avoids
-  the need to convert to
-  <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code></a> at call sites.
-  <a href="/pkg/sync/atomic/#Int64"><code>Int64</code></a> and
-  <a href="/pkg/sync/atomic/#Uint64"><code>Uint64</code></a> are
-  automatically aligned to 64-bit boundaries in structs and allocated data,
-  even on 32-bit systems.
-</p>
-
-<h3 id="os-exec-path">PATH lookups</h3>
-
-<p><!-- https://go.dev/issue/43724 -->
-  <!-- CL 381374 --><!-- CL 403274 -->
-  <a href="/pkg/os/exec/#Command"><code>Command</code></a> and
-  <a href="/pkg/os/exec/#LookPath"><code>LookPath</code></a> no longer
-  allow results from a PATH search to be found relative to the current directory.
-  This removes a <a href="/blog/path-security">common source of security problems</a>
-  but may also break existing programs that depend on using, say, <code>exec.Command("prog")</code>
-  to run a binary named <code>prog</code> (or, on Windows, <code>prog.exe</code>) in the current directory.
-  See the <a href="/pkg/os/exec/"><code>os/exec</code></a> package documentation for
-  information about how best to update such programs.
-</p>
-
-<p><!-- https://go.dev/issue/43947 -->
-  On Windows, <code>Command</code> and <code>LookPath</code> now respect the
-  <a href="https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-needcurrentdirectoryforexepatha"><code>NoDefaultCurrentDirectoryInExePath</code></a>
-  environment variable, making it possible to disable
-  the default implicit search of “<code>.</code>” in PATH lookups on Windows systems.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-  There are also various performance improvements, not enumerated here.
-</p>
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-  <dd>
-    <p><!-- CL 387976 -->
-      <a href="/pkg/archive/zip/#Reader"><code>Reader</code></a>
-      now ignores non-ZIP data at the start of a ZIP file, matching most other implementations.
-      This is necessary to read some Java JAR files, among other uses.
-    </p>
-  </dd>
-</dl><!-- archive/zip -->
-
-<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
-  <dd>
-    <p><!-- CL 382995 -->
-      Operating on invalid curve points (those for which the
-      <code>IsOnCurve</code> method returns false, and which are never returned
-      by <code>Unmarshal</code> or by a <code>Curve</code> method operating on a
-      valid point) has always been undefined behavior and can lead to key
-      recovery attacks. If an invalid point is supplied to
-      <a href="/pkg/crypto/elliptic/#Marshal"><code>Marshal</code></a>,
-      <a href="/pkg/crypto/elliptic/#MarshalCompressed"><code>MarshalCompressed</code></a>,
-      <a href="/pkg/crypto/elliptic/#Curve.Add"><code>Add</code></a>,
-      <a href="/pkg/crypto/elliptic/#Curve.Double"><code>Double</code></a>, or
-      <a href="/pkg/crypto/elliptic/#Curve.ScalarMult"><code>ScalarMult</code></a>,
-      they will now panic.
-    </p>
-
-    <p><!-- golang.org/issue/52182 -->
-      <code>ScalarBaseMult</code> operations on the <code>P224</code>,
-      <code>P384</code>, and <code>P521</code> curves are now up to three
-      times faster, leading to similar speedups in some ECDSA operations. The
-      generic (not platform optimized) <code>P256</code> implementation was
-      replaced with one derived from a formally verified model; this might
-      lead to significant slowdowns on 32-bit platforms.
-    </p>
-  </dd>
-</dl><!-- crypto/elliptic -->
-
-<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
-  <dd>
-    <p><!-- CL 370894 --><!-- CL 390038 -->
-      <a href="/pkg/crypto/rand/#Read"><code>Read</code></a> no longer buffers
-      random data obtained from the operating system between calls. Applications
-      that perform many small reads at high frequency might choose to wrap
-      <a href="/pkg/crypto/rand/#Reader"><code>Reader</code></a> in a
-      <a href="/pkg/bufio/#Reader"><code>bufio.Reader</code></a> for performance
-      reasons, taking care to use
-      <a href="/pkg/io/#ReadFull"><code>io.ReadFull</code></a>
-      to ensure no partial reads occur.
-    </p>
-
-    <p><!-- CL 375215 -->
-      On Plan 9, <code>Read</code> has been reimplemented, replacing the ANSI
-      X9.31 algorithm with a fast key erasure generator.
-    </p>
-
-    <p><!-- CL 391554 --><!-- CL 387554 -->
-      The <a href="/pkg/crypto/rand/#Prime"><code>Prime</code></a>
-      implementation was changed to use only rejection sampling,
-      which removes a bias when generating small primes in non-cryptographic contexts,
-      removes one possible minor timing leak,
-      and better aligns the behavior with BoringSSL,
-      all while simplifying the implementation.
-      The change does produce different outputs for a given random source
-      stream compared to the previous implementation,
-      which can break tests written expecting specific results from
-      specific deterministic random sources.
-      To help prevent such problems in the future,
-      the implementation is now intentionally non-deterministic with respect to the input stream.
-    </p>
-  </dd>
-</dl><!-- crypto/rand -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 400974 --><!-- https://go.dev/issue/45428 -->
-      The <code>GODEBUG</code> option <code>tls10default=1</code> has been
-      removed. It is still possible to enable TLS 1.0 client-side by setting
-      <a href="/pkg/crypto/tls/#Config.MinVersion"><code>Config.MinVersion</code></a>.
-    </p>
-
-    <p><!-- CL 384894 -->
-      The TLS server and client now reject duplicate extensions in TLS
-      handshakes, as required by RFC 5246, Section 7.4.1.4 and RFC 8446, Section
-      4.2.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 285872 -->
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      no longer supports creating certificates with <code>SignatureAlgorithm</code>
-      set to <code>MD5WithRSA</code>.
-    </p>
-
-    <p><!-- CL 400494 -->
-      <code>CreateCertificate</code> no longer accepts negative serial numbers.
-    </p>
-
-    <p><!-- CL 399827 -->
-      <code>CreateCertificate</code> will not emit an empty SEQUENCE anymore
-      when the produced certificate has no extensions.
-    </p>
-
-    <p><!-- CL 396774 -->
-      Removal of the <code>GODEBUG</code> option<code>x509sha1=1</code>,
-      originally planned for Go 1.19, has been rescheduled to a future release.
-      Applications using it should work on migrating. Practical attacks against
-      SHA-1 have been demonstrated since 2017 and publicly trusted Certificate
-      Authorities have not issued SHA-1 certificates since 2015.
-    </p>
-
-    <p><!-- CL 383215 -->
-      <a href="/pkg/crypto/x509/#ParseCertificate"><code>ParseCertificate</code></a>
-      and <a href="/pkg/crypto/x509/#ParseCertificateRequest"><code>ParseCertificateRequest</code></a>
-      now reject certificates and CSRs which contain duplicate extensions.
-    </p>
-
-    <p><!-- https://go.dev/issue/46057 --><!-- https://go.dev/issue/35044 --><!-- CL 398237 --><!-- CL 400175 --><!-- CL 388915 -->
-      The new <a href="/pkg/crypto/x509/#CertPool.Clone"><code>CertPool.Clone</code></a>
-      and <a href="/pkg/crypto/x509/#CertPool.Equal"><code>CertPool.Equal</code></a>
-      methods allow cloning a <code>CertPool</code> and checking the equivalence of two
-      <code>CertPool</code>s respectively.
-    </p>
-
-    <p><!-- https://go.dev/issue/50674 --><!-- CL 390834 -->
-      The new function <a href="/pkg/crypto/x509/#ParseRevocationList"><code>ParseRevocationList</code></a>
-      provides a faster, safer to use CRL parser which returns a
-      <a href="/pkg/crypto/x509/#RevocationList"><code>RevocationList</code></a>.
-      Parsing a CRL also populates the new <code>RevocationList</code> fields
-      <code>RawIssuer</code>, <code>Signature</code>,
-      <code>AuthorityKeyId</code>, and <code>Extensions</code>, which are ignored by
-      <a href="/pkg/crypto/x509/#CreateRevocationList"><code>CreateRevocationList</code></a>.
-    </p><p>
-      The new method <a href="/pkg/crypto/x509/#RevocationList.CheckSignatureFrom"><code>RevocationList.CheckSignatureFrom</code></a>
-      checks that the signature on a CRL is a valid signature from a
-      <a href="/pkg/crypto/x509/#Certificate"><code>Certificate</code></a>.
-    </p><p>
-      The <a href="/pkg/crypto/x509/#ParseCRL"><code>ParseCRL</code></a> and
-      <a href="/pkg/crypto/x509/#ParseDERCRL"><code>ParseDERCRL</code></a> functions
-      are now deprecated in favor of <code>ParseRevocationList</code>.
-      The <a href="/pkg/crypto/x509/#Certificate.CheckCRLSignature"><code>Certificate.CheckCRLSignature</code></a>
-      method is deprecated in favor of <code>RevocationList.CheckSignatureFrom</code>.
-    </p>
-
-    <p><!-- CL 389555, CL 401115, CL 403554 -->
-      The path builder of <a href="/pkg/crypto/x509/#Certificate.Verify"><code>Certificate.Verify</code></a>
-      was overhauled and should now produce better chains and/or be more efficient in complicated scenarios.
-      Name constraints are now also enforced on non-leaf certificates.
-    </p>
-  </dd>
-</dl><!-- crypto/x509 -->
-
-<dl id="crypto/x509/pkix"><dt><a href="/pkg/crypto/x509/pkix/">crypto/x509/pkix</a></dt>
-  <dd>
-    <p><!-- CL 390834 -->
-      The types <a href="/pkg/crypto/x509/pkix/#CertificateList"><code>CertificateList</code></a> and
-      <a href="/pkg/crypto/x509/pkix/#TBSCertificateList"><code>TBSCertificateList</code></a>
-      have been deprecated. The new <a href="#crypto/x509"><code>crypto/x509</code> CRL functionality</a>
-      should be used instead.
-    </p>
-  </dd>
-</dl><!-- crypto/x509/pkix -->
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- CL 396735 -->
-      The new <code>EM_LOONGARCH</code> and <code>R_LARCH_*</code> constants
-      support the loong64 port.
-    </p>
-  </dd>
-</dl><!-- debug/elf -->
-
-<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51868 --><!-- CL 394534 -->
-      The new <a href="/pkg/debug/pe/#File.COFFSymbolReadSectionDefAux"><code>File.COFFSymbolReadSectionDefAux</code></a>
-      method, which returns a <a href="/pkg/debug/pe/#COFFSymbolAuxFormat5"><code>COFFSymbolAuxFormat5</code></a>,
-      provides access to COMDAT information in PE file sections.
-      These are supported by new <code>IMAGE_COMDAT_*</code> and <code>IMAGE_SCN_*</code> constants.
-    </p>
-  </dd>
-</dl><!-- debug/pe -->
-
-<dl id="encoding/binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/50601 --><!-- CL 386017 --><!-- CL 389636 -->
-      The new interface
-      <a href="/pkg/encoding/binary/#AppendByteOrder"><code>AppendByteOrder</code></a>
-      provides efficient methods for appending a <code>uint16</code>, <code>uint32</code>, or <code>uint64</code>
-      to a byte slice.
-      <a href="/pkg/encoding/binary/#BigEndian"><code>BigEndian</code></a> and
-      <a href="/pkg/encoding/binary/#LittleEndian"><code>LittleEndian</code></a> now implement this interface.
-    </p>
-    <p><!-- https://go.dev/issue/51644 --><!-- CL 400176 -->
-      Similarly, the new functions
-      <a href="/pkg/encoding/binary/#AppendUvarint"><code>AppendUvarint</code></a> and
-      <a href="/pkg/encoding/binary/#AppendVarint"><code>AppendVarint</code></a>
-      are efficient appending versions of
-      <a href="/pkg/encoding/binary/#PutUvarint"><code>PutUvarint</code></a> and
-      <a href="/pkg/encoding/binary/#PutVarint"><code>PutVarint</code></a>.
-    </p>
-  </dd>
-</dl><!-- encoding/binary -->
-
-<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/43401 --><!-- CL 405675 -->
-      The new method
-      <a href="/pkg/encoding/csv/#Reader.InputOffset"><code>Reader.InputOffset</code></a>
-      reports the reader's current input position as a byte offset,
-      analogous to <code>encoding/json</code>'s
-      <a href="/pkg/encoding/json/#Decoder.InputOffset"><code>Decoder.InputOffset</code></a>.
-    </p>
-  </dd>
-</dl><!-- encoding/csv -->
-
-<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/45628 --><!-- CL 311270 -->
-      The new method
-      <a href="/pkg/encoding/xml/#Decoder.InputPos"><code>Decoder.InputPos</code></a>
-      reports the reader's current input position as a line and column,
-      analogous to <code>encoding/csv</code>'s
-      <a href="/pkg/encoding/csv/#Decoder.FieldPos"><code>Decoder.FieldPos</code></a>.
-    </p>
-  </dd>
-</dl><!-- encoding/xml -->
-
-<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/45754 --><!-- CL 313329 -->
-      The new function
-      <a href="/pkg/flag/#TextVar"><code>TextVar</code></a>
-      defines a flag with a value implementing
-      <a href="/pkg/encoding/#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>,
-      allowing command-line flag variables to have types such as
-      <a href="/pkg/math/big/#Int"><code>big.Int</code></a>,
-      <a href="/pkg/net/netip/#Addr"><code>netip.Addr</code></a>, and
-      <a href="/pkg/time/#Time"><code>time.Time</code></a>.
-    </p>
-  </dd>
-</dl><!-- flag -->
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/47579 --><!-- CL 406177 -->
-      The new functions
-      <a href="/pkg/fmt/#Append"><code>Append</code></a>,
-      <a href="/pkg/fmt/#Appendf"><code>Appendf</code></a>, and
-      <a href="/pkg/fmt/#Appendln"><code>Appendln</code></a>
-      append formatted data to byte slices.
-    </p>
-  </dd>
-</dl><!-- fmt -->
-
-<dl id="go/parser"><dt><a href="/pkg/go/parser/">go/parser</a></dt>
-  <dd>
-    <p><!-- CL 403696 -->
-      The parser now recognizes <code>~x</code> as a unary expression with operator
-      <a href="/pkg/go/token/#TILDE">token.TILDE</a>,
-      allowing better error recovery when a type constraint such as <code>~int</code> is used in an incorrect context.
-    </p>
-  </dd>
-</dl><!-- go/parser -->
-
-<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51682 --><!-- CL 395535 -->
-      The new methods <a href="/pkg/go/types/#Func.Origin"><code>Func.Origin</code></a>
-      and <a href="/pkg/go/types/#Var.Origin"><code>Var.Origin</code></a> return the
-      corresponding <a href="/pkg/go/types/#Object"><code>Object</code></a> of the
-      generic type for synthetic <a href="/pkg/go/types/#Func"><code>Func</code></a>
-      and <a href="/pkg/go/types/#Var"><code>Var</code></a> objects created during type
-      instantiation.
-    </p>
-    <p><!-- https://go.dev/issue/52728 --><!-- CL 404885 -->
-      It is no longer possible to produce an infinite number of distinct-but-identical
-      <a href="/pkg/go/types/#Named"><code>Named</code></a> type instantiations via
-      recursive calls to
-      <a href="/pkg/go/types/#Named.Underlying"><code>Named.Underlying</code></a> or
-      <a href="/pkg/go/types/#Named.Method"><code>Named.Method</code></a>.
-    </p>
-  </dd>
-</dl><!-- go/types -->
-
-
-<dl id="hash/maphash"><dt><a href="/pkg/hash/maphash/">hash/maphash</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/42710 --><!-- CL 392494 -->
-      The new functions
-      <a href="/pkg/hash/maphash/#Bytes"><code>Bytes</code></a>
-      and
-      <a href="/pkg/hash/maphash/#String"><code>String</code></a>
-      provide an efficient way hash a single byte slice or string.
-      They are equivalent to using the more general
-      <a href="/pkg/hash/maphash/#Hash"><code>Hash</code></a>
-      with a single write, but they avoid setup overhead for small inputs.
-    </p>
-  </dd>
-</dl><!-- hash/maphash -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/46121 --><!-- CL 389156 -->
-      The type <a href="/pkg/html/template/#FuncMap"><code>FuncMap</code></a>
-      is now an alias for
-      <code>text/template</code>'s <a href="/pkg/text/template/#FuncMap"><code>FuncMap</code></a>
-      instead of its own named type.
-      This allows writing code that operates on a <code>FuncMap</code> from either setting.
-    </p>
-    <p><!-- https://go.dev/issue/59153 --><!-- CL 481987 -->
-      Go 1.19.8 and later
-      <a href="/pkg/html/template#hdr-Security_Model">disallow actions in ECMAScript 6 template literals.</a>
-      This behavior can be reverted by the <code>GODEBUG=jstmpllitinterp=1</code> setting.
-    </p>
-  </dd>
-</dl><!-- html/template -->
-
-<dl id="image/draw"><dt><a href="/pkg/image/draw/">image/draw</a></dt>
-  <dd>
-    <p><!-- CL 396795 -->
-      <a href="/pkg/image/draw/#Draw"><code>Draw</code></a> with the
-      <a href="/pkg/image/draw/#Src"><code>Src</code></a> operator preserves
-      non-premultiplied-alpha colors when destination and source images are
-      both <a href="/pkg/image/#NRGBA"><code>image.NRGBA</code></a>
-      or both <a href="/pkg/image/#NRGBA64"><code>image.NRGBA64</code></a>.
-      This reverts a behavior change accidentally introduced by a Go 1.18
-      library optimization; the code now matches the behavior in Go 1.17 and earlier.
-    </p>
-  </dd>
-</dl><!-- image/draw -->
-
-<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51566 --><!-- CL 400236 -->
-      <a href="/pkg/io/#NopCloser"><code>NopCloser</code></a>'s result now implements
-      <a href="/pkg/io/#WriterTo"><code>WriterTo</code></a>
-      whenever its input does.
-    </p>
-
-    <p><!-- https://go.dev/issue/50842 -->
-      <a href="/pkg/io/#MultiReader"><code>MultiReader</code></a>'s result now implements
-      <a href="/pkg/io/#WriterTo"><code>WriterTo</code></a> unconditionally.
-      If any underlying reader does not implement <code>WriterTo</code>,
-      it is simulated appropriately.
-    </p>
-  </dd>
-</dl><!-- io -->
-
-<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
-  <dd>
-    <p><!-- CL 406894 -->
-      On Windows only, the mime package now ignores a registry entry
-      recording that the extension <code>.js</code> should have MIME
-      type <code>text/plain</code>. This is a common unintentional
-      misconfiguration on Windows systems. The effect is
-      that <code>.js</code> will have the default MIME
-      type <code>text/javascript; charset=utf-8</code>.
-      Applications that expect <code>text/plain</code> on Windows must
-      now explicitly call
-      <a href="/pkg/mime/#AddExtensionType"><code>AddExtensionType</code></a>.
-    </p>
-  </dd>
-</dl><!-- mime -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart">mime/multipart</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/59153 --><!-- CL 481985 -->
-      In Go 1.19.8 and later, this package sets limits the size
-      of the MIME data it processes to protect against malicious inputs.
-      <code>Reader.NextPart</code> and <code>Reader.NextRawPart</code> limit the
-      number of headers in a part to 10000 and <code>Reader.ReadForm</code> limits
-      the total number of headers in all <code>FileHeaders</code> to 10000.
-      These limits may be adjusted with the <code>GODEBUG=multipartmaxheaders</code>
-      setting.
-      <code>Reader.ReadForm</code> further limits the number of parts in a form to 1000.
-      This limit may be adjusted with the <code>GODEBUG=multipartmaxparts</code>
-      setting.
-    </p>
-  </dd>
-</dl><!-- mime/multipart -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 386016 -->
-      The pure Go resolver will now use EDNS(0) to include a suggested
-      maximum reply packet length, permitting reply packets to contain
-      up to 1232 bytes (the previous maximum was 512).
-      In the unlikely event that this causes problems with a local DNS
-      resolver, setting the environment variable
-      <code>GODEBUG=netdns=cgo</code> to use the cgo-based resolver
-      should work.
-      Please report any such problems on <a href="/issue/new">the
-      issue tracker</a>.
-    </p>
-
-    <p><!-- https://go.dev/issue/51428 --><!-- CL 396877 -->
-      When a net package function or method returns an "I/O timeout"
-      error, the error will now satisfy <code>errors.Is(err,
-      context.DeadlineExceeded)</code>.  When a net package function
-      returns an "operation was canceled" error, the error will now
-      satisfy <code>errors.Is(err, context.Canceled)</code>.
-      These changes are intended to make it easier for code to test
-      for cases in which a context cancellation or timeout causes a net
-      package function or method to return an error, while preserving
-      backward compatibility for error messages.
-    </p>
-
-    <p><!-- https://go.dev/issue/33097 --><!-- CL 400654 -->
-      <a href="/pkg/net/#Resolver.PreferGo"><code>Resolver.PreferGo</code></a>
-      is now implemented on Windows and Plan 9. It previously only worked on Unix
-      platforms. Combined with
-      <a href="/pkg/net/#Dialer.Resolver"><code>Dialer.Resolver</code></a> and
-      <a href="/pkg/net/#Resolver.Dial"><code>Resolver.Dial</code></a>, it's now
-      possible to write portable programs and be in control of all DNS name lookups
-      when dialing.
-    </p>
-
-    <p>
-      The <code>net</code> package now has initial support for the <code>netgo</code>
-      build tag on Windows. When used, the package uses the Go DNS client (as used
-      by <code>Resolver.PreferGo</code>) instead of asking Windows for
-      DNS results. The upstream DNS server it discovers from Windows
-      may not yet be correct with complex system network configurations, however.
-    </p>
-  </dd>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 269997 -->
-      <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter.WriteHeader</code></a>
-      now supports sending user-defined 1xx informational headers.
-    </p>
-
-    <p><!-- CL 361397 -->
-      The <code>io.ReadCloser</code> returned by
-      <a href="/pkg/net/http/#MaxBytesReader"><code>MaxBytesReader</code></a>
-      will now return the defined error type
-      <a href="/pkg/net/http/#MaxBytesError"><code>MaxBytesError</code></a>
-      when its read limit is exceeded.
-    </p>
-
-    <p><!-- CL 375354 -->
-      The HTTP client will handle a 3xx response without a
-      <code>Location</code> header by returning it to the caller,
-      rather than treating it as an error.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-  <dd>
-    <p><!-- CL 374654 -->
-      The new
-      <a href="/pkg/net/url/#JoinPath"><code>JoinPath</code></a>
-      function and
-      <a href="/pkg/net/url/#URL.JoinPath"><code>URL.JoinPath</code></a>
-      method create a new <code>URL</code> by joining a list of path
-      elements.
-    </p>
-    <p><!-- https://go.dev/issue/46059 -->
-      The <code>URL</code> type now distinguishes between URLs with no
-      authority and URLs with an empty authority. For example,
-      <code>http:///path</code> has an empty authority (host),
-      while <code>http:/path</code> has none.
-    </p>
-    <p>
-      The new <a href="/pkg/net/url/#URL"><code>URL</code></a> field
-      <code>OmitHost</code> is set to <code>true</code> when a
-      <code>URL</code> has an empty authority.
-    </p>
-
-  </dd>
-</dl><!-- net/url -->
-
-<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/50599 --><!-- CL 401340 -->
-      A <a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a> with a non-empty <code>Dir</code> field
-      and nil <code>Env</code> now implicitly sets the <code>PWD</code> environment
-      variable for the subprocess to match <code>Dir</code>.
-    </p>
-    <p>
-      The new method <a href="/pkg/os/exec/#Cmd.Environ"><code>Cmd.Environ</code></a> reports the
-      environment that would be used to run the command, including the
-      implicitly set <code>PWD</code> variable.
-    </p>
-  </dd>
-</dl> <!-- os/exec -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/47066 --><!-- CL 357331 -->
-      The method <a href="/pkg/reflect/#Value.Bytes"><code>Value.Bytes</code></a>
-      now accepts addressable arrays in addition to slices.
-    </p>
-    <p><!-- CL 400954 -->
-      The methods <a href="/pkg/reflect/#Value.Len"><code>Value.Len</code></a>
-      and <a href="/pkg/reflect/#Value.Cap"><code>Value.Cap</code></a>
-      now successfully operate on a pointer to an array and return the length of that array,
-      to match what the <a href="/ref/spec#Length_and_capacity">builtin
-      <code>len</code> and <code>cap</code> functions do</a>.
-    </p>
-  </dd>
-</dl><!-- reflect -->
-
-<dl id="regexp/syntax"><dt><a href="/pkg/regexp/syntax/">regexp/syntax</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51684 --><!-- CL 401076 -->
-      Go 1.18 release candidate 1, Go 1.17.8, and Go 1.16.15 included a security fix
-      to the regular expression parser, making it reject very deeply nested expressions.
-      Because Go patch releases do not introduce new API,
-      the parser returned <a href="/pkg/regexp/syntax/#ErrInternalError"><code>syntax.ErrInternalError</code></a> in this case.
-      Go 1.19 adds a more specific error, <a href="/pkg/regexp/syntax/#ErrNestingDepth"><code>syntax.ErrNestingDepth</code></a>,
-      which the parser now returns instead.
-    </p>
-  </dd>
-</dl><!-- regexp -->
-
-<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51461 -->
-      The <a href="/pkg/runtime/#GOROOT"><code>GOROOT</code></a> function now returns the empty string
-      (instead of <code>"go"</code>) when the binary was built with
-      the <code>-trimpath</code> flag set and the <code>GOROOT</code>
-      variable is not set in the process environment.
-    </p>
-  </dd>
-</dl><!-- runtime -->
-
-<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/47216 --><!-- CL 404305 -->
-    The new <code>/sched/gomaxprocs:threads</code>
-    <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">metric</a> reports
-    the current
-    <a href="/pkg/runtime/#GOMAXPROCS"><code>runtime.GOMAXPROCS</code></a>
-    value.
-    </p>
-
-    <p><!-- https://go.dev/issue/47216 --><!-- CL 404306 -->
-    The new <code>/cgo/go-to-c-calls:calls</code>
-    <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">metric</a>
-    reports the total number of calls made from Go to C. This metric is
-    identical to the
-    <a href="/pkg/runtime/#NumCgoCall"><code>runtime.NumCgoCall</code></a>
-    function.
-    </p>
-
-    <p><!-- https://go.dev/issue/48409 --><!-- CL 403614 -->
-    The new <code>/gc/limiter/last-enabled:gc-cycle</code>
-    <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">metric</a>
-    reports the last GC cycle when the GC CPU limiter was enabled. See the
-    <a href="#runtime">runtime notes</a> for details about the GC CPU limiter.
-    </p>
-  </dd>
-</dl><!-- runtime/metrics -->
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/33250 --><!-- CL 387415 -->
-      Stop-the-world pause times have been significantly reduced when
-      collecting goroutine profiles, reducing the overall latency impact to the
-      application.
-    </p>
-
-    <p><!-- CL 391434 -->
-      <code>MaxRSS</code> is now reported in heap profiles for all Unix
-      operating systems (it was previously only reported for
-      <code>GOOS=android</code>, <code>darwin</code>, <code>ios</code>, and
-      <code>linux</code>).
-    </p>
-  </dd>
-</dl><!-- runtime/pprof -->
-
-<dl id="runtime/race"><dt><a href="/pkg/runtime/race/">runtime/race</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/49761 --><!-- CL 333529 -->
-      The race detector has been upgraded to use thread sanitizer
-      version v3 on all supported platforms
-      except <code>windows/amd64</code>
-      and <code>openbsd/amd64</code>, which remain on v2.
-      Compared to v2, it is now typically 1.5x to 2x faster, uses half
-      as much memory, and it supports an unlimited number of
-      goroutines.
-      On Linux, the race detector now requires at least glibc version
-      2.17 and GNU binutils 2.26.
-    </p>
-
-    <p><!-- CL 336549 -->
-      The race detector is now supported on <code>GOARCH=s390x</code>.
-    </p>
-
-    <p><!-- https://go.dev/issue/52090 -->
-      Race detector support for <code>openbsd/amd64</code> has been
-      removed from thread sanitizer upstream, so it is unlikely to
-      ever be updated from v2.
-    </p>
-  </dd>
-</dl><!-- runtime/race -->
-
-<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
-  <dd>
-    <p><!-- CL 400795 -->
-      When tracing and the
-      <a href="/pkg/runtime/pprof/#StartCPUProfile">CPU profiler</a> are
-      enabled simultaneously, the execution trace includes CPU profile
-      samples as instantaneous events.
-    </p>
-  </dd>
-</dl><!-- runtime/trace -->
-
-<dl id="sort"><dt><a href="/pkg/sort/">sort</a></dt>
-  <dd>
-    <p><!-- CL 371574 -->
-      The sorting algorithm has been rewritten to use
-      <a href="https://arxiv.org/pdf/2106.05123.pdf">pattern-defeating quicksort</a>, which
-      is faster for several common scenarios.
-    </p>
-    <p><!-- https://go.dev/issue/50340 --><!-- CL 396514 -->
-      The new function
-      <a href="/pkg/sort/#Find"><code>Find</code></a>
-      is like
-      <a href="/pkg/sort/#Search"><code>Search</code></a>
-      but often easier to use: it returns an additional boolean reporting whether an equal value was found.
-    </p>
-  </dd>
-</dl><!-- sort -->
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p><!-- CL 397255 -->
-      <a href="/pkg/strconv/#Quote"><code>Quote</code></a>
-      and related functions now quote the rune U+007F as <code>\x7f</code>,
-      not <code>\u007f</code>,
-      for consistency with other ASCII values.
-    </p>
-  </dd>
-</dl><!-- strconv -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51192 --><!-- CL 385796 -->
-      On PowerPC (<code>GOARCH=ppc64</code>, <code>ppc64le</code>),
-      <a href="/pkg/syscall/#Syscall"><code>Syscall</code></a>,
-      <a href="/pkg/syscall/#Syscall6"><code>Syscall6</code></a>,
-      <a href="/pkg/syscall/#RawSyscall"><code>RawSyscall</code></a>, and
-      <a href="/pkg/syscall/#RawSyscall6"><code>RawSyscall6</code></a>
-      now always return 0 for return value <code>r2</code> instead of an
-      undefined value.
-    </p>
-
-    <p><!-- CL 391434 -->
-      On AIX and Solaris, <a href="/pkg/syscall/#Getrusage"><code>Getrusage</code></a> is now defined.
-    </p>
-  </dd>
-</dl><!-- syscall -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51414 --><!-- CL 393515 -->
-      The new method
-      <a href="/pkg/time/#Duration.Abs"><code>Duration.Abs</code></a>
-      provides a convenient and safe way to take the absolute value of a duration,
-      converting −2⁶³ to 2⁶³−1.
-      (This boundary case can happen as the result of subtracting a recent time from the zero time.)
-    </p>
-    <p><!-- https://go.dev/issue/50062 --><!-- CL 405374 -->
-      The new method
-      <a href="/pkg/time/#Time.ZoneBounds"><code>Time.ZoneBounds</code></a>
-      returns the start and end times of the time zone in effect at a given time.
-      It can be used in a loop to enumerate all the known time zone transitions at a given location.
-    </p>
-  </dd>
-</dl><!-- time -->
-
-<!-- Silence these false positives from x/build/cmd/relnote: -->
-<!-- CL 382460 -->
-<!-- CL 384154 -->
-<!-- CL 384554 -->
-<!-- CL 392134 -->
-<!-- CL 392414 -->
-<!-- CL 396215 -->
-<!-- CL 403058 -->
-<!-- CL 410133 -->
-<!-- https://go.dev/issue/27837 -->
-<!-- https://go.dev/issue/38340 -->
-<!-- https://go.dev/issue/42516 -->
-<!-- https://go.dev/issue/45713 -->
-<!-- https://go.dev/issue/46654 -->
-<!-- https://go.dev/issue/48257 -->
-<!-- https://go.dev/issue/50447 -->
-<!-- https://go.dev/issue/50720 -->
-<!-- https://go.dev/issue/50792 -->
-<!-- https://go.dev/issue/51115 -->
-<!-- https://go.dev/issue/51447 -->
diff --git a/_content/doc/go1.2.html b/_content/doc/go1.2.html
deleted file mode 100644
index 2a544b8..0000000
--- a/_content/doc/go1.2.html
+++ /dev/null
@@ -1,977 +0,0 @@
-<!--{
-	"Title": "Go 1.2 Release Notes"
-}-->
-
-<h2 id="introduction">Introduction to Go 1.2</h2>
-
-<p>
-Since the release of <a href="/doc/go1.1.html">Go version 1.1</a> in April, 2013,
-the release schedule has been shortened to make the release process more efficient.
-This release, Go version 1.2 or Go 1.2 for short, arrives roughly six months after 1.1,
-while 1.1 took over a year to appear after 1.0.
-Because of the shorter time scale, 1.2 is a smaller delta than the step from 1.0 to 1.1,
-but it still has some significant developments, including
-a better scheduler and one new language feature.
-Of course, Go 1.2 keeps the <a href="/doc/go1compat.html">promise
-of compatibility</a>.
-The overwhelming majority of programs built with Go 1.1 (or 1.0 for that matter)
-will run without any changes whatsoever when moved to 1.2,
-although the introduction of one restriction
-to a corner of the language may expose already-incorrect code
-(see the discussion of the <a href="#use_of_nil">use of nil</a>).
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-In the interest of firming up the specification, one corner case has been clarified,
-with consequences for programs.
-There is also one new language feature.
-</p>
-
-<h3 id="use_of_nil">Use of nil</h3>
-
-<p>
-The language now specifies that, for safety reasons,
-certain uses of nil pointers are guaranteed to trigger a run-time panic.
-For instance, in Go 1.0, given code like
-</p>
-
-<pre>
-type T struct {
-    X [1<<24]byte
-    Field int32
-}
-
-func main() {
-    var x *T
-    ...
-}
-</pre>
-
-<p>
-the <code>nil</code> pointer <code>x</code> could be used to access memory incorrectly:
-the expression <code>x.Field</code> could access memory at address <code>1<<24</code>.
-To prevent such unsafe behavior, in Go 1.2 the compilers now guarantee that any indirection through
-a nil pointer, such as illustrated here but also in nil pointers to arrays, nil interface values,
-nil slices, and so on, will either panic or return a correct, safe non-nil value.
-In short, any expression that explicitly or implicitly requires evaluation of a nil address is an error.
-The implementation may inject extra tests into the compiled program to enforce this behavior.
-</p>
-
-<p>
-Further details are in the
-<a href="/s/go12nil">design document</a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Most code that depended on the old behavior is erroneous and will fail when run.
-Such programs will need to be updated by hand.
-</p>
-
-<h3 id="three_index">Three-index slices</h3>
-
-<p>
-Go 1.2 adds the ability to specify the capacity as well as the length when using a slicing operation
-on an existing array or slice.
-A slicing operation creates a new slice by describing a contiguous section of an already-created array or slice:
-</p>
-
-<pre>
-var array [10]int
-slice := array[2:4]
-</pre>
-
-<p>
-The capacity of the slice is the maximum number of elements that the slice may hold, even after reslicing;
-it reflects the size of the underlying array.
-In this example, the capacity of the <code>slice</code> variable is 8.
-</p>
-
-<p>
-Go 1.2 adds new syntax to allow a slicing operation to specify the capacity as well as the length.
-A second
-colon introduces the capacity value, which must be less than or equal to the capacity of the
-source slice or array, adjusted for the origin. For instance,
-</p>
-
-<pre>
-slice = array[2:4:7]
-</pre>
-
-<p>
-sets the slice to have the same length as in the earlier example but its capacity is now only 5 elements (7-2).
-It is impossible to use this new slice value to access the last three elements of the original array.
-</p>
-
-<p>
-In this three-index notation, a missing first index (<code>[:i:j]</code>) defaults to zero but the other
-two indices must always be specified explicitly.
-It is possible that future releases of Go may introduce default values for these indices.
-</p>
-
-<p>
-Further details are in the
-<a href="/s/go12slice">design document</a>.
-</p>
-
-<p>
-<em>Updating</em>:
-This is a backwards-compatible change that affects no existing programs.
-</p>
-
-<h2 id="impl">Changes to the implementations and tools</h2>
-
-<h3 id="preemption">Pre-emption in the scheduler</h3>
-
-<p>
-In prior releases, a goroutine that was looping forever could starve out other
-goroutines on the same thread, a serious problem when GOMAXPROCS
-provided only one user thread.
-In Go 1.2, this is partially addressed: The scheduler is invoked occasionally
-upon entry to a function.
-This means that any loop that includes a (non-inlined) function call can
-be pre-empted, allowing other goroutines to run on the same thread.
-</p>
-
-<h3 id="thread_limit">Limit on the number of threads</h3>
-
-<p>
-Go 1.2 introduces a configurable limit (default 10,000) to the total number of threads
-a single program may have in its address space, to avoid resource starvation
-issues in some environments.
-Note that goroutines are multiplexed onto threads so this limit does not directly
-limit the number of goroutines, only the number that may be simultaneously blocked
-in a system call.
-In practice, the limit is hard to reach.
-</p>
-
-<p>
-The new <a href="/pkg/runtime/debug/#SetMaxThreads"><code>SetMaxThreads</code></a> function in the
-<a href="/pkg/runtime/debug/"><code>runtime/debug</code></a> package controls the thread count limit.
-</p>
-
-<p>
-<em>Updating</em>:
-Few functions will be affected by the limit, but if a program dies because it hits the
-limit, it could be modified to call <code>SetMaxThreads</code> to set a higher count.
-Even better would be to refactor the program to need fewer threads, reducing consumption
-of kernel resources.
-</p>
-
-<h3 id="stack_size">Stack size</h3>
-
-<p>
-In Go 1.2, the minimum size of the stack when a goroutine is created has been lifted from 4KB to 8KB.
-Many programs were suffering performance problems with the old size, which had a tendency
-to introduce expensive stack-segment switching in performance-critical sections.
-The new number was determined by empirical testing.
-</p>
-
-<p>
-At the other end, the new function <a href="/pkg/runtime/debug/#SetMaxStack"><code>SetMaxStack</code></a>
-in the <a href="/pkg/runtime/debug"><code>runtime/debug</code></a> package controls
-the <em>maximum</em> size of a single goroutine's stack.
-The default is 1GB on 64-bit systems and 250MB on 32-bit systems.
-Before Go 1.2, it was too easy for a runaway recursion to consume all the memory on a machine.
-</p>
-
-<p>
-<em>Updating</em>:
-The increased minimum stack size may cause programs with many goroutines to use
-more memory. There is no workaround, but plans for future releases
-include new stack management technology that should address the problem better.
-</p>
-
-<h3 id="cgo_and_cpp">Cgo and C++</h3>
-
-<p>
-The <a href="/cmd/cgo/"><code>cgo</code></a> command will now invoke the C++
-compiler to build any pieces of the linked-to library that are written in C++;
-<a href="/cmd/cgo/">the documentation</a> has more detail.
-</p>
-
-<h3 id="go_tools_godoc">Godoc and vet moved to the go.tools subrepository</h3>
-
-<p>
-Both binaries are still included with the distribution, but the source code for the
-godoc and vet commands has moved to the
-<a href="https://code.google.com/p/go.tools">go.tools</a> subrepository.
-</p>
-
-<p>
-Also, the core of the godoc program has been split into a
-<a href="https://code.google.com/p/go/source/browse/?repo=tools#hg%2Fgodoc">library</a>,
-while the command itself is in a separate
-<a href="https://code.google.com/p/go/source/browse/?repo=tools#hg%2Fcmd%2Fgodoc">directory</a>.
-The move allows the code to be updated easily and the separation into a library and command
-makes it easier to construct custom binaries for local sites and different deployment methods.
-</p>
-
-<p>
-<em>Updating</em>:
-Since godoc and vet are not part of the library,
-no client Go code depends on their source and no updating is required.
-</p>
-
-<p>
-The binary distributions available from <a href="https://golang.org">golang.org</a>
-include these binaries, so users of these distributions are unaffected.
-</p>
-
-<p>
-When building from source, users must use "go get" to install godoc and vet.
-(The binaries will continue to be installed in their usual locations, not
-<code>$GOPATH/bin</code>.)
-</p>
-
-<pre>
-$ go get code.google.com/p/go.tools/cmd/godoc
-$ go get code.google.com/p/go.tools/cmd/vet
-</pre>
-
-<h3 id="gccgo">Status of gccgo</h3>
-
-<p>
-We expect the future GCC 4.9 release to include gccgo with full
-support for Go 1.2.
-In the current (4.8.2) release of GCC, gccgo implements Go 1.1.2.
-</p>
-
-<h3 id="gc_changes">Changes to the gc compiler and linker</h3>
-
-<p>
-Go 1.2 has several semantic changes to the workings of the gc compiler suite.
-Most users will be unaffected by them.
-</p>
-
-<p>
-The <a href="/cmd/cgo/"><code>cgo</code></a> command now
-works when C++ is included in the library being linked against.
-See the <a href="/cmd/cgo/"><code>cgo</code></a> documentation
-for details.
-</p>
-
-<p>
-The gc compiler displayed a vestigial detail of its origins when
-a program had no <code>package</code> clause: it assumed
-the file was in package <code>main</code>.
-The past has been erased, and a missing <code>package</code> clause
-is now an error.
-</p>
-
-<p>
-On the ARM, the toolchain supports "external linking", which
-is a step towards being able to build shared libraries with the gc
-toolchain and to provide dynamic linking support for environments
-in which that is necessary.
-</p>
-
-<p>
-In the runtime for the ARM, with <code>5a</code>, it used to be possible to refer
-to the runtime-internal <code>m</code> (machine) and <code>g</code>
-(goroutine) variables using <code>R9</code> and <code>R10</code> directly.
-It is now necessary to refer to them by their proper names.
-</p>
-
-<p>
-Also on the ARM, the <code>5l</code> linker (sic) now defines the
-<code>MOVBS</code> and <code>MOVHS</code> instructions
-as synonyms of <code>MOVB</code> and <code>MOVH</code>,
-to make clearer the separation between signed and unsigned
-sub-word moves; the unsigned versions already existed with a
-<code>U</code> suffix.
-</p>
-
-<h3 id="cover">Test coverage</h3>
-
-<p>
-One major new feature of <a href="/pkg/go/"><code>go test</code></a> is
-that it can now compute and, with help from a new, separately installed
-"go tool cover" program, display test coverage results.
-</p>
-
-<p>
-The cover tool is part of the
-<a href="https://code.google.com/p/go/source/checkout?repo=tools"><code>go.tools</code></a>
-subrepository.
-It can be installed by running
-</p>
-
-<pre>
-$ go get code.google.com/p/go.tools/cmd/cover
-</pre>
-
-<p>
-The cover tool does two things.
-First, when "go test" is given the <code>-cover</code> flag, it is run automatically
-to rewrite the source for the package and insert instrumentation statements.
-The test is then compiled and run as usual, and basic coverage statistics are reported:
-</p>
-
-<pre>
-$ go test -cover fmt
-ok  	fmt	0.060s	coverage: 91.4% of statements
-$
-</pre>
-
-<p>
-Second, for more detailed reports, different flags to "go test" can create a coverage profile file,
-which the cover program, invoked with "go tool cover", can then analyze.
-</p>
-
-<p>
-Details on how to generate and analyze coverage statistics can be found by running the commands
-</p>
-
-<pre>
-$ go help testflag
-$ go tool cover -help
-</pre>
-
-<h3 id="go_doc">The go doc command is deleted</h3>
-
-<p>
-The "go doc" command is deleted.
-Note that the <a href="/cmd/godoc/"><code>godoc</code></a> tool itself is not deleted,
-just the wrapping of it by the <a href="/cmd/go/"><code>go</code></a> command.
-All it did was show the documents for a package by package path,
-which godoc itself already does with more flexibility.
-It has therefore been deleted to reduce the number of documentation tools and,
-as part of the restructuring of godoc, encourage better options in future.
-</p>
-
-<p>
-<em>Updating</em>: For those who still need the precise functionality of running
-</p>
-
-<pre>
-$ go doc
-</pre>
-
-<p>
-in a directory, the behavior is identical to running
-</p>
-
-<pre>
-$ godoc .
-</pre>
-
-<h3 id="gocmd">Changes to the go command</h3>
-
-<p>
-The <a href="/cmd/go/"><code>go get</code></a> command
-now has a <code>-t</code> flag that causes it to download the dependencies
-of the tests run by the package, not just those of the package itself.
-By default, as before, dependencies of the tests are not downloaded.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-There are a number of significant performance improvements in the standard library; here are a few of them.
-</p>
-
-<ul>
-
-<li>
-The <a href="/pkg/compress/bzip2/"><code>compress/bzip2</code></a>
-decompresses about 30% faster.
-</li>
-
-<li>
-The <a href="/pkg/crypto/des/"><code>crypto/des</code></a> package
-is about five times faster.
-</li>
-
-<li>
-The <a href="/pkg/encoding/json/"><code>encoding/json</code></a> package
-encodes about 30% faster.
-</li>
-
-<li>
-Networking performance on Windows and BSD systems is about 30% faster through the use
-of an integrated network poller in the runtime, similar to what was done for Linux and OS X
-in Go 1.1.
-</li>
-
-</ul>
-
-<h2 id="library">Changes to the standard library</h2>
-
-
-<h3 id="archive_tar_zip">The archive/tar and archive/zip packages</h3>
-
-<p>
-The
-<a href="/pkg/archive/tar/"><code>archive/tar</code></a>
-and
-<a href="/pkg/archive/zip/"><code>archive/zip</code></a>
-packages have had a change to their semantics that may break existing programs.
-The issue is that they both provided an implementation of the
-<a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a>
-interface that was not compliant with the specification for that interface.
-In particular, their <code>Name</code> method returned the full
-path name of the entry, but the interface specification requires that
-the method return only the base name (final path element).
-</p>
-
-<p>
-<em>Updating</em>: Since this behavior was newly implemented and
-a bit obscure, it is possible that no code depends on the broken behavior.
-If there are programs that do depend on it, they will need to be identified
-and fixed manually.
-</p>
-
-<h3 id="encoding">The new encoding package</h3>
-
-<p>
-There is a new package, <a href="/pkg/encoding/"><code>encoding</code></a>,
-that defines a set of standard encoding interfaces that may be used to
-build custom marshalers and unmarshalers for packages such as
-<a href="/pkg/encoding/xml/"><code>encoding/xml</code></a>,
-<a href="/pkg/encoding/json/"><code>encoding/json</code></a>,
-and
-<a href="/pkg/encoding/binary/"><code>encoding/binary</code></a>.
-These new interfaces have been used to tidy up some implementations in
-the standard library.
-</p>
-
-<p>
-The new interfaces are called
-<a href="/pkg/encoding/#BinaryMarshaler"><code>BinaryMarshaler</code></a>,
-<a href="/pkg/encoding/#BinaryUnmarshaler"><code>BinaryUnmarshaler</code></a>,
-<a href="/pkg/encoding/#TextMarshaler"><code>TextMarshaler</code></a>,
-and
-<a href="/pkg/encoding/#TextUnmarshaler"><code>TextUnmarshaler</code></a>.
-Full details are in the <a href="/pkg/encoding/">documentation</a> for the package
-and a separate <a href="/s/go12encoding">design document</a>.
-</p>
-
-<h3 id="fmt_indexed_arguments">The fmt package</h3>
-
-<p>
-The <a href="/pkg/fmt/"><code>fmt</code></a> package's formatted print
-routines such as <a href="/pkg/fmt/#Printf"><code>Printf</code></a>
-now allow the data items to be printed to be accessed in arbitrary order
-by using an indexing operation in the formatting specifications.
-Wherever an argument is to be fetched from the argument list for formatting,
-either as the value to be formatted or as a width or specification integer,
-a new optional indexing notation <code>[</code><em>n</em><code>]</code>
-fetches argument <em>n</em> instead.
-The value of <em>n</em> is 1-indexed.
-After such an indexing operating, the next argument to be fetched by normal
-processing will be <em>n</em>+1.
-</p>
-
-<p>
-For example, the normal <code>Printf</code> call
-</p>
-
-<pre>
-fmt.Sprintf("%c %c %c\n", 'a', 'b', 'c')
-</pre>
-
-<p>
-would create the string <code>"a b c"</code>, but with indexing operations like this,
-</p>
-
-<pre>
-fmt.Sprintf("%[3]c %[1]c %c\n", 'a', 'b', 'c')
-</pre>
-
-<p>
-the result is "<code>"c a b"</code>. The <code>[3]</code> index accesses the third formatting
-argument, which is <code>'c'</code>, <code>[1]</code> accesses the first, <code>'a'</code>,
-and then the next fetch accesses the argument following that one, <code>'b'</code>.
-</p>
-
-<p>
-The motivation for this feature is programmable format statements to access
-the arguments in different order for localization, but it has other uses:
-</p>
-
-<pre>
-log.Printf("trace: value %v of type %[1]T\n", expensiveFunction(a.b[c]))
-</pre>
-
-<p>
-<em>Updating</em>: The change to the syntax of format specifications
-is strictly backwards compatible, so it affects no working programs.
-</p>
-
-<h3 id="text_template">The text/template and html/template packages</h3>
-
-<p>
-The
-<a href="/pkg/text/template/"><code>text/template</code></a> package
-has a couple of changes in Go 1.2, both of which are also mirrored in the
-<a href="/pkg/html/template/"><code>html/template</code></a> package.
-</p>
-
-<p>
-First, there are new default functions for comparing basic types.
-The functions are listed in this table, which shows their names and
-the associated familiar comparison operator.
-</p>
-
-<table cellpadding="0" summary="Template comparison functions">
-<tr>
-<th width="50"></th><th width="100">Name</th> <th width="50">Operator</th>
-</tr>
-<tr>
-<td></td><td><code>eq</code></td> <td><code>==</code></td>
-</tr>
-<tr>
-<td></td><td><code>ne</code></td> <td><code>!=</code></td>
-</tr>
-<tr>
-<td></td><td><code>lt</code></td> <td><code>&lt;</code></td>
-</tr>
-<tr>
-<td></td><td><code>le</code></td> <td><code>&lt;=</code></td>
-</tr>
-<tr>
-<td></td><td><code>gt</code></td> <td><code>&gt;</code></td>
-</tr>
-<tr>
-<td></td><td><code>ge</code></td> <td><code>&gt;=</code></td>
-</tr>
-</table>
-
-<p>
-These functions behave slightly differently from the corresponding Go operators.
-First, they operate only on basic types (<code>bool</code>, <code>int</code>,
-<code>float64</code>, <code>string</code>, etc.).
-(Go allows comparison of arrays and structs as well, under some circumstances.)
-Second, values can be compared as long as they are the same sort of value:
-any signed integer value can be compared to any other signed integer value for example. (Go
-does not permit comparing an <code>int8</code> and an <code>int16</code>).
-Finally, the <code>eq</code> function (only) allows comparison of the first
-argument with one or more following arguments. The template in this example,
-</p>
-
-<pre>
-{{if eq .A 1 2 3}} equal {{else}} not equal {{end}}
-</pre>
-
-<p>
-reports "equal" if <code>.A</code> is equal to <em>any</em> of 1, 2, or 3.
-</p>
-
-<p>
-The second change is that a small addition to the grammar makes "if else if" chains easier to write.
-Instead of writing,
-</p>
-
-<pre>
-{{if eq .A 1}} X {{else}} {{if eq .A 2}} Y {{end}} {{end}}
-</pre>
-
-<p>
-one can fold the second "if" into the "else" and have only one "end", like this:
-</p>
-
-<pre>
-{{if eq .A 1}} X {{else if eq .A 2}} Y {{end}}
-</pre>
-
-<p>
-The two forms are identical in effect; the difference is just in the syntax.
-</p>
-
-<p>
-<em>Updating</em>: Neither the "else if" change nor the comparison functions
-affect existing programs. Those that
-already define functions called <code>eq</code> and so on through a function
-map are unaffected because the associated function map will override the new
-default function definitions.
-</p>
-
-<h3 id="new_packages">New packages</h3>
-
-<p>
-There are two new packages.
-</p>
-
-<ul>
-<li>
-The <a href="/pkg/encoding/"><code>encoding</code></a> package is
-<a href="#encoding">described above</a>.
-</li>
-<li>
-The <a href="/pkg/image/color/palette/"><code>image/color/palette</code></a> package
-provides standard color palettes.
-</li>
-</ul>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-The following list summarizes a number of minor changes to the library, mostly additions.
-See the relevant package documentation for more information about each change.
-</p>
-
-<ul>
-
-<li>
-The <a href="/pkg/archive/zip/"><code>archive/zip</code></a> package
-adds the
-<a href="/pkg/archive/zip/#File.DataOffset"><code>DataOffset</code></a> accessor
-to return the offset of a file's (possibly compressed) data within the archive.
-</li>
-
-<li>
-The <a href="/pkg/bufio/"><code>bufio</code></a> package
-adds <a href="/pkg/bufio/#Reader.Reset"><code>Reset</code></a>
-methods to <a href="/pkg/bufio/#Reader"><code>Reader</code></a> and
-<a href="/pkg/bufio/#Writer"><code>Writer</code></a>.
-These methods allow the <a href="/pkg/io/#Reader"><code>Readers</code></a>
-and <a href="/pkg/io/#Writer"><code>Writers</code></a>
-to be re-used on new input and output readers and writers, saving
-allocation overhead.
-</li>
-
-<li>
-The <a href="/pkg/compress/bzip2/"><code>compress/bzip2</code></a>
-can now decompress concatenated archives.
-</li>
-
-<li>
-The <a href="/pkg/compress/flate/"><code>compress/flate</code></a>
-package adds a <a href="/pkg/compress/flate/#Writer.Reset"><code>Reset</code></a>
-method on the <a href="/pkg/compress/flate/#Writer"><code>Writer</code></a>,
-to make it possible to reduce allocation when, for instance, constructing an
-archive to hold multiple compressed files.
-</li>
-
-<li>
-The <a href="/pkg/compress/gzip/"><code>compress/gzip</code></a> package's
-<a href="/pkg/compress/gzip/#Writer"><code>Writer</code></a> type adds a
-<a href="/pkg/compress/gzip/#Writer.Reset"><code>Reset</code></a>
-so it may be reused.
-</li>
-
-<li>
-The <a href="/pkg/compress/zlib/"><code>compress/zlib</code></a> package's
-<a href="/pkg/compress/zlib/#Writer"><code>Writer</code></a> type adds a
-<a href="/pkg/compress/zlib/#Writer.Reset"><code>Reset</code></a>
-so it may be reused.
-</li>
-
-<li>
-The <a href="/pkg/container/heap/"><code>container/heap</code></a> package
-adds a <a href="/pkg/container/heap/#Fix"><code>Fix</code></a>
-method to provide a more efficient way to update an item's position in the heap.
-</li>
-
-<li>
-The <a href="/pkg/container/list/"><code>container/list</code></a> package
-adds the <a href="/pkg/container/list/#List.MoveBefore"><code>MoveBefore</code></a>
-and
-<a href="/pkg/container/list/#List.MoveAfter"><code>MoveAfter</code></a>
-methods, which implement the obvious rearrangement.
-</li>
-
-<li>
-The <a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a> package
-adds the new GCM mode (Galois Counter Mode), which is almost always
-used with AES encryption.
-</li>
-
-<li>
-The
-<a href="/pkg/crypto/md5/"><code>crypto/md5</code></a> package
-adds a new <a href="/pkg/crypto/md5/#Sum"><code>Sum</code></a> function
-to simplify hashing without sacrificing performance.
-</li>
-
-<li>
-Similarly, the
-<a href="/pkg/crypto/md5/"><code>crypto/sha1</code></a> package
-adds a new <a href="/pkg/crypto/sha1/#Sum"><code>Sum</code></a> function.
-</li>
-
-<li>
-Also, the
-<a href="/pkg/crypto/sha256/"><code>crypto/sha256</code></a> package
-adds <a href="/pkg/crypto/sha256/#Sum256"><code>Sum256</code></a>
-and <a href="/pkg/crypto/sha256/#Sum224"><code>Sum224</code></a> functions.
-</li>
-
-<li>
-Finally, the <a href="/pkg/crypto/sha512/"><code>crypto/sha512</code></a> package
-adds <a href="/pkg/crypto/sha512/#Sum512"><code>Sum512</code></a> and
-<a href="/pkg/crypto/sha512/#Sum384"><code>Sum384</code></a> functions.
-</li>
-
-<li>
-The <a href="/pkg/crypto/x509/"><code>crypto/x509</code></a> package
-adds support for reading and writing arbitrary extensions.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package adds
-support for TLS 1.1, 1.2 and AES-GCM.
-</li>
-
-<li>
-The <a href="/pkg/database/sql/"><code>database/sql</code></a> package adds a
-<a href="/pkg/database/sql/#DB.SetMaxOpenConns"><code>SetMaxOpenConns</code></a>
-method on <a href="/pkg/database/sql/#DB"><code>DB</code></a> to limit the
-number of open connections to the database.
-</li>
-
-<li>
-The <a href="/pkg/encoding/csv/"><code>encoding/csv</code></a> package
-now always allows trailing commas on fields.
-</li>
-
-<li>
-The <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a> package
-now treats channel and function fields of structures as if they were unexported,
-even if they are not. That is, it ignores them completely. Previously they would
-trigger an error, which could cause unexpected compatibility problems if an
-embedded structure added such a field.
-The package also now supports the generic <code>BinaryMarshaler</code> and
-<code>BinaryUnmarshaler</code> interfaces of the
-<a href="/pkg/encoding/"><code>encoding</code></a> package
-described above.
-</li>
-
-<li>
-The <a href="/pkg/encoding/json/"><code>encoding/json</code></a> package
-now will always escape ampersands as "\u0026" when printing strings.
-It will now accept but correct invalid UTF-8 in
-<a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>
-(such input was previously rejected).
-Finally, it now supports the generic encoding interfaces of the
-<a href="/pkg/encoding/"><code>encoding</code></a> package
-described above.
-</li>
-
-<li>
-The <a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> package
-now allows attributes stored in pointers to be marshaled.
-It also supports the generic encoding interfaces of the
-<a href="/pkg/encoding/"><code>encoding</code></a> package
-described above through the new
-<a href="/pkg/encoding/xml/#Marshaler"><code>Marshaler</code></a>,
-<a href="/pkg/encoding/xml/#Unmarshaler"><code>Unmarshaler</code></a>,
-and related
-<a href="/pkg/encoding/xml/#MarshalerAttr"><code>MarshalerAttr</code></a> and
-<a href="/pkg/encoding/xml/#UnmarshalerAttr"><code>UnmarshalerAttr</code></a>
-interfaces.
-The package also adds a
-<a href="/pkg/encoding/xml/#Encoder.Flush"><code>Flush</code></a> method
-to the
-<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a>
-type for use by custom encoders. See the documentation for
-<a href="/pkg/encoding/xml/#Encoder.EncodeToken"><code>EncodeToken</code></a>
-to see how to use it.
-</li>
-
-<li>
-The <a href="/pkg/flag/"><code>flag</code></a> package now
-has a <a href="/pkg/flag/#Getter"><code>Getter</code></a> interface
-to allow the value of a flag to be retrieved. Due to the
-Go 1 compatibility guidelines, this method cannot be added to the existing
-<a href="/pkg/flag/#Value"><code>Value</code></a>
-interface, but all the existing standard flag types implement it.
-The package also now exports the <a href="/pkg/flag/#CommandLine"><code>CommandLine</code></a>
-flag set, which holds the flags from the command line.
-</li>
-
-<li>
-The <a href="/pkg/go/ast/"><code>go/ast</code></a> package's
-<a href="/pkg/go/ast/#SliceExpr"><code>SliceExpr</code></a> struct
-has a new boolean field, <code>Slice3</code>, which is set to true
-when representing a slice expression with three indices (two colons).
-The default is false, representing the usual two-index form.
-</li>
-
-<li>
-The <a href="/pkg/go/build/"><code>go/build</code></a> package adds
-the <code>AllTags</code> field
-to the <a href="/pkg/go/build/#Package"><code>Package</code></a> type,
-to make it easier to process build tags.
-</li>
-
-<li>
-The <a href="/pkg/image/draw/"><code>image/draw</code></a> package now
-exports an interface, <a href="/pkg/image/draw/#Drawer"><code>Drawer</code></a>,
-that wraps the standard <a href="/pkg/image/draw/#Draw"><code>Draw</code></a> method.
-The Porter-Duff operators now implement this interface, in effect binding an operation to
-the draw operator rather than providing it explicitly.
-Given a paletted image as its destination, the new
-<a href="/pkg/image/draw/#FloydSteinberg"><code>FloydSteinberg</code></a>
-implementation of the
-<a href="/pkg/image/draw/#Drawer"><code>Drawer</code></a>
-interface will use the Floyd-Steinberg error diffusion algorithm to draw the image.
-To create palettes suitable for such processing, the new
-<a href="/pkg/image/draw/#Quantizer"><code>Quantizer</code></a> interface
-represents implementations of quantization algorithms that choose a palette
-given a full-color image.
-There are no implementations of this interface in the library.
-</li>
-
-<li>
-The <a href="/pkg/image/gif/"><code>image/gif</code></a> package
-can now create GIF files using the new
-<a href="/pkg/image/gif/#Encode"><code>Encode</code></a>
-and <a href="/pkg/image/gif/#EncodeAll"><code>EncodeAll</code></a>
-functions.
-Their options argument allows specification of an image
-<a href="/pkg/image/draw/#Quantizer"><code>Quantizer</code></a> to use;
-if it is <code>nil</code>, the generated GIF will use the
-<a href="/pkg/image/color/palette/#Plan9"><code>Plan9</code></a>
-color map (palette) defined in the new
-<a href="/pkg/image/color/palette/"><code>image/color/palette</code></a> package.
-The options also specify a
-<a href="/pkg/image/draw/#Drawer"><code>Drawer</code></a>
-to use to create the output image;
-if it is <code>nil</code>, Floyd-Steinberg error diffusion is used.
-</li>
-
-<li>
-The <a href="/pkg/io/#Copy"><code>Copy</code></a> method of the
-<a href="/pkg/io/"><code>io</code></a> package now prioritizes its
-arguments differently.
-If one argument implements <a href="/pkg/io/#WriterTo"><code>WriterTo</code></a>
-and the other implements <a href="/pkg/io/#ReaderFrom"><code>ReaderFrom</code></a>,
-<a href="/pkg/io/#Copy"><code>Copy</code></a> will now invoke
-<a href="/pkg/io/#WriterTo"><code>WriterTo</code></a> to do the work,
-so that less intermediate buffering is required in general.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package requires cgo by default
-because the host operating system must in general mediate network call setup.
-On some systems, though, it is possible to use the network without cgo, and useful
-to do so, for instance to avoid dynamic linking.
-The new build tag <code>netgo</code> (off by default) allows the construction of a
-<code>net</code> package in pure Go on those systems where it is possible.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package adds a new field
-<code>DualStack</code> to the <a href="/pkg/net/#Dialer"><code>Dialer</code></a>
-struct for TCP connection setup using a dual IP stack as described in
-<a href="https://tools.ietf.org/html/rfc6555">RFC 6555</a>.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package will no longer
-transmit cookies that are incorrect according to
-<a href="https://tools.ietf.org/html/rfc6265">RFC 6265</a>.
-It just logs an error and sends nothing.
-Also,
-the <a href="/pkg/net/http/"><code>net/http</code></a> package's
-<a href="/pkg/net/http/#ReadResponse"><code>ReadResponse</code></a>
-function now permits the <code>*Request</code> parameter to be <code>nil</code>,
-whereupon it assumes a GET request.
-Finally, an HTTP server will now serve HEAD
-requests transparently, without the need for special casing in handler code.
-While serving a HEAD request, writes to a
-<a href="/pkg/net/http/#Handler"><code>Handler</code></a>'s
-<a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>
-are absorbed by the
-<a href="/pkg/net/http/#Server"><code>Server</code></a>
-and the client receives an empty body as required by the HTTP specification.
-</li>
-
-<li>
-The <a href="/pkg/os/exec/"><code>os/exec</code></a> package's
-<a href="/pkg/os/exec/#Cmd.StdinPipe"><code>Cmd.StdinPipe</code></a> method
-returns an <code>io.WriteCloser</code>, but has changed its concrete
-implementation from <code>*os.File</code> to an unexported type that embeds
-<code>*os.File</code>, and it is now safe to close the returned value.
-Before Go 1.2, there was an unavoidable race that this change fixes.
-Code that needs access to the methods of <code>*os.File</code> can use an
-interface type assertion, such as <code>wc.(interface{ Sync() error })</code>.
-</li>
-
-<li>
-The <a href="/pkg/runtime/"><code>runtime</code></a> package relaxes
-the constraints on finalizer functions in
-<a href="/pkg/runtime/#SetFinalizer"><code>SetFinalizer</code></a>: the
-actual argument can now be any type that is assignable to the formal type of
-the function, as is the case for any normal function call in Go.
-</li>
-
-<li>
-The <a href="/pkg/sort/"><code>sort</code></a> package has a new
-<a href="/pkg/sort/#Stable"><code>Stable</code></a> function that implements
-stable sorting. It is less efficient than the normal sort algorithm, however.
-</li>
-
-<li>
-The <a href="/pkg/strings/"><code>strings</code></a> package adds
-an <a href="/pkg/strings/#IndexByte"><code>IndexByte</code></a>
-function for consistency with the <a href="/pkg/bytes/"><code>bytes</code></a> package.
-</li>
-
-<li>
-The <a href="/pkg/sync/atomic/"><code>sync/atomic</code></a> package
-adds a new set of swap functions that atomically exchange the argument with the
-value stored in the pointer, returning the old value.
-The functions are
-<a href="/pkg/sync/atomic/#SwapInt32"><code>SwapInt32</code></a>,
-<a href="/pkg/sync/atomic/#SwapInt64"><code>SwapInt64</code></a>,
-<a href="/pkg/sync/atomic/#SwapUint32"><code>SwapUint32</code></a>,
-<a href="/pkg/sync/atomic/#SwapUint64"><code>SwapUint64</code></a>,
-<a href="/pkg/sync/atomic/#SwapUintptr"><code>SwapUintptr</code></a>,
-and
-<a href="/pkg/sync/atomic/#SwapPointer"><code>SwapPointer</code></a>,
-which swaps an <code>unsafe.Pointer</code>.
-</li>
-
-<li>
-The <a href="/pkg/syscall/"><code>syscall</code></a> package now implements
-<a href="/pkg/syscall/#Sendfile"><code>Sendfile</code></a> for Darwin.
-</li>
-
-<li>
-The <a href="/pkg/testing/"><code>testing</code></a> package
-now exports the <a href="/pkg/testing/#TB"><code>TB</code></a> interface.
-It records the methods in common with the
-<a href="/pkg/testing/#T"><code>T</code></a>
-and
-<a href="/pkg/testing/#B"><code>B</code></a> types,
-to make it easier to share code between tests and benchmarks.
-Also, the
-<a href="/pkg/testing/#AllocsPerRun"><code>AllocsPerRun</code></a>
-function now quantizes the return value to an integer (although it
-still has type <code>float64</code>), to round off any error caused by
-initialization and make the result more repeatable.
-</li>
-
-<li>
-The <a href="/pkg/text/template/"><code>text/template</code></a> package
-now automatically dereferences pointer values when evaluating the arguments
-to "escape" functions such as "html", to bring the behavior of such functions
-in agreement with that of other printing functions such as "printf".
-</li>
-
-<li>
-In the <a href="/pkg/time/"><code>time</code></a> package, the
-<a href="/pkg/time/#Parse"><code>Parse</code></a> function
-and
-<a href="/pkg/time/#Time.Format"><code>Format</code></a>
-method
-now handle time zone offsets with seconds, such as in the historical
-date "1871-01-01T05:33:02+00:34:08".
-Also, pattern matching in the formats for those routines is stricter: a non-lowercase letter
-must now follow the standard words such as "Jan" and "Mon".
-</li>
-
-<li>
-The <a href="/pkg/unicode/"><code>unicode</code></a> package
-adds <a href="/pkg/unicode/#In"><code>In</code></a>,
-a nicer-to-use but equivalent version of the original
-<a href="/pkg/unicode/#IsOneOf"><code>IsOneOf</code></a>,
-to see whether a character is a member of a Unicode category.
-</li>
-
-</ul>
diff --git a/_content/doc/go1.20.html b/_content/doc/go1.20.html
deleted file mode 100644
index b6bb805..0000000
--- a/_content/doc/go1.20.html
+++ /dev/null
@@ -1,1291 +0,0 @@
-<!--{
-	"Title": "Go 1.20 Release Notes",
-	"Path":  "/doc/go1.20"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.20</h2>
-
-<p>
-  The latest Go release, version 1.20, arrives six months after <a href="/doc/go1.19">Go 1.19</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  Go 1.20 includes four changes to the language.
-</p>
-
-<p><!-- https://go.dev/issue/46505 -->
-  Go 1.17 added <a href="/ref/spec#Conversions_from_slice_to_array_or_array_pointer">conversions from slice to an array pointer</a>.
-  Go 1.20 extends this to allow conversions from a slice to an array:
-  given a slice <code>x</code>, <code>[4]byte(x)</code> can now be written
-  instead of <code>*(*[4]byte)(x)</code>.
-</p>
-
-<p><!-- https://go.dev/issue/53003 -->
-  The <a href="/ref/spec/#Package_unsafe"><code>unsafe</code> package</a> defines
-  three new functions <code>SliceData</code>, <code>String</code>, and <code>StringData</code>.
-  Along with Go 1.17's <code>Slice</code>, these functions now provide the complete ability to
-  construct and deconstruct slice and string values, without depending on their exact representation.
-</p>
-
-<p><!-- https://go.dev/issue/8606 -->
-  The specification now defines that struct values are compared one field at a time,
-  considering fields in the order they appear in the struct type definition,
-  and stopping at the first mismatch.
-  The specification could previously have been read as if
-  all fields needed to be compared beyond the first mismatch.
-  Similarly, the specification now defines that array values are compared
-  one element at a time, in increasing index order.
-  In both cases, the difference affects whether certain comparisons must panic.
-  Existing programs are unchanged: the new spec wording describes
-  what the implementations have always done.
-</p>
-
-<p><!-- https://go.dev/issue/56548 -->
-  <a href="/ref/spec#Comparison_operators">Comparable types</a> (such as ordinary interfaces)
-  may now satisfy <code>comparable</code> constraints, even if the type arguments
-  are not strictly comparable (comparison may panic at runtime).
-  This makes it possible to instantiate a type parameter constrained by <code>comparable</code>
-  (e.g., a type parameter for a user-defined generic map key) with a non-strictly comparable type argument
-  such as an interface type, or a composite type containing an interface type.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="windows">Windows</h3>
-
-<p><!-- https://go.dev/issue/57003, https://go.dev/issue/57004 -->
-  Go 1.20 is the last release that will run on any release of Windows 7, 8, Server 2008 and Server 2012.
-  Go 1.21 will require at least Windows 10 or Server 2016.
-</p>
-
-<h3 id="darwin">Darwin and iOS</h3>
-
-<p><!-- https://go.dev/issue/23011 -->
-  Go 1.20 is the last release that will run on macOS 10.13 High Sierra or 10.14 Mojave.
-  Go 1.21 will require macOS 10.15 Catalina or later.
-</p>
-
-<h3 id="freebsd-riscv">FreeBSD/RISC-V</h3>
-
-<p><!-- https://go.dev/issue/53466 -->
-  Go 1.20 adds experimental support for FreeBSD on RISC-V (<code>GOOS=freebsd</code>, <code>GOARCH=riscv64</code>).
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="go-command">Go command</h3>
-
-<p><!-- CL 432535, https://go.dev/issue/47257 -->
-  The directory <code>$GOROOT/pkg</code> no longer stores
-  pre-compiled package archives for the standard library:
-  <code>go</code> <code>install</code> no longer writes them,
-  the <code>go</code> build no longer checks for them,
-  and the Go distribution no longer ships them.
-  Instead, packages in the standard library are built as needed
-  and cached in the build cache, just like packages outside <code>GOROOT</code>.
-  This change reduces the size of the Go distribution and also
-  avoids C toolchain skew for packages that use cgo.
-</p>
-
-<p><!-- CL 448357: cmd/go: print test2json start events -->
-  The implementation of <code>go</code> <code>test</code> <code>-json</code>
-  has been improved to make it more robust.
-  Programs that run <code>go</code> <code>test</code> <code>-json</code>
-  do not need any updates.
-  Programs that invoke <code>go</code> <code>tool</code> <code>test2json</code>
-  directly should now run the test binary with <code>-v=test2json</code>
-  (for example, <code>go</code> <code>test</code> <code>-v=test2json</code>
-  or <code>./pkg.test</code> <code>-test.v=test2json</code>)
-  instead of plain <code>-v</code>.
-</p>
-
-<p><!-- CL 448357: cmd/go: print test2json start events -->
-  A related change to <code>go</code> <code>test</code> <code>-json</code>
-  is the addition of an event with <code>Action</code> set to <code>start</code>
-  at the beginning of each test program's execution.
-  When running multiple tests using the <code>go</code> command,
-  these start events are guaranteed to be emitted in the same order as
-  the packages named on the command line.
-</p>
-
-<p><!-- https://go.dev/issue/45454, CL 421434 -->
-  The <code>go</code> command now defines
-  architecture feature build tags, such as <code>amd64.v2</code>,
-  to allow selecting a package implementation file based on the presence
-  or absence of a particular architecture feature.
-  See <a href="/cmd/go#hdr-Build_constraints"><code>go</code> <code>help</code> <code>buildconstraint</code></a> for details.
-</p>
-
-<p><!-- https://go.dev/issue/50332 -->
-  The <code>go</code> subcommands now accept
-  <code>-C</code> <code>&lt;dir&gt;</code> to change directory to &lt;dir&gt;
-  before performing the command, which may be useful for scripts that need to
-  execute commands in multiple different modules.
-</p>
-
-<p><!-- https://go.dev/issue/41696, CL 416094 -->
-  The <code>go</code> <code>build</code> and <code>go</code> <code>test</code>
-  commands no longer accept the <code>-i</code> flag,
-  which has been <a href="https://go.dev/issue/41696">deprecated since Go 1.16</a>.
-</p>
-
-<p><!-- https://go.dev/issue/38687, CL 421440 -->
-  The <code>go</code> <code>generate</code> command now accepts
-  <code>-skip</code> <code>&lt;pattern&gt;</code> to skip <code>//go:generate</code> directives
-  matching <code>&lt;pattern&gt;</code>.
-</p>
-
-<p><!-- https://go.dev/issue/41583 -->
-  The <code>go</code> <code>test</code> command now accepts
-  <code>-skip</code> <code>&lt;pattern&gt;</code> to skip tests, subtests, or examples
-  matching <code>&lt;pattern&gt;</code>.
-</p>
-
-<p><!-- https://go.dev/issue/37015 -->
-  When the main module is located within <code>GOPATH/src</code>,
-  <code>go</code> <code>install</code> no longer installs libraries for
-  non-<code>main</code> packages to <code>GOPATH/pkg</code>,
-  and <code>go</code> <code>list</code> no longer reports a <code>Target</code>
-  field for such packages. (In module mode, compiled packages are stored in the
-  <a href="https://pkg.go.dev/cmd/go#hdr-Build_and_test_caching">build cache</a>
-  only, but <a href="https://go.dev/issue/37015">a bug</a> had caused
-  the <code>GOPATH</code> install targets to unexpectedly remain in effect.)
-</p>
-
-<p><!-- https://go.dev/issue/55022 -->
-  The <code>go</code> <code>build</code>, <code>go</code> <code>install</code>,
-  and other build-related commands now support a <code>-pgo</code> flag that enables
-  profile-guided optimization, which is described in more detail in the
-  <a href="#compiler">Compiler</a> section below.
-  The <code>-pgo</code> flag specifies the file path of the profile.
-  Specifying <code>-pgo=auto</code> causes the <code>go</code> command to search
-  for a file named <code>default.pgo</code> in the main package's directory and
-  use it if present.
-  This mode currently requires a single main package to be specified on the
-  command line, but we plan to lift this restriction in a future release.
-  Specifying <code>-pgo=off</code> turns off profile-guided optimization.
-</p>
-
-<p><!-- https://go.dev/issue/51430 -->
-  The <code>go</code> <code>build</code>, <code>go</code> <code>install</code>,
-  and other build-related commands now support a <code>-cover</code>
-  flag that builds the specified target with code coverage instrumentation.
-  This is described in more detail in the
-  <a href="#cover">Cover</a> section below.
-</p>
-
-<h4 id="go-version"><code>go</code> <code>version</code></h4>
-
-<p><!-- https://go.dev/issue/48187 -->
-  The <code>go</code> <code>version</code> <code>-m</code> command
-  now supports reading more types of Go binaries, most notably, Windows DLLs
-  built with <code>go</code> <code>build</code> <code>-buildmode=c-shared</code>
-  and Linux binaries without execute permission.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p><!-- CL 450739 -->
-  The <code>go</code> command now disables <code>cgo</code> by default
-  on systems without a C toolchain.
-  More specifically, when the <code>CGO_ENABLED</code> environment variable is unset,
-  the <code>CC</code> environment variable is unset,
-  and the default C compiler (typically <code>clang</code> or <code>gcc</code>)
-  is not found in the path,
-  <code>CGO_ENABLED</code> defaults to <code>0</code>.
-  As always, you can override the default by setting <code>CGO_ENABLED</code> explicitly.
-</p>
-
-<p>
-  The most important effect of the default change is that when Go is installed
-  on a system without a C compiler, it will now use pure Go builds for packages
-  in the standard library that use cgo, instead of using pre-distributed package archives
-  (which have been removed, as <a href="#go-command">noted above</a>)
-  or attempting to use cgo and failing.
-  This makes Go work better in some minimal container environments
-  as well as on macOS, where pre-distributed package archives have
-  not been used for cgo-based packages since Go 1.16.
-</p>
-
-<p>
-  The packages in the standard library that use cgo are <a href="/pkg/net/"><code>net</code></a>,
-  <a href="/pkg/os/user/"><code>os/user</code></a>, and
-  <a href="/pkg/plugin/"><code>plugin</code></a>.
-  On macOS, the <code>net</code> and <code>os/user</code> packages have been rewritten not to use cgo:
-  the same code is now used for cgo and non-cgo builds as well as cross-compiled builds.
-  On Windows, the <code>net</code> and <code>os/user</code> packages have never used cgo.
-  On other systems, builds with cgo disabled will use a pure Go version of these packages.
-</p>
-
-<p>
-  A consequence is that, on macOS, if Go code that uses
-  the <code>net</code> package is built
-  with <code>-buildmode=c-archive</code>, linking the resulting
-  archive into a C program requires passing <code>-lresolv</code> when
-  linking the C code.
-</p>
-
-<p>
-  On macOS, the race detector has been rewritten not to use cgo:
-  race-detector-enabled programs can be built and run without Xcode.
-  On Linux and other Unix systems, and on Windows, a host C toolchain
-  is required to use the race detector.
-</p>
-
-<h3 id="cover">Cover</h3>
-
-<p><!-- CL 436236, CL 401236, CL 438503 -->
-  Go 1.20 supports collecting code coverage profiles for programs
-  (applications and integration tests), as opposed to just unit tests.
-</p>
-
-<p>
-  To collect coverage data for a program, build it with <code>go</code>
-  <code>build</code>'s <code>-cover</code> flag, then run the resulting
-  binary with the environment variable <code>GOCOVERDIR</code> set
-  to an output directory for coverage profiles.
-  See the
-  <a href="https://go.dev/testing/coverage">'coverage for integration tests' landing page</a> for more on how to get started.
-  For details on the design and implementation, see the
-  <a href="https://golang.org/issue/51430">proposal</a>.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<h4 id="vet-loopclosure">Improved detection of loop variable capture by nested functions</h4>
-
-<p><!-- CL 447256, https://go.dev/issue/55972: extend the loopclosure analysis to parallel subtests -->
-  The <code>vet</code> tool now reports references to loop variables following
-  a call to <a href="/pkg/testing/#T.Parallel"><code>T.Parallel()</code></a>
-  within subtest function bodies. Such references may observe the value of the
-  variable from a different iteration (typically causing test cases to be
-  skipped) or an invalid state due to unsynchronized concurrent access.
-</p>
-
-<p><!-- CL 452615 -->
-  The tool also detects reference mistakes in more places. Previously it would
-  only consider the last statement of the loop body, but now it recursively
-  inspects the last statements within if, switch, and select statements.
-</p>
-
-<h4 id="vet-timeformat">New diagnostic for incorrect time formats</h4>
-
-<p><!-- CL 354010, https://go.dev/issue/48801: check for time formats with 2006-02-01 -->
-  The vet tool now reports use of the time format 2006-02-01 (yyyy-dd-mm)
-  with <a href="/pkg/time/#Time.Format"><code>Time.Format</code></a> and
-  <a href="/pkg/time/#Parse"><code>time.Parse</code></a>.
-  This format does not appear in common date standards, but is frequently
-  used by mistake when attempting to use the ISO 8601 date format
-  (yyyy-mm-dd).
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<p><!-- CL 422634 -->
-  Some of the garbage collector's internal data structures were reorganized to
-  be both more space and CPU efficient.
-  This change reduces memory overheads and improves overall CPU performance by
-  up to 2%.
-</p>
-
-<p><!-- CL 417558, https://go.dev/issue/53892 -->
-  The garbage collector behaves less erratically with respect to goroutine
-  assists in some circumstances.
-</p>
-
-<p><!-- https://go.dev/issue/51430 -->
-  Go 1.20 adds a new <code>runtime/coverage</code> package
-  containing APIs for writing coverage profile data at
-  runtime from long-running and/or server programs that
-  do not terminate via <code>os.Exit()</code>.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p><!-- https://go.dev/issue/55022 -->
-  Go 1.20 adds preview support for profile-guided optimization (PGO).
-  PGO enables the toolchain to perform application- and workload-specific
-  optimizations based on run-time profile information.
-  Currently, the compiler supports pprof CPU profiles, which can be collected
-  through usual means, such as the <code>runtime/pprof</code> or
-  <code>net/http/pprof</code> packages.
-  To enable PGO, pass the path of a pprof profile file via the
-  <code>-pgo</code> flag to <code>go</code> <code>build</code>,
-  as mentioned <a href="#go-command">above</a>.
-  Go 1.20 uses PGO to more aggressively inline functions at hot call sites.
-  Benchmarks for a representative set of Go programs show enabling
-  profile-guided inlining optimization improves performance about 3–4%.
-  See the <a href="/doc/pgo">PGO user guide</a> for detailed documentation.
-  We plan to add more profile-guided optimizations in future releases.
-  Note that profile-guided optimization is a preview, so please use it
-  with appropriate caution.
-</p>
-
-<p>
-  The Go 1.20 compiler upgraded its front-end to use a new way of handling the
-  compiler's internal data, which fixes several generic-types issues and enables
-  type declarations within generic functions and methods.
-</p>
-
-<p><!-- https://go.dev/issue/56103, CL 445598 -->
-  The compiler now <a href="/issue/56103">rejects anonymous interface cycles</a>
-  with a compiler error by default.
-  These arise from tricky uses of <a href="/ref/spec#Embedded_interfaces">embedded interfaces</a>
-  and have always had subtle correctness issues,
-  yet we have no evidence that they're actually used in practice.
-  Assuming no reports from users adversely affected by this change,
-  we plan to update the language specification for Go 1.22 to formally disallow them
-  so tools authors can stop supporting them too.
-</p>
-
-<p><!-- https://go.dev/issue/49569 -->
-  Go 1.18 and 1.19 saw regressions in build speed, largely due to the addition
-  of support for generics and follow-on work. Go 1.20 improves build speeds by
-  up to 10%, bringing it back in line with Go 1.17.
-  Relative to Go 1.19, generated code performance is also generally slightly improved.
-</p>
-
-<h2 id="linker">Linker</h2>
-
-<p><!-- https://go.dev/issue/54197, CL 420774 -->
-  On Linux, the linker now selects the dynamic interpreter for <code>glibc</code>
-  or <code>musl</code> at link time.
-</p>
-
-<p><!-- https://go.dev/issue/35006 -->
-  On Windows, the Go linker now supports modern LLVM-based C toolchains.
-</p>
-
-<p><!-- https://go.dev/issue/37762, CL 317917 -->
-  Go 1.20 uses <code>go:</code> and <code>type:</code> prefixes for compiler-generated
-  symbols rather than <code>go.</code> and <code>type.</code>.
-  This avoids confusion for user packages whose name starts with <code>go.</code>.
-  The <a href="/pkg/debug/gosym"><code>debug/gosym</code></a> package understands
-  this new naming convention for binaries built with Go 1.20 and newer.
-</p>
-
-<h2 id="bootstrap">Bootstrap</h2>
-
-<p><!-- https://go.dev/issue/44505 -->
-  When building a Go release from source and <code>GOROOT_BOOTSTRAP</code> is not set,
-  previous versions of Go looked for a Go 1.4 or later bootstrap toolchain in the directory
-  <code>$HOME/go1.4</code> (<code>%HOMEDRIVE%%HOMEPATH%\go1.4</code> on Windows).
-  Go 1.18 and Go 1.19 looked first for <code>$HOME/go1.17</code> or <code>$HOME/sdk/go1.17</code>
-  before falling back to <code>$HOME/go1.4</code>,
-  in anticipation of requiring Go 1.17 for use when bootstrapping Go 1.20.
-  Go 1.20 does require a Go 1.17 release for bootstrapping, but we realized that we should
-  adopt the latest point release of the bootstrap toolchain, so it requires Go 1.17.13.
-  Go 1.20 looks for <code>$HOME/go1.17.13</code> or <code>$HOME/sdk/go1.17.13</code>
-  before falling back to <code>$HOME/go1.4</code>
-  (to support systems that hard-coded the path $HOME/go1.4 but have installed
-  a newer Go toolchain there).
-  In the future, we plan to move the bootstrap toolchain forward approximately once a year,
-  and in particular we expect that Go 1.22 will require the final point release of Go 1.20 for bootstrap.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="crypto/ecdh">New crypto/ecdh package</h3>
-
-<p><!-- https://go.dev/issue/52221, CL 398914, CL 450335, https://go.dev/issue/56052 -->
-  Go 1.20 adds a new <a href="/pkg/crypto/ecdh/"><code>crypto/ecdh</code></a> package
-  to provide explicit support for Elliptic Curve Diffie-Hellman key exchanges
-  over NIST curves and Curve25519.
-</p>
-<p>
-  Programs should use <code>crypto/ecdh</code> instead of the lower-level functionality in
-  <a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a> for ECDH, and
-  third-party modules for more advanced use cases.
-</p>
-
-<h3 id="errors">Wrapping multiple errors</h3>
-
-<p><!-- CL 432898 -->
-  Go 1.20 expands support for error wrapping to permit an error to
-  wrap multiple other errors.
-</p>
-<p>
-  An error <code>e</code> can wrap more than one error by providing
-  an <code>Unwrap</code> method that returns a <code>[]error</code>.
-</p>
-<p>
-  The <a href="/pkg/errors/#Is"><code>errors.Is</code></a> and
-  <a href="/pkg/errors/#As"><code>errors.As</code></a> functions
-  have been updated to inspect multiply wrapped errors.
-</p>
-<p>
-  The <a href="/pkg/fmt/#Errorf"><code>fmt.Errorf</code></a> function
-  now supports multiple occurrences of the <code>%w</code> format verb,
-  which will cause it to return an error that wraps all of those error operands.
-</p>
-<p>
-  The new function <a href="/pkg/errors/#Join"><code>errors.Join</code></a>
-  returns an error wrapping a list of errors.
-</p>
-
-<h3 id="http_responsecontroller">HTTP ResponseController</h3>
-
-<p><!-- CL 436890, https://go.dev/issue/54136 -->
-  The new
-  <a href="/pkg/net/http/#ResponseController"><code>"net/http".ResponseController</code></a>
-  type provides access to extended per-request functionality not handled by the
-  <a href="/pkg/net/http/#ResponseWriter"><code>"net/http".ResponseWriter</code></a> interface.
-</p>
-
-<p>
-  Previously, we have added new per-request functionality by defining optional
-  interfaces which a <code>ResponseWriter</code> can implement, such as
-  <a href="/pkg/net/http/#Flusher"><code>Flusher</code></a>. These interfaces
-  are not discoverable and clumsy to use.
-</p>
-
-<p>
-  The <code>ResponseController</code> type provides a clearer, more discoverable way
-  to add per-handler controls. Two such controls also added in Go 1.20 are
-  <code>SetReadDeadline</code> and <code>SetWriteDeadline</code>, which allow setting
-  per-request read and write deadlines. For example:
-</p>
-
-<pre>
-func RequestHandler(w ResponseWriter, r *Request) {
-  rc := http.NewResponseController(w)
-  rc.SetWriteDeadline(time.Time{}) // disable Server.WriteTimeout when sending a large response
-  io.Copy(w, bigData)
-}
-</pre>
-
-<h3 id="reverseproxy_rewrite">New ReverseProxy Rewrite hook</h3>
-
-<p><!-- https://go.dev/issue/53002, CL 407214 -->
-  The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>httputil.ReverseProxy</code></a>
-  forwarding proxy includes a new
-  <a href="/pkg/net/http/httputil/#ReverseProxy.Rewrite"><code>Rewrite</code></a>
-  hook function, superseding the
-  previous <code>Director</code> hook.
-</p>
-
-<p>
-  The <code>Rewrite</code> hook accepts a
-  <a href="/pkg/net/http/httputil/#ProxyRequest"><code>ProxyRequest</code></a> parameter,
-  which includes both the inbound request received by the proxy and the outbound
-  request that it will send.
-  Unlike <code>Director</code> hooks, which only operate on the outbound request,
-  this permits <code>Rewrite</code> hooks to avoid certain scenarios where
-  a malicious inbound request may cause headers added by the hook
-  to be removed before forwarding.
-  See <a href="https://go.dev/issue/50580">issue #50580</a>.
-</p>
-
-<p>
-  The <a href="/pkg/net/http/httputil/#ProxyRequest.SetURL"><code>ProxyRequest.SetURL</code></a>
-  method routes the outbound request to a provided destination
-  and supersedes the <code>NewSingleHostReverseProxy</code> function.
-  Unlike <code>NewSingleHostReverseProxy</code>, <code>SetURL</code>
-  also sets the <code>Host</code> header of the outbound request.
-</p>
-
-<p><!-- https://go.dev/issue/50465, CL 407414 -->
-  The
-  <a href="/pkg/net/http/httputil/#ProxyRequest.SetXForwarded"><code>ProxyRequest.SetXForwarded</code></a>
-  method sets the <code>X-Forwarded-For</code>, <code>X-Forwarded-Host</code>,
-  and <code>X-Forwarded-Proto</code> headers of the outbound request.
-  When using a <code>Rewrite</code>, these headers are not added by default.
-</p>
-
-<p>
-  An example of a <code>Rewrite</code> hook using these features is:
-</p>
-
-<pre>
-proxyHandler := &httputil.ReverseProxy{
-  Rewrite: func(r *httputil.ProxyRequest) {
-    r.SetURL(outboundURL) // Forward request to outboundURL.
-    r.SetXForwarded()     // Set X-Forwarded-* headers.
-    r.Out.Header.Set("X-Additional-Header", "header set by the proxy")
-  },
-}
-</pre>
-
-<p><!-- CL 407375 -->
- <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a> no longer adds a <code>User-Agent</code> header
-  to forwarded requests when the incoming request does not have one.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-  There are also various performance improvements, not enumerated here.
-</p>
-
-<dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/55356, CL 449937 -->
-      When the <code>GODEBUG=tarinsecurepath=0</code> environment variable is set,
-      <a href="/pkg/archive/tar/#Reader.Next"><code>Reader.Next</code></a> method
-      will now return the error <a href="/pkg/archive/tar/#ErrInsecurePath"><code>ErrInsecurePath</code></a>
-      for an entry with a file name that is an absolute path,
-      refers to a location outside the current directory, contains invalid
-      characters, or (on Windows) is a reserved name such as <code>NUL</code>.
-      A future version of Go may disable insecure paths by default.
-    </p>
-  </dd>
-</dl><!-- archive/tar -->
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/55356 -->
-      When the <code>GODEBUG=zipinsecurepath=0</code> environment variable is set,
-      <a href="/pkg/archive/zip/#NewReader"><code>NewReader</code></a> will now return the error
-      <a href="/pkg/archive/zip/#ErrInsecurePath"><code>ErrInsecurePath</code></a>
-      when opening an archive which contains any file name that is an absolute path,
-      refers to a location outside the current directory, contains invalid
-      characters, or (on Windows) is a reserved names such as <code>NUL</code>.
-      A future version of Go may disable insecure paths by default.
-    </p>
-    <p><!-- CL 449955 -->
-      Reading from a directory file that contains file data will now return an error.
-      The zip specification does not permit directory files to contain file data,
-      so this change only affects reading from invalid archives.
-    </p>
-  </dd>
-</dl><!-- archive/zip -->
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-  <dd>
-    <p><!-- CL 407176 -->
-      The new
-      <a href="/pkg/bytes/#CutPrefix"><code>CutPrefix</code></a> and
-      <a href="/pkg/bytes/#CutSuffix"><code>CutSuffix</code></a> functions
-      are like <a href="/pkg/bytes/#TrimPrefix"><code>TrimPrefix</code></a>
-      and <a href="/pkg/bytes/#TrimSuffix"><code>TrimSuffix</code></a>
-      but also report whether the string was trimmed.
-    </p>
-
-    <p><!-- CL 359675, https://go.dev/issue/45038 -->
-      The new <a href="/pkg/bytes/#Clone"><code>Clone</code></a> function
-      allocates a copy of a byte slice.
-    </p>
-  </dd>
-</dl><!-- bytes -->
-
-<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51365, CL 375977 -->
-      The new <a href="/pkg/context/#WithCancelCause"><code>WithCancelCause</code></a> function
-      provides a way to cancel a context with a given error.
-      That error can be retrieved by calling the new <a href="/pkg/context/#Cause"><code>Cause</code></a> function.
-    </p>
-  </dd>
-</dl><!-- context -->
-
-<dl id="crypto/ecdsa"><dt><a href="/pkg/crypto/ecdsa/">crypto/ecdsa</a></dt>
-  <dd>
-    <p><!-- CL 353849 -->
-      When using supported curves, all operations are now implemented in constant time.
-      This led to an increase in CPU time between 5% and 30%, mostly affecting P-384 and P-521.
-    </p>
-
-    <p><!-- https://go.dev/issue/56088, CL 450816 -->
-      The new <a href="/pkg/crypto/ecdsa/#PrivateKey.ECDH"><code>PrivateKey.ECDH</code></a> method
-      converts an <code>ecdsa.PrivateKey</code> to an <code>ecdh.PrivateKey</code>.
-    </p>
-  </dd>
-</dl><!-- crypto/ecdsa -->
-
-<dl id="crypto/ed25519"><dt><a href="/pkg/crypto/ed25519/">crypto/ed25519</a></dt>
-  <dd>
-    <p><!-- CL 373076, CL 404274, https://go.dev/issue/31804 -->
-      The <a href="/pkg/crypto/ed25519/#PrivateKey.Sign"><code>PrivateKey.Sign</code></a> method
-      and the
-      <a href="/pkg/crypto/ed25519/#VerifyWithOptions"><code>VerifyWithOptions</code></a> function
-      now support signing pre-hashed messages with Ed25519ph,
-      indicated by an
-      <a href="/pkg/crypto/ed25519/#Options.HashFunc"><code>Options.HashFunc</code></a>
-      that returns
-      <a href="/pkg/crypto/#SHA512"><code>crypto.SHA512</code></a>.
-      They also now support Ed25519ctx and Ed25519ph with context,
-      indicated by setting the new
-      <a href="/pkg/crypto/ed25519/#Options.Context"><code>Options.Context</code></a>
-      field.
-    </p>
-  </dd>
-</dl><!-- crypto/ed25519 -->
-
-<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
-  <dd>
-    <p><!-- CL 418874, https://go.dev/issue/19974 -->
-      The new field <a href="/pkg/crypto/rsa/#OAEPOptions.MGFHash"><code>OAEPOptions.MGFHash</code></a>
-      allows configuring the MGF1 hash separately for OAEP decryption.
-    </p>
-
-    <p><!-- https://go.dev/issue/20654 -->
-      crypto/rsa now uses a new, safer, constant-time backend. This causes a CPU
-      runtime increase for decryption operations between approximately 15%
-      (RSA-2048 on amd64) and 45% (RSA-4096 on arm64), and more on 32-bit architectures.
-      Encryption operations are approximately 20x slower than before (but still 5-10x faster than decryption).
-      Performance is expected to improve in future releases.
-      Programs must not modify or manually generate the fields of
-      <a href="/pkg/crypto/rsa/#PrecomputedValues"><code>PrecomputedValues</code></a>.
-    </p>
-  </dd>
-</dl><!-- crypto/rsa -->
-
-<dl id="crypto/subtle"><dt><a href="/pkg/crypto/subtle/">crypto/subtle</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53021, CL 421435 -->
-      The new function <a href="/pkg/crypto/subtle/#XORBytes"><code>XORBytes</code></a>
-      XORs two byte slices together.
-    </p>
-  </dd>
-</dl><!-- crypto/subtle -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 426455, CL 427155, CL 426454, https://go.dev/issue/46035 -->
-      Parsed certificates are now shared across all clients actively using that certificate.
-      The memory savings can be significant in programs that make many concurrent connections to a
-      server or collection of servers sharing any part of their certificate chains.
-    </p>
-
-    <p><!-- https://go.dev/issue/48152, CL 449336 -->
-      For a handshake failure due to a certificate verification failure,
-      the TLS client and server now return an error of the new type
-      <a href="/pkg/crypto/tls/#CertificateVerificationError"><code>CertificateVerificationError</code></a>,
-      which includes the presented certificates.
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 450816, CL 450815 -->
-      <a href="/pkg/crypto/x509/#ParsePKCS8PrivateKey"><code>ParsePKCS8PrivateKey</code></a>
-      and
-      <a href="/pkg/crypto/x509/#MarshalPKCS8PrivateKey"><code>MarshalPKCS8PrivateKey</code></a>
-      now support keys of type <a href="/pkg/crypto/ecdh.PrivateKey"><code>*crypto/ecdh.PrivateKey</code></a>.
-      <a href="/pkg/crypto/x509/#ParsePKIXPublicKey"><code>ParsePKIXPublicKey</code></a>
-      and
-      <a href="/pkg/crypto/x509/#MarshalPKIXPublicKey"><code>MarshalPKIXPublicKey</code></a>
-      now support keys of type <a href="/pkg/crypto/ecdh.PublicKey"><code>*crypto/ecdh.PublicKey</code></a>.
-      Parsing NIST curve keys still returns values of type
-      <code>*ecdsa.PublicKey</code> and <code>*ecdsa.PrivateKey</code>.
-      Use their new <code>ECDH</code> methods to convert to the <code>crypto/ecdh</code> types.
-    </p>
-    <p><!-- CL 449235 -->
-      The new <a href="/pkg/crypto/x509/#SetFallbackRoots"><code>SetFallbackRoots</code></a>
-      function allows a program to define a set of fallback root certificates in case an
-      operating system verifier or standard platform root bundle is unavailable at runtime.
-      It will most commonly be used with a new package, <a href="/pkg/golang.org/x/crypto/x509roots/fallback">golang.org/x/crypto/x509roots/fallback</a>,
-      which will provide an up to date root bundle.
-    </p>
-  </dd>
-</dl><!-- crypto/x509 -->
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- CL 429601 -->
-      Attempts to read from a <code>SHT_NOBITS</code> section using
-      <a href="/pkg/debug/elf/#Section.Data"><code>Section.Data</code></a>
-      or the reader returned by <a href="/pkg/debug/elf/#Section.Open"><code>Section.Open</code></a>
-      now return an error.
-    </p>
-    <p><!-- CL 420982 -->
-      Additional <a href="/pkg/debug/elf/#R_LARCH"><code>R_LARCH_*</code></a> constants are defined for use with LoongArch systems.
-    </p>
-    <p><!-- CL 420982, CL 435415, CL 425555 -->
-      Additional <a href="/pkg/debug/elf/#R_PPC64"><code>R_PPC64_*</code></a> constants are defined for use with PPC64 ELFv2 relocations.
-    </p>
-    <p><!-- CL 411915 -->
-      The constant value for <a href="/pkg/debug/elf/#R_PPC64_SECTOFF_LO_DS"><code>R_PPC64_SECTOFF_LO_DS</code></a> is corrected, from 61 to 62.
-    </p>
-  </dd>
-</dl><!-- debug/elf -->
-
-<dl id="debug/gosym"><dt><a href="/pkg/debug/gosym/">debug/gosym</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/37762, CL 317917 -->
-      Due to a change of <a href="#linker">Go's symbol naming conventions</a>, tools that
-      process Go binaries should use Go 1.20's <code>debug/gosym</code> package to
-      transparently handle both old and new binaries.
-    </p>
-  </dd>
-</dl><!-- debug/gosym -->
-
-<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
-  <dd>
-    <p><!-- CL 421357 -->
-      Additional <a href="/pkg/debug/pe/#IMAGE_FILE_MACHINE_RISCV128"><code>IMAGE_FILE_MACHINE_RISCV*</code></a> constants are defined for use with RISC-V systems.
-    </p>
-  </dd>
-</dl><!-- debug/pe -->
-
-<dl id="encoding/binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
-  <dd>
-    <p><!-- CL 420274 -->
-      The <a href="/pkg/encoding/binary/#ReadVarint"><code>ReadVarint</code></a> and
-      <a href="/pkg/encoding/binary/#ReadUvarint"><code>ReadUvarint</code></a>
-      functions will now return <code>io.ErrUnexpectedEOF</code> after reading a partial value,
-      rather than <code>io.EOF</code>.
-    </p>
-  </dd>
-</dl><!-- encoding/binary -->
-
-<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53346, CL 424777 -->
-      The new <a href="/pkg/encoding/xml/#Encoder.Close"><code>Encoder.Close</code></a> method
-      can be used to check for unclosed elements when finished encoding.
-    </p>
-
-    <p><!-- CL 103875, CL 105636 -->
-      The decoder now rejects element and attribute names with more than one colon,
-      such as <code>&lt;a:b:c&gt;</code>,
-      as well as namespaces that resolve to an empty string, such as <code>xmlns:a=""</code>.
-    </p>
-
-    <p><!-- CL 107255 -->
-      The decoder now rejects elements that use different namespace prefixes in the opening and closing tag,
-      even if those prefixes both denote the same namespace.
-    </p>
-  </dd>
-</dl><!-- encoding/xml -->
-
-<dl id="errors"><dt><a href="/pkg/errors/">errors</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53435 -->
-      The new <a href="/pkg/errors/#Join"><code>Join</code></a> function returns an error wrapping a list of errors.
-    </p>
-  </dd>
-</dl><!-- errors -->
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53435 -->
-      The <a href="/pkg/fmt/#Errorf"><code>Errorf</code></a> function supports multiple occurrences of
-      the <code>%w</code> format verb, returning an error that unwraps to the list of all arguments to <code>%w</code>.
-    </p>
-    <p><!-- https://go.dev/issue/51668, CL 400875 -->
-      The new <a href="/pkg/fmt/#FormatString"><code>FormatString</code></a> function recovers the
-      formatting directive corresponding to a <a href="/pkg/fmt/#State"><code>State</code></a>,
-      which can be useful in <a href="/pkg/fmt/#Formatter"><code>Formatter</code></a>.
-      implementations.
-    </p>
-  </dd>
-</dl><!-- fmt -->
-
-<dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt>
-  <dd>
-    <p><!-- CL 426091, https://go.dev/issue/50429 -->
-      The new <a href="/pkg/go/ast/#RangeStmt.Range"><code>RangeStmt.Range</code></a> field
-      records the position of the <code>range</code> keyword in a range statement.
-    </p>
-    <p><!-- CL 427955, https://go.dev/issue/53202 -->
-      The new <a href="/pkg/go/ast/#File.FileStart"><code>File.FileStart</code></a>
-      and <a href="/pkg/go/ast/#File.FileEnd"><code>File.FileEnd</code></a> fields
-      record the position of the start and end of the entire source file.
-    </p>
-  </dd>
-</dl><!-- go/ast -->
-
-<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
-  <dd>
-    <p><!-- CL 410114, https://go.dev/issue/53200 -->
-      The new <a href="/pkg/go/token/#FileSet.RemoveFile"><code>FileSet.RemoveFile</code></a> method
-      removes a file from a <code>FileSet</code>.
-      Long-running programs can use this to release memory associated
-      with files they no longer need.
-    </p>
-  </dd>
-</dl><!-- go/token -->
-
-<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
-  <dd>
-    <p><!-- CL 454575 -->
-      The new <a href="/pkg/go/types/#Satisfies"><code>Satisfies</code></a> function reports
-      whether a type satisfies a constraint.
-      This change aligns with the <a href="#language">new language semantics</a>
-      that distinguish satisfying a constraint from implementing an interface.
-    </p>
-  </dd>
-</dl><!-- go/types -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/59153 --><!-- CL 481993 -->
-      Go 1.20.3 and later
-      <a href="/pkg/html/template#hdr-Security_Model">disallow actions in ECMAScript 6 template literals.</a>
-      This behavior can be reverted by the <code>GODEBUG=jstmpllitinterp=1</code> setting.
-    </p>
-  </dd>
-</dl><!-- html/template -->
-
-<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/45899, CL 406776 -->
-      The new <a href="/pkg/io/#OffsetWriter"><code>OffsetWriter</code></a> wraps an underlying
-      <a href="/pkg/io/#WriterAt"><code>WriterAt</code></a>
-      and provides <code>Seek</code>, <code>Write</code>, and <code>WriteAt</code> methods
-      that adjust their effective file offset position by a fixed amount.
-    </p>
-  </dd>
-</dl><!-- io -->
-
-<dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt>
-  <dd>
-    <p><!-- CL 363814, https://go.dev/issue/47209 -->
-      The new error <a href="/pkg/io/fs/#SkipAll"><code>SkipAll</code></a>
-      terminates a <a href="/pkg/io/fs/#WalkDir"><code>WalkDir</code></a>
-      immediately but successfully.
-    </p>
-  </dd>
-</dl><!-- io -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/52182 -->
-      The <a href="/pkg/math/big/">math/big</a> package's wide scope and
-      input-dependent timing make it ill-suited for implementing cryptography.
-      The cryptography packages in the standard library no longer call non-trivial
-      <a href="/pkg/math/big#Int">Int</a> methods on attacker-controlled inputs.
-      In the future, the determination of whether a bug in math/big is
-      considered a security vulnerability will depend on its wider impact on the
-      standard library.
-    </p>
-  </dd>
-</dl><!-- math/big -->
-
-<dl id="math/rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/54880, CL 436955, https://go.dev/issue/56319 -->
-      The <a href="/pkg/math/rand/">math/rand</a> package now automatically seeds
-      the global random number generator
-      (used by top-level functions like <code>Float64</code> and <code>Int</code>) with a random value,
-      and the top-level <a href="/pkg/math/rand/#Seed"><code>Seed</code></a> function has been deprecated.
-      Programs that need a reproducible sequence of random numbers
-      should prefer to allocate their own random source, using <code>rand.New(rand.NewSource(seed))</code>.
-    </p>
-    <p>
-      Programs that need the earlier consistent global seeding behavior can set
-      <code>GODEBUG=randautoseed=0</code> in their environment.
-    </p>
-    <p><!-- https://go.dev/issue/20661 -->
-      The top-level <a href="/pkg/math/rand/#Read"><code>Read</code></a> function has been deprecated.
-      In almost all cases,  <a href="/pkg/crypto/rand/#Read"><code>crypto/rand.Read</code></a> is more appropriate.
-    </p>
-  </dd>
-</dl><!-- math/rand -->
-
-<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/48866 -->
-      The <a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a> function now allows duplicate parameter names,
-      so long as the values of the names are the same.
-    </p>
-  </dd>
-</dl><!-- mime -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-  <dd>
-    <p><!-- CL 431675 -->
-      Methods of the <a href="/pkg/mime/multipart/#Reader"><code>Reader</code></a> type now wrap errors
-      returned by the underlying <code>io.Reader</code>.
-    </p>
-    <p><!-- https://go.dev/issue/59153 --><!-- CL 481985 -->
-      In Go 1.19.8 and later, this package sets limits the size
-      of the MIME data it processes to protect against malicious inputs.
-      <code>Reader.NextPart</code> and <code>Reader.NextRawPart</code> limit the
-      number of headers in a part to 10000 and <code>Reader.ReadForm</code> limits
-      the total number of headers in all <code>FileHeaders</code> to 10000.
-      These limits may be adjusted with the <code>GODEBUG=multipartmaxheaders</code>
-      setting.
-      <code>Reader.ReadForm</code> further limits the number of parts in a form to 1000.
-      This limit may be adjusted with the <code>GODEBUG=multipartmaxparts</code>
-      setting.
-    </p>
-  </dd>
-</dl><!-- mime/multipart -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/50101, CL 446179 -->
-      The <a href="/pkg/net/#LookupCNAME"><code>LookupCNAME</code></a>
-      function now consistently returns the contents
-      of a <code>CNAME</code> record when one exists. Previously on Unix systems and
-      when using the pure Go resolver, <code>LookupCNAME</code> would return an error
-      if a <code>CNAME</code> record referred to a name that with no <code>A</code>,
-      <code>AAAA</code>, or <code>CNAME</code> record. This change modifies
-      <code>LookupCNAME</code> to match the previous behavior on Windows,
-      allowing <code>LookupCNAME</code> to succeed whenever a
-      <code>CNAME</code> exists.
-    </p>
-
-    <p><!-- https://go.dev/issue/53482, CL 413454 -->
-      <a href="/pkg/net/#Interface.Flags"><code>Interface.Flags</code></a> now includes the new flag <code>FlagRunning</code>,
-      indicating an operationally active interface. An interface which is administratively
-      configured but not active (for example, because the network cable is not connected)
-      will have <code>FlagUp</code> set but not <code>FlagRunning</code>.
-    </p>
-
-    <p><!-- https://go.dev/issue/55301, CL 444955 -->
-      The new <a href="/pkg/net/#Dialer.ControlContext"><code>Dialer.ControlContext</code></a> field contains a callback function
-      similar to the existing <a href="/pkg/net/#Dialer.Control"><code>Dialer.Control</code></a> hook, that additionally
-      accepts the dial context as a parameter.
-      <code>Control</code> is ignored when <code>ControlContext</code> is not nil.
-    </p>
-
-    <p><!-- CL 428955 -->
-      The Go DNS resolver recognizes the <code>trust-ad</code> resolver option.
-      When <code>options trust-ad</code> is set in <code>resolv.conf</code>,
-      the Go resolver will set the AD bit in DNS queries. The resolver does not
-      make use of the AD bit in responses.
-    </p>
-
-    <p><!-- CL 448075 -->
-      DNS resolution will detect changes to <code>/etc/nsswitch.conf</code>
-      and reload the file when it changes. Checks are made at most once every
-      five seconds, matching the previous handling of <code>/etc/hosts</code>
-      and <code>/etc/resolv.conf</code>.
-    </p>
-  </dd>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51914 -->
-      The <a href="/pkg/net/http/#ResponseWriter.WriteHeader"><code>ResponseWriter.WriteHeader</code></a> function now supports sending
-      <code>1xx</code> status codes.
-    </p>
-
-    <p><!-- https://go.dev/issue/41773, CL 356410 -->
-      The new <a href="/pkg/net/http/#Server.DisableGeneralOptionsHandler"><code>Server.DisableGeneralOptionsHandler</code></a> configuration setting
-      allows disabling the default <code>OPTIONS *</code> handler.
-    </p>
-
-    <p><!-- https://go.dev/issue/54299, CL 447216 -->
-      The new <a href="/pkg/net/http/#Transport.OnProxyConnectResponse"><code>Transport.OnProxyConnectResponse</code></a> hook is called
-      when a <code>Transport</code> receives an HTTP response from a proxy
-      for a <code>CONNECT</code> request.
-    </p>
-
-    <p><!-- https://go.dev/issue/53960, CL 418614  -->
-      The HTTP server now accepts HEAD requests containing a body,
-      rather than rejecting them as invalid.
-    </p>
-
-    <p><!-- https://go.dev/issue/53896 -->
-      HTTP/2 stream errors returned by <code>net/http</code> functions may be converted
-      to a <a href="/pkg/golang.org/x/net/http2/#StreamError"><code>golang.org/x/net/http2.StreamError</code></a> using
-      <a href="/pkg/errors/#As"><code>errors.As</code></a>.
-    </p>
-
-    <p><!-- https://go.dev/cl/397734 -->
-      Leading and trailing spaces are trimmed from cookie names,
-      rather than being rejected as invalid.
-      For example, a cookie setting of "name =value"
-      is now accepted as setting the cookie "name".
-    </p>
-
-    <p><!-- https://go.dev/issue/52989 -->
-     A <a href="/pkg/net/http#Cookie"><code>Cookie</code></a> with an empty Expires field is now considered valid.
-     <a href="/pkg/net/http#Cookie.Valid"><code>Cookie.Valid</code></a> only checks Expires when it is set.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="net/netip"><dt><a href="/pkg/net/netip/">net/netip</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51766, https://go.dev/issue/51777, CL 412475 -->
-      The new <a href="/pkg/net/netip/#IPv6LinkLocalAllRouters"><code>IPv6LinkLocalAllRouters</code></a>
-      and <a href="/pkg/net/netip/#IPv6Loopback"><code>IPv6Loopback</code></a> functions
-      are the <code>net/netip</code> equivalents of
-      <a href="/pkg/net/#IPv6loopback"><code>net.IPv6loopback</code></a> and
-      <a href="/pkg/net/#IPv6linklocalallrouters"><code>net.IPv6linklocalallrouters</code></a>.
-    </p>
-  </dd>
-</dl><!-- net/netip -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 448897 -->
-      On Windows, the name <code>NUL</code> is no longer treated as a special case in
-      <a href="/pkg/os/#Mkdir"><code>Mkdir</code></a> and
-      <a href="/pkg/os/#Stat"><code>Stat</code></a>.
-    </p>
-    <p><!-- https://go.dev/issue/52747, CL 405275 -->
-      On Windows, <a href="/pkg/os/#File.Stat"><code>File.Stat</code></a>
-      now uses the file handle to retrieve attributes when the file is a directory.
-      Previously it would use the path passed to
-      <a href="/pkg/os/#Open"><code>Open</code></a>, which may no longer be the file
-      represented by the file handle if the file has been moved or replaced.
-      This change modifies <code>Open</code> to open directories without the
-      <code>FILE_SHARE_DELETE</code> access, which match the behavior of regular files.
-    </p>
-    <p><!-- https://go.dev/issue/36019, CL 405275 -->
-      On Windows, <a href="/pkg/os/#File.Seek"><code>File.Seek</code></a> now supports
-      seeking to the beginning of a directory.
-    </p>
-  </dd>
-</dl><!-- os -->
-
-<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/50436, CL 401835 -->
-      The new <a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a> fields
-      <a href="/pkg/os/exec/#Cmd.Cancel"><code>Cancel</code></a> and
-      <a href="/pkg/os/exec/#Cmd.WaitDelay"><code>WaitDelay</code></a>
-      specify the behavior of the <code>Cmd</code> when its associated
-      <code>Context</code> is canceled or its process exits with I/O pipes still
-      held open by a child process.
-    </p>
-  </dd>
-</dl><!-- os/exec -->
-
-<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
-  <dd>
-    <p><!-- CL 363814, https://go.dev/issue/47209 -->
-      The new error <a href="/pkg/path/filepath/#SkipAll"><code>SkipAll</code></a>
-      terminates a <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a>
-      immediately but successfully.
-    </p>
-    <p><!-- https://go.dev/issue/56219, CL 449239 -->
-      The new <a href="/pkg/path/filepath/#IsLocal"><code>IsLocal</code></a> function reports whether a path is
-      lexically local to a directory.
-      For example, if <code>IsLocal(p)</code> is <code>true</code>,
-      then <code>Open(p)</code> will refer to a file that is lexically
-      within the subtree rooted at the current directory.
-    </p>
-  </dd>
-</dl><!-- io -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/46746, CL 423794 -->
-      The new <a href="/pkg/reflect/#Value.Comparable"><code>Value.Comparable</code></a> and
-      <a href="/pkg/reflect/#Value.Equal"><code>Value.Equal</code></a> methods
-      can be used to compare two <code>Value</code>s for equality.
-      <code>Comparable</code> reports whether <code>Equal</code> is a valid operation for a given <code>Value</code> receiver.
-    </p>
-
-    <p><!-- https://go.dev/issue/48000, CL 389635 -->
-      The new <a href="/pkg/reflect/#Value.Grow"><code>Value.Grow</code></a> method
-      extends a slice to guarantee space for another <code>n</code> elements.
-    </p>
-
-    <p><!-- https://go.dev/issue/52376, CL 411476 -->
-      The new <a href="/pkg/reflect/#Value.SetZero"><code>Value.SetZero</code></a> method
-      sets a value to be the zero value for its type.
-    </p>
-
-    <p><!-- CL 425184 -->
-      Go 1.18 introduced <a href="/pkg/reflect/#Value.SetIterKey"><code>Value.SetIterKey</code></a>
-      and <a href="/pkg/reflect/#Value.SetIterValue"><code>Value.SetIterValue</code></a> methods.
-      These are optimizations: <code>v.SetIterKey(it)</code> is meant to be equivalent to <code>v.Set(it.Key())</code>.
-      The implementations incorrectly omitted a check for use of unexported fields that was present in the unoptimized forms.
-      Go 1.20 corrects these methods to include the unexported field check.
-    </p>
-  </dd>
-</dl><!-- reflect -->
-
-<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
-  <dd>
-    <p><!-- CL 444817 -->
-      Go 1.19.2 and Go 1.18.7 included a security fix to the regular expression parser,
-      making it reject very large expressions that would consume too much memory.
-      Because Go patch releases do not introduce new API,
-      the parser returned <a href="/pkg/regexp/syntax/#ErrInternalError"><code>syntax.ErrInternalError</code></a> in this case.
-      Go 1.20 adds a more specific error, <a href="/pkg/regexp/syntax/#ErrLarge"><code>syntax.ErrLarge</code></a>,
-      which the parser now returns instead.
-    </p>
-  </dd>
-</dl><!-- regexp -->
-
-<dl id="runtime/cgo"><dt><a href="/pkg/runtime/cgo/">runtime/cgo</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/46731, CL 421879 -->
-      Go 1.20 adds new <a href="/pkg/runtime/cgo/#Incomplete"><code>Incomplete</code></a> marker type.
-      Code generated by cgo will use <code>cgo.Incomplete</code> to mark an incomplete C type.
-    </p>
-  </dd>
-</dl><!-- runtime/cgo -->
-
-<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/47216, https://go.dev/issue/49881 -->
-      Go 1.20 adds new <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">supported metrics</a>,
-      including the current <code>GOMAXPROCS</code> setting (<code>/sched/gomaxprocs:threads</code>),
-      the number of cgo calls executed (<code>/cgo/go-to-c-calls:calls</code>),
-      total mutex block time (<code>/sync/mutex/wait/total:seconds</code>), and various measures of time
-      spent in garbage collection.
-    </p>
-
-    <p><!-- CL 427615 -->
-      Time-based histogram metrics are now less precise, but take up much less memory.
-    </p>
-  </dd>
-</dl><!-- runtime/metrics -->
-
-<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
-  <dd>
-    <p><!-- CL 443056 -->
-      Mutex profile samples are now pre-scaled, fixing an issue where old mutex profile
-      samples would be scaled incorrectly if the sampling rate changed during execution.
-    </p>
-
-    <p><!-- CL 416975 -->
-      Profiles collected on Windows now include memory mapping information that fixes
-      symbolization issues for position-independent binaries.
-    </p>
-  </dd>
-</dl><!-- runtime/pprof -->
-
-<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
-  <dd>
-    <p><!-- CL 447135, https://go.dev/issue/55022 -->
-      The garbage collector's background sweeper now yields less frequently,
-      resulting in many fewer extraneous events in execution traces.
-    </p>
-  </dd>
-</dl><!-- runtime/trace -->
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-  <dd>
-    <p><!-- CL 407176, https://go.dev/issue/42537 -->
-      The new
-      <a href="/pkg/strings/#CutPrefix"><code>CutPrefix</code></a> and
-      <a href="/pkg/strings/#CutSuffix"><code>CutSuffix</code></a> functions
-      are like <a href="/pkg/strings/#TrimPrefix"><code>TrimPrefix</code></a>
-      and <a href="/pkg/strings/#TrimSuffix"><code>TrimSuffix</code></a>
-      but also report whether the string was trimmed.
-    </p>
-  </dd>
-</dl><!-- strings -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 399094, https://go.dev/issue/51972 -->
-      The new <a href="/pkg/sync/#Map"><code>Map</code></a> methods <a href="/pkg/sync/#Map.Swap"><code>Swap</code></a>,
-      <a href="/pkg/sync/#Map.CompareAndSwap"><code>CompareAndSwap</code></a>, and
-      <a href="/pkg/sync/#Map.CompareAndDelete"><code>CompareAndDelete</code></a>
-      allow existing map entries to be updated atomically.
-    </p>
-  </dd>
-</dl><!-- sync -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 411596 -->
-      On FreeBSD, compatibility shims needed for FreeBSD 11 and earlier have been removed.
-    </p>
-    <p><!-- CL 407574 -->
-      On Linux, additional <a href="/pkg/syscall/#CLONE_CLEAR_SIGHAND"><code>CLONE_*</code></a> constants
-      are defined for use with the <a href="/pkg/syscall/#SysProcAttr.Cloneflags"><code>SysProcAttr.Cloneflags</code></a> field.
-    </p>
-    <p><!-- CL 417695 -->
-      On Linux, the new <a href="/pkg/syscall/#SysProcAttr.CgroupFD"><code>SysProcAttr.CgroupFD</code></a>
-      and <a href="/pkg/syscall/#SysProcAttr.UseCgroupFD"><code>SysProcAttr.UseCgroupFD</code></a> fields
-      provide a way to place a child process into a specific cgroup.
-    </p>
-  </dd>
-</dl><!-- syscall -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/43620, CL 420254 -->
-      The new method <a href="/pkg/testing/#B.Elapsed"><code>B.Elapsed</code></a>
-      reports the current elapsed time of the benchmark, which may be useful for
-      calculating rates to report with <code>ReportMetric</code>.
-    </p>
-
-    <p><!-- https://go.dev/issue/48515, CL 352349 -->
-      Calling <a href="/pkg/testing/#T.Run"><code>T.Run</code></a>
-      from a function passed
-      to <a href="/pkg/testing/#T.Cleanup"><code>T.Cleanup</code></a>
-      was never well-defined, and will now panic.
-    </p>
-  </dd>
-</dl><!-- testing -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/52746, CL 412495 -->
-      The new time layout constants <a href="/pkg/time/#DateTime"><code>DateTime</code></a>,
-      <a href="/pkg/time/#DateOnly"><code>DateOnly</code></a>, and
-      <a href="/pkg/time/#TimeOnly"><code>TimeOnly</code></a>
-      provide names for three of the most common layout strings used in a survey of public Go source code.
-    </p>
-
-    <p><!-- CL 382734, https://go.dev/issue/50770 -->
-      The new <a href="/pkg/time/#Time.Compare"><code>Time.Compare</code></a> method
-      compares two times.
-    </p>
-
-    <p><!-- CL 425037 -->
-      <a href="/pkg/time/#Parse"><code>Parse</code></a>
-      now ignores sub-nanosecond precision in its input,
-      instead of reporting those digits as an error.
-    </p>
-
-    <p><!-- CL 444277 -->
-      The <a href="/pkg/time/#Time.MarshalJSON"><code>Time.MarshalJSON</code></a> method
-      is now more strict about adherence to RFC 3339.
-    </p>
-  </dd>
-</dl><!-- time -->
-
-<dl id="unicode/utf16"><dt><a href="/pkg/unicode/utf16/">unicode/utf16</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/51896, CL 409054 -->
-      The new  <a href="/pkg/unicode/utf16/#AppendRune"><code>AppendRune</code></a>
-      function appends the UTF-16 encoding of a given rune to a uint16 slice,
-      analogous to <a href="/pkg/unicode/utf8/#AppendRune"><code>utf8.AppendRune</code></a>.
-    </p>
-  </dd>
-</dl><!-- unicode/utf16 -->
-
-<!-- Silence false positives from x/build/cmd/relnote: -->
-<!-- https://go.dev/issue/45964 was documented in Go 1.18 release notes but closed recently -->
-<!-- https://go.dev/issue/52114 is an accepted proposal to add golang.org/x/net/http2.Transport.DialTLSContext; it's not a part of the Go release -->
-<!-- CL 431335: cmd/api: make check pickier about api/*.txt -->
-<!-- CL 447896 api: add newline to 55301.txt; modified api/next/55301.txt -->
-<!-- CL 449215 api/next/54299: add missing newline; modified api/next/54299.txt -->
-<!-- CL 433057 cmd: update vendored golang.org/x/tools for multiple error wrapping -->
-<!-- CL 423362 crypto/internal/boring: update to newer boringcrypto, add arm64 -->
-<!-- https://go.dev/issue/53481 x/cryptobyte ReadUint64, AddUint64 -->
-<!-- https://go.dev/issue/51994 x/crypto/ssh -->
-<!-- https://go.dev/issue/55358 x/exp/slices -->
-<!-- https://go.dev/issue/54714 x/sys/unix -->
-<!-- https://go.dev/issue/50035 https://go.dev/issue/54237 x/time/rate -->
-<!-- CL 345488 strconv optimization -->
-<!-- CL 428757 reflect deprecation, rolled back -->
-<!-- https://go.dev/issue/49390 compile -l -N is fully supported -->
-<!-- https://go.dev/issue/54619 x/tools -->
-<!-- CL 448898 reverted -->
-<!-- https://go.dev/issue/54850 x/net/http2 Transport.MaxReadFrameSize -->
-<!-- https://go.dev/issue/56054 x/net/http2 SETTINGS_HEADER_TABLE_SIZE -->
-<!-- CL 450375 reverted -->
-<!-- CL 453259 tracking deprecations in api -->
-<!-- CL 453260 tracking darwin port in api -->
-<!-- CL 453615 fix deprecation comment in archive/tar -->
-<!-- CL 453616 fix deprecation comment in archive/zip -->
-<!-- CL 453617 fix deprecation comment in encoding/csv -->
-<!-- https://go.dev/issue/54661 x/tools/go/analysis -->
-<!-- CL 423359, https://go.dev/issue/51317 arena -->
diff --git a/_content/doc/go1.21.html b/_content/doc/go1.21.html
deleted file mode 100644
index b190c71..0000000
--- a/_content/doc/go1.21.html
+++ /dev/null
@@ -1,1357 +0,0 @@
-<!--{
-	"Title": "Go 1.21 Release Notes",
-	"Path":  "/doc/go1.21"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.21</h2>
-
-<p>
-  The latest Go release, version 1.21, arrives six months after <a href="/doc/go1.20">Go 1.20</a>.
-  Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-  As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>;
-  in fact, Go 1.21 <a href="#tools">improves upon that promise</a>.
-  We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p><!-- https://go.dev/issue/57631 -->
-  Go 1.21 introduces a small change to the numbering of releases.
-  In the past, we used Go 1.<i>N</i> to refer to both the overall Go language version and release family
-  as well as the first release in that family.
-  Starting in Go 1.21, the first release is now Go 1.<i>N</i>.0.
-  Today we are releasing both the Go 1.21 language and its initial implementation, the Go 1.21.0 release.
-  These notes refer to “Go 1.21”; tools like <code>go</code> <code>version</code> will report “<code>go1.21.0</code>”
-  (until you upgrade to Go 1.21.1).
-  See “<a href="/doc/toolchain#version">Go versions</a>” in the “Go Toolchains” documentation for details
-  about the new version numbering.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  Go 1.21 adds three new built-ins to the language.
-
-  <ul>
-    <li><!-- https://go.dev/issue/59488 -->
-      The new functions <code>min</code> and <code>max</code> compute the
-      smallest (or largest, for <code>max</code>) value of a fixed number
-      of given arguments.
-      See the language spec for
-      <a href="/ref/spec#Min_and_max">details</a>.
-    </li>
-    <li><!-- https://go.dev/issue/56351 -->
-      The new function <code>clear</code> deletes all elements from a
-      map or zeroes all elements of a slice.
-      See the language spec for
-      <a href="/ref/spec#Clear">details</a>.
-    </li>
-  </ul>
-</p>
-
-<p><!-- https://go.dev/issue/57411 -->
-  Package initialization order is now specified more precisely. The
-  new algorithm is:
-  <ul>
-    <li>
-      Sort all packages by import path.
-    </li>
-    <li>Repeat until the list of packages is empty:
-      <ul>
-        <li>
-          Find the first package in the list for which all imports are
-          already initialized.
-        </li>
-        <li>
-          Initialize that package and remove it from the list.
-        </li>
-      </ul>
-    </li>
-  </ul>
-  This may change the behavior of some programs that rely on a
-  specific initialization ordering that was not expressed by explicit
-  imports. The behavior of such programs was not well defined by the
-  spec in past releases. The new rule provides an unambiguous definition.
-</p>
-
-<p>
-  Multiple improvements that increase the power and precision of type inference have been made.
-</p>
-<ul>
-  <li><!-- https://go.dev/issue/59338 -->
-    A (possibly partially instantiated generic) function may now be called with arguments that are
-    themselves (possibly partially instantiated) generic functions.
-    The compiler will attempt to infer the missing type arguments of the callee (as before) and,
-    for each argument that is a generic function that is not fully instantiated,
-    its missing type arguments (new).
-    Typical use cases are calls to generic functions operating on containers
-    (such as <a href="/pkg/slices#IndexFunc">slices.IndexFunc</a>) where a function argument
-    may also be generic, and where the type argument of the called function and its arguments
-    are inferred from the container type.
-    More generally, a generic function may now be used without explicit instantiation when
-    it is assigned to a variable or returned as a result value if the type arguments can
-    be inferred from the assignment.
-  </li>
-  <li><!-- https://go.dev/issue/60353, https://go.dev/issue/57192, https://go.dev/issue/52397, https://go.dev/issue/41176 -->
-    Type inference now also considers methods when a value is assigned to an interface:
-    type arguments for type parameters used in method signatures may be inferred from
-    the corresponding parameter types of matching methods.
-  </li>
-  <li><!-- https://go.dev/issue/51593 https://go.dev/issue/39661 -->
-    Similarly, since a type argument must implement all the methods of its corresponding constraint,
-    the methods of the type argument and constraint are matched which may lead to the inference of
-    additional type arguments.
-  </li>
-  <li><!-- https://go.dev/issue/58671 -->
-    If multiple untyped constant arguments of different kinds (such as an untyped int and
-    an untyped floating-point constant) are passed to parameters with the same (not otherwise
-    specified) type parameter type, instead of an error, now type inference determines the
-    type using the same approach as an operator with untyped constant operands.
-    This change brings the types inferred from untyped constant arguments in line with the
-    types of constant expressions.
-  </li>
-  <li><!-- https://go.dev/issue/59750 -->
-    Type inference is now precise when matching corresponding types in assignments:
-    component types (such as the elements of slices, or the parameter types in function signatures)
-    must be identical (given suitable type arguments) to match, otherwise inference fails.
-    This change produces more accurate error messages:
-    where in the past type inference may have succeeded incorrectly and lead to an invalid assignment,
-    the compiler now reports an inference error if two types can't possibly match.
-  </li>
-</ul>
-
-<p><!-- https://go.dev/issue/58650 -->
-  More generally, the description of
-  <a href="/ref/spec#Type_inference">type inference</a>
-  in the language spec has been clarified.
-  Together, all these changes make type inference more powerful and inference failures less surprising.
-</p>
-
-<!-- https://go.dev/issue/57969 -->
-<p>
-  Go 1.21 includes a preview of a language change we are considering for a future version of Go:
-  making for loop variables per-iteration instead of per-loop, to avoid accidental sharing bugs.
-  For details about how to try that language change, see <a href="https://go.dev/wiki/LoopvarExperiment">the LoopvarExperiment wiki page</a>.
-</p>
-
-<!-- https://go.dev/issue/25448 -->
-<p>
-  Go 1.21 now defines that if a goroutine is panicking and recover was called directly by a deferred
-  function, the return value of recover is guaranteed not to be nil. To ensure this, calling panic
-  with a nil interface value (or an untyped nil) causes a run-time panic of type
-  <a href="/pkg/runtime/#PanicNilError"><code>*runtime.PanicNilError</code></a>.
-</p>
-<p>
-  To support programs written for older versions of Go, nil panics can be re-enabled by setting
-  <code>GODEBUG=panicnil=1</code>.
-  This setting is enabled automatically when compiling a program whose main package
-  is in a module that declares <code>go</code> <code>1.20</code> or earlier.
-</p>
-
-<h2 id="tools">Tools</h2>
-<p>
-  Go 1.21 adds improved support for backwards compatibility and forwards compatibility
-  in the Go toolchain.
-</p>
-
-<p><!-- https://go.dev/issue/56986 -->
-  To improve backwards compatibility, Go 1.21 formalizes
-  Go's use of the GODEBUG environment variable to control
-  the default behavior for changes that are non-breaking according to the
-  <a href="/doc/go1compat">compatibility policy</a>
-  but nonetheless may cause existing programs to break.
-  (For example, programs that depend on buggy behavior may break
-  when a bug is fixed, but bug fixes are not considered breaking changes.)
-  When Go must make this kind of behavior change,
-  it now chooses between the old and new behavior based on the
-  <code>go</code> line in the workspace's <code>go.work</code> file
-  or else the main module's <code>go.mod</code> file.
-  Upgrading to a new Go toolchain but leaving the <code>go</code> line
-  set to its original (older) Go version preserves the behavior of the older
-  toolchain.
-  With this compatibility support, the latest Go toolchain should always
-  be the best, most secure, implementation of an older version of Go.
-  See “<a href="/doc/godebug">Go, Backwards Compatibility, and GODEBUG</a>” for details.
-</p>
-
-<p><!-- https://go.dev/issue/57001 -->
-  To improve forwards compatibility, Go 1.21 now reads the <code>go</code> line
-  in a <code>go.work</code> or <code>go.mod</code> file as a strict
-  minimum requirement: <code>go</code> <code>1.21.0</code> means
-  that the workspace or module cannot be used with Go 1.20 or with Go 1.21rc1.
-  This allows projects that depend on fixes made in later versions of Go
-  to ensure that they are not used with earlier versions.
-  It also gives better error reporting for projects that make use of new Go features:
-  when the problem is that a newer Go version is needed,
-  that problem is reported clearly, instead of attempting to build the code
-  and printing errors about unresolved imports or syntax errors.
-</p>
-
-<p>
-  To make these new stricter version requirements easier to manage,
-  the <code>go</code> command can now invoke not just the toolchain
-  bundled in its own release but also other Go toolchain versions found in the PATH
-  or downloaded on demand.
-  If a <code>go.mod</code> or <code>go.work</code> <code>go</code> line
-  declares a minimum requirement on a newer version of Go, the <code>go</code>
-  command will find and run that version automatically.
-  The new <code>toolchain</code> directive sets a suggested minimum toolchain to use,
-  which may be newer than the strict <code>go</code> minimum.
-  See “<a href="/doc/toolchain">Go Toolchains</a>” for details.
-</p>
-
-<h3 id="go-command">Go command</h3>
-
-<p><!-- https://go.dev/issue/58099, CL 474236 -->
-  The <code>-pgo</code> build flag now defaults to <code>-pgo=auto</code>,
-  and the restriction of specifying a single main package on the command
-  line is now removed. If a file named <code>default.pgo</code> is present
-  in the main package's directory, the <code>go</code> command will use
-  it to enable profile-guided optimization for building the corresponding
-  program.
-</p>
-
-<p>
-  The <code>-C</code> <code>dir</code> flag must now be the first
-  flag on the command-line when used.
-</p>
-
-<p><!-- https://go.dev/issue/37708, CL 463837 -->
-  The new <code>go</code> <code>test</code> option
-  <code>-fullpath</code> prints full path names in test log messages,
-  rather than just base names.
-</p>
-
-<p><!-- https://go.dev/issue/15513, CL 466397 -->
-  The <code>go</code> <code>test</code> <code>-c</code> flag now
-  supports writing test binaries for multiple packages, each to
-  <code>pkg.test</code> where <code>pkg</code> is the package name.
-  It is an error if more than one test package being compiled has a given package name.
-</p>
-
-<p><!-- https://go.dev/issue/15513, CL 466397 -->
-  The <code>go</code> <code>test</code> <code>-o</code> flag now
-  accepts a directory argument, in which case test binaries are written to that
-  directory instead of the current directory.
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p><!-- CL 490819 -->
-  In files that <code>import "C"</code>, the Go toolchain now
-  correctly reports errors for attempts to declare Go methods on C types.
-</p>
-
-<h2 id="runtime-changes">Runtime</h2>
-
-<p><!-- https://go.dev/issue/7181 -->
-  When printing very deep stacks, the runtime now prints the first 50
-  (innermost) frames followed by the bottom 50 (outermost) frames,
-  rather than just printing the first 100 frames. This makes it easier
-  to see how deeply recursive stacks started, and is especially
-  valuable for debugging stack overflows.
-</p>
-
-<p><!-- https://go.dev/issue/59960 -->
-  On Linux platforms that support transparent huge pages, the Go runtime
-  now manages which parts of the heap may be backed by huge pages more
-  explicitly. This leads to better utilization of memory: small heaps
-  should see less memory used (up to 50% in pathological cases) while
-  large heaps should see fewer broken huge pages for dense parts of the
-  heap, improving CPU usage and latency by up to 1%.
-</p>
-
-<p><!-- https://go.dev/issue/57069, https://go.dev/issue/56966 -->
-  As a result of runtime-internal garbage collection tuning,
-  applications may see up to a 40% reduction in application tail latency
-  and a small decrease in memory use. Some applications may also observe
-  a small loss in throughput.
-
-  The memory use decrease should be proportional to the loss in
-  throughput, such that the previous release's throughput/memory
-  tradeoff may be recovered (with little change to latency) by
-  increasing <code>GOGC</code> and/or <code>GOMEMLIMIT</code> slightly.
-</p>
-
-<p><!-- https://go.dev/issue/51676 -->
-  Calls from C to Go on threads created in C require some setup to prepare for
-  Go execution. On Unix platforms, this setup is now preserved across multiple
-  calls from the same thread. This significantly reduces the overhead of
-  subsequent C to Go calls from ~1-3 microseconds per call to ~100-200
-  nanoseconds per call.
-</p>
-
-<h2 id="compiler">Compiler</h2>
-
-<p>
-  Profile-guide optimization (PGO), added as a preview in Go 1.20, is now ready
-  for general use. PGO enables additional optimizations on code identified as
-  hot by profiles of production workloads. As mentioned in the
-  <a href="#go-command">Go command section</a>, PGO is enabled by default for
-  binaries that contain a <code>default.pgo</code> profile in the main
-  package directory. Performance improvements vary depending on application
-  behavior, with most programs from a representative set of Go programs seeing
-  between 2 and 7% improvement from enabling PGO. See the
-  <a href="/doc/pgo">PGO user guide</a> for detailed documentation.
-</p>
-
-<!-- https://go.dev/issue/59959 -->
-<p>
-  PGO builds can now devirtualize some interface method calls, adding a
-  concrete call to the most common callee. This enables further optimization,
-  such as inlining the callee.
-</p>
-
-<!-- CL 497455 -->
-<p>
-  Go 1.21 improves build speed by up to 6%, largely thanks to building the
-  compiler itself with PGO.
-</p>
-
-<h2 id="assembler">Assembler</h2>
-
-<!-- https://go.dev/issue/58378 -->
-<p>
-  On amd64, frameless nosplit assembly functions are no longer automatically marked as <code>NOFRAME</code>.
-  Instead, the <code>NOFRAME</code> attribute must be explicitly specified if desired,
-  which is already the behavior on other architectures supporting frame pointers.
-  With this, the runtime now maintains the frame pointers for stack transitions.
-</p>
-
-<!-- CL 476295 -->
-<p>
-  The verifier that checks for incorrect uses of <code>R15</code> when dynamic linking on amd64 has been improved.
-</p>
-
-<h2 id="linker">Linker</h2>
-
-<p><!-- https://go.dev/issue/57302, CL 461749, CL 457455 -->
-  On windows/amd64, the linker (with help from the compiler) now emits
-  SEH unwinding data by default, which improves the integration
-  of Go applications with Windows debuggers and other tools.
-</p>
-
-<!-- CL 463395, CL 461315 -->
-<p>
-  In Go 1.21 the linker (with help from the compiler) is now capable of
-  deleting dead (unreferenced) global map variables, if the number of
-  entries in the variable initializer is sufficiently large, and if the
-  initializer expressions are side-effect free.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="slog">New log/slog package</h3>
-
-<p><!-- https://go.dev/issue/59060, https://go.dev/issue/59141, https://go.dev/issue/59204, https://go.dev/issue/59280,
-        https://go.dev/issue/59282, https://go.dev/issue/59339, https://go.dev/issue/59345, https://go.dev/issue/61200,
-        CL 477295, CL 484096, CL 486376, CL 486415, CL 487855, CL 508195 -->
-  The new <a href="/pkg/log/slog">log/slog</a> package provides structured logging with levels.
-  Structured logging emits key-value pairs
-  to enable fast, accurate processing of large amounts of log data.
-  The package supports integration with popular log analysis tools and services.
-</p>
-
-<h3 id="slogtest">New testing/slogtest package</h3>
-
-<p><!-- CL 487895 -->
-  The new <a href="/pkg/testing/slogtest">testing/slogtest</a> package can help
-  to validate <a href="/pkg/log/slog#Handler">slog.Handler</a> implementations.
-</p>
-
-<h3 id="slices">New slices package</h3>
-
-<p>
-  <!-- https://go.dev/issue/45955, https://go.dev/issue/54768 -->
-  <!-- https://go.dev/issue/57348, https://go.dev/issue/57433 -->
-  <!-- https://go.dev/issue/58565, https://go.dev/issue/60091 -->
-  <!-- https://go.dev/issue/60546 -->
-  <!-- CL 467417, CL 468855, CL 483175, CL 496078, CL 498175, CL 502955 -->
-  The new <a href="/pkg/slices">slices</a> package provides many common
-  operations on slices, using generic functions that work with slices
-  of any element type.
-</p>
-
-<h3 id="maps">New maps package</h3>
-
-<p><!-- https://go.dev/issue/57436, CL 464343 -->
-  The new <a href="/pkg/maps/">maps</a> package provides several
-  common operations on maps, using generic functions that work with
-  maps of any key or element type.
-</p>
-
-<h3 id="cmp">New cmp package</h3>
-
-<p><!-- https://go.dev/issue/59488, CL 496356 -->
-  The new <a href="/pkg/cmp/">cmp</a> package defines the type
-  constraint <a href="/pkg/cmp/#Ordered"><code>Ordered</code></a> and
-  two new generic functions
-  <a href="/pkg/cmp/#Less"><code>Less</code></a>
-  and <a href="/pkg/cmp/#Compare"><code>Compare</code></a> that are
-  useful with <a href="/ref/spec/#Comparison_operators">ordered
-  types</a>.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-  There are also various performance improvements, not enumerated here.
-</p>
-
-<dl id="archive/tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/54451, CL 491175 -->
-      The implementation of the
-      <a href="/pkg/io/fs/#FileInfo"><code>io/fs.FileInfo</code></a>
-      interface returned by
-      <a href="/pkg/archive/tar/#Header.FileInfo"><code>Header.FileInfo</code></a>
-      now implements a <code>String</code> method that calls
-      <a href="/pkg/io/fs/#FormatFileInfo"><code>io/fs.FormatFileInfo</code></a>.
-    </p>
-  </dd>
-</dl><!-- archive/tar -->
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/54451, CL 491175 -->
-      The implementation of the
-      <a href="/pkg/io/fs/#FileInfo"><code>io/fs.FileInfo</code></a>
-      interface returned by
-      <a href="/pkg/archive/zip/#FileHeader.FileInfo"><code>FileHeader.FileInfo</code></a>
-      now implements a <code>String</code> method that calls
-      <a href="/pkg/io/fs/#FormatFileInfo"><code>io/fs.FormatFileInfo</code></a>.
-    </p>
-
-    <p><!-- https://go.dev/issue/54451, CL 491175 -->
-      The implementation of the
-      <a href="/pkg/io/fs/#DirEntry"><code>io/fs.DirEntry</code></a>
-      interface returned by the
-      <a href="/pkg/io/fs/#ReadDirFile.ReadDir"><code>io/fs.ReadDirFile.ReadDir</code></a>
-      method of the
-      <a href="/pkg/io/fs/#File"><code>io/fs.File</code></a>
-      returned by
-      <a href="/pkg/archive/zip/#Reader.Open"><code>Reader.Open</code></a>
-      now implements a <code>String</code> method that calls
-      <a href="/pkg/io/fs/#FormatDirEntry"><code>io/fs.FormatDirEntry</code></a>.
-    </p>
-  </dd>
-</dl><!-- archive/zip -->
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53685, CL 474635 -->
-      The <a href="/pkg/bytes/#Buffer"><code>Buffer</code></a> type
-      has two new methods:
-      <a href="/pkg/bytes/#Buffer.Available"><code>Available</code></a>
-      and <a href="/pkg/bytes/#Buffer.AvailableBuffer"><code>AvailableBuffer</code></a>.
-      These may be used along with the
-      <a href="/pkg/bytes/#Buffer.Write"><code>Write</code></a>
-      method to append directly to the <code>Buffer</code>.
-    </p>
-  </dd>
-</dl><!-- bytes -->
-
-<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/40221, CL 479918 -->
-      The new <a href="/pkg/context/#WithoutCancel"><code>WithoutCancel</code></a>
-      function returns a copy of a context that is not canceled when the original
-      context is canceled.
-    </p>
-    <p><!-- https://go.dev/issue/56661, CL 449318 -->
-      The new <a href="/pkg/context/#WithDeadlineCause"><code>WithDeadlineCause</code></a>
-      and <a href="/pkg/context/#WithTimeoutCause"><code>WithTimeoutCause</code></a>
-      functions provide a way to set a context cancellation cause when a deadline or
-      timer expires. The cause may be retrieved with the
-      <a href="/pkg/context/#Cause"><code>Cause</code></a> function.
-    </p>
-    <p><!-- https://go.dev/issue/57928, CL 482695 -->
-      The new <a href="/pkg/context/#AfterFunc"><code>AfterFunc</code></a>
-      function registers a function to run after a context has been cancelled.
-    </p>
-
-    <p><!-- CL 455455 -->
-      An optimization means that the results of calling
-      <a href="/pkg/context/#Background"><code>Background</code></a>
-      and <a href="/pkg/context/#TODO"><code>TODO</code></a> and
-      converting them to a shared type can be considered equal.
-      In previous releases they were always different.  Comparing
-      <a href="/pkg/context/#Context"><code>Context</code></a> values
-      for equality has never been well-defined, so this is not
-      considered to be an incompatible change.
-    </p>
-  </dd>
-</dl>
-
-
-<dl id="crypto/ecdsa"><dt><a href="/pkg/crypto/ecdsa/">crypto/ecdsa</a></dt>
-  <dd>
-    <p><!-- CL 492955 -->
-      <a href="/pkg/crypto/ecdsa/#PublicKey.Equal"><code>PublicKey.Equal</code></a> and
-      <a href="/pkg/crypto/ecdsa/#PrivateKey.Equal"><code>PrivateKey.Equal</code></a>
-      now execute in constant time.
-    </p>
-  </dd>
-</dl><!-- crypto/ecdsa -->
-
-<dl id="crypto/elliptic"><dt><a href="/pkg/crypto/elliptic/">crypto/elliptic</a></dt>
-  <dd>
-    <p><!-- CL 459977 -->
-      All of the <a href="/pkg/crypto/elliptic/#Curve"><code>Curve</code></a> methods have been deprecated, along with <a href="/pkg/crypto/elliptic/#GenerateKey"><code>GenerateKey</code></a>, <a href="/pkg/crypto/elliptic/#Marshal"><code>Marshal</code></a>, and <a href="/pkg/crypto/elliptic/#Unmarshal"><code>Unmarshal</code></a>. For ECDH operations, the new <a href="/pkg/crypto/ecdh/"><code>crypto/ecdh</code></a> package should be used instead. For lower-level operations, use third-party modules such as <a href="https://pkg.go.dev/filippo.io/nistec">filippo.io/nistec</a>.
-    </p>
-  </dd>
-</dl><!-- crypto/elliptic -->
-
-<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
-  <dd>
-    <p><!-- CL 463123 -->
-      The <a href="/pkg/crypto/rand/"><code>crypto/rand</code></a> package now uses the <code>getrandom</code> system call on NetBSD 10.0 and later.
-    </p>
-  </dd>
-</dl><!-- crypto/rand -->
-
-<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
-  <dd>
-    <p><!-- CL 471259, CL 492935 -->
-      The performance of private RSA operations (decryption and signing) is now better than Go 1.19 for <code>GOARCH=amd64</code> and <code>GOARCH=arm64</code>. It had regressed in Go 1.20.
-    </p>
-    <p>
-      Due to the addition of private fields to <a href="/pkg/crypto/rsa/#PrecomputedValues"><code>PrecomputedValues</code></a>, <a href="/pkg/crypto/rsa/#PrivateKey.Precompute"><code>PrivateKey.Precompute</code></a> must be called for optimal performance even if deserializing (for example from JSON) a previously-precomputed private key.
-    </p>
-    <p><!-- CL 492955 -->
-      <a href="/pkg/crypto/rsa/#PublicKey.Equal"><code>PublicKey.Equal</code></a> and
-      <a href="/pkg/crypto/rsa/#PrivateKey.Equal"><code>PrivateKey.Equal</code></a>
-      now execute in constant time.
-    </p>
-    <p><!-- https://go.dev/issue/56921, CL 459976 -->
-      The <a href="/pkg/crypto/rsa/#GenerateMultiPrimeKey"><code>GenerateMultiPrimeKey</code></a> function and the <a href="/pkg/crypto/rsa/#PrecomputedValues.CRTValues"><code>PrecomputedValues.CRTValues</code></a> field have been deprecated. <a href="/pkg/crypto/rsa/#PrecomputedValues.CRTValues"><code>PrecomputedValues.CRTValues</code></a> will still be populated when <a href="/pkg/crypto/rsa/#PrivateKey.Precompute"><code>PrivateKey.Precompute</code></a> is called, but the values will not be used during decryption operations.
-    </p>
-  </dd>
-</dl><!-- crypto/rsa -->
-
-<!-- CL 483815 reverted -->
-
-<dl id="crypto/sha256"><dt><a href="/pkg/crypto/sha256/">crypto/sha256</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/50543, CL 408795 -->
-      SHA-224 and SHA-256 operations now use native instructions when available when <code>GOARCH=amd64</code>, providing a performance improvement on the order of 3-4x.
-    </p>
-  </dd>
-</dl><!-- crypto/sha256 -->
-
-<!-- CL 481478 reverted -->
-<!-- CL 483816 reverted -->
-
-<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p><!-- CL 497895 -->
-      Servers now skip verifying client certificates (including not running
-      <a href="/pkg/crypto/tls/#Config.VerifyPeerCertificate"><code>Config.VerifyPeerCertificate</code></a>)
-      for resumed connections, besides checking the expiration time. This makes
-      session tickets larger when client certificates are in use. Clients were
-      already skipping verification on resumption, but now check the expiration
-      time even if <a href="/pkg/crypto/tls/#Config.InsecureSkipVerify"><code>Config.InsecureSkipVerify</code></a>
-      is set.
-    </p>
-
-    <p><!-- https://go.dev/issue/60105, CL 496818, CL 496820, CL 496822, CL 496821, CL 501675 -->
-      Applications can now control the content of session tickets.
-      <ul>
-        <li>
-          The new <a href="/pkg/crypto/tls/#SessionState"><code>SessionState</code></a> type
-          describes a resumable session.
-        </li>
-        <li>
-          The <a href="/pkg/crypto/tls/#SessionState.Bytes"><code>SessionState.Bytes</code></a>
-          method and <a href="/pkg/crypto/tls/#ParseSessionState"><code>ParseSessionState</code></a>
-          function serialize and deserialize a <code>SessionState</code>.
-        </li>
-        <li>
-          The <a href="/pkg/crypto/tls/#Config.WrapSession"><code>Config.WrapSession</code></a> and
-          <a href="/pkg/crypto/tls/#Config.UnwrapSession"><code>Config.UnwrapSession</code></a>
-          hooks convert a <code>SessionState</code> to and from a ticket on the server side.
-        </li>
-        <li>
-          The <a href="/pkg/crypto/tls/#Config.EncryptTicket"><code>Config.EncryptTicket</code></a>
-          and <a href="/pkg/crypto/tls/#Config.DecryptTicket"><code>Config.DecryptTicket</code></a>
-          methods provide a default implementation of <code>WrapSession</code> and
-          <code>UnwrapSession</code>.
-        </li>
-        <li>
-          The <a href="/pkg/crypto/tls/#ClientSessionState.ResumptionState"><code>ClientSessionState.ResumptionState</code></a> method and
-          <a href="/pkg/crypto/tls/#NewResumptionState"><code>NewResumptionState</code></a> function
-          may be used by a <code>ClientSessionCache</code> implementation to store and
-          resume sessions on the client side.
-        </li>
-      </ul>
-    </p>
-
-    <p><!-- CL 496817 -->
-      To reduce the potential for session tickets to be used as a tracking
-      mechanism across connections, the server now issues new tickets on every
-      resumption (if they are supported and not disabled) and tickets don't bear
-      an identifier for the key that encrypted them anymore. If passing a large
-      number of keys to <a href="/pkg/crypto/tls/#Conn.SetSessionTicketKeys"><code>Conn.SetSessionTicketKeys</code></a>,
-      this might lead to a noticeable performance cost.
-    </p>
-
-    <p><!-- CL 497376 -->
-      Both clients and servers now implement the Extended Master Secret extension (RFC 7627).
-      The deprecation of <a href="/pkg/crypto/tls/#ConnectionState.TLSUnique"><code>ConnectionState.TLSUnique</code></a>
-      has been reverted, and is now set for resumed connections that support Extended Master Secret.
-    </p>
-
-    <p><!-- https://go.dev/issue/44886, https://go.dev/issue/60107, CL 493655, CL 496995, CL 514997 -->
-      The new <a href="/pkg/crypto/tls/#QUICConn"><code>QUICConn</code></a> type
-      provides support for QUIC implementations, including 0-RTT support. Note
-      that this is not itself a QUIC implementation, and 0-RTT is still not
-      supported in TLS.
-    </p>
-
-    <p><!-- https://go.dev/issue/46308, CL 497377 -->
-      The new <a href="/pkg/crypto/tls/#VersionName"><code>VersionName</code></a> function
-      returns the name for a TLS version number.
-    </p>
-
-    <p><!-- https://go.dev/issue/52113, CL 410496 -->
-      The TLS alert codes sent from the server for client authentication failures have
-      been improved. Previously, these failures always resulted in a "bad certificate" alert.
-      Now, certain failures will result in more appropriate alert codes,
-      as defined by RFC 5246 and RFC 8446:
-      <ul>
-        <li>
-          For TLS 1.3 connections, if the server is configured to require client authentication using
-          <a href="/pkg/crypto/tls/#RequireAnyClientCert"></code>RequireAnyClientCert</code></a> or
-          <a href="/pkg/crypto/tls/#RequireAndVerifyClientCert"></code>RequireAndVerifyClientCert</code></a>,
-          and the client does not provide any certificate, the server will now return the "certificate required" alert.
-        </li>
-        <li>
-          If the client provides a certificate that is not signed by the set of trusted certificate authorities
-          configured on the server, the server will return the "unknown certificate authority" alert.
-        </li>
-        <li>
-          If the client provides a certificate that is either expired or not yet valid,
-          the server will return the "expired certificate" alert.
-        </li>
-        <li>
-          In all other scenarios related to client authentication failures, the server still returns "bad certificate".
-        </li>
-      </ul>
-    </p>
-  </dd>
-</dl><!-- crypto/tls -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53573, CL 468875 -->
-      <a href="/pkg/crypto/x509/#RevocationList.RevokedCertificates"><code>RevocationList.RevokedCertificates</code></a> has been deprecated and replaced with the new <a href="/pkg/crypto/x509/#RevocationList.RevokedCertificateEntries"><code>RevokedCertificateEntries</code></a> field, which is a slice of <a href="/pkg/crypto/x509/#RevocationListEntry"><code>RevocationListEntry</code></a>. <a href="/pkg/crypto/x509/#RevocationListEntry"><code>RevocationListEntry</code></a> contains all of the fields in <a href="/pkg/crypto/x509/pkix#RevokedCertificate"><code>pkix.RevokedCertificate</code></a>, as well as the revocation reason code.
-    </p>
-
-    <p><!-- CL 478216 -->
-      Name constraints are now correctly enforced on non-leaf certificates, and
-      not on the certificates where they are expressed.
-    </p>
-  </dd>
-</dl><!-- crypto/x509 -->
-
-<dl id="debug/elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/56892, CL 452617 -->
-      The new
-      <a href="/pkg/debug/elf/#File.DynValue"><code>File.DynValue</code></a>
-      method may be used to retrieve the numeric values listed with a
-      given dynamic tag.
-    </p>
-
-    <p><!-- https://go.dev/issue/56887, CL 452496 -->
-      The constant flags permitted in a <code>DT_FLAGS_1</code>
-      dynamic tag are now defined with type
-      <a href="/pkg/debug/elf/#DynFlag1"><code>DynFlag1</code></a>. These
-      tags have names starting with <code>DF_1</code>.
-    </p>
-
-    <p><!-- CL 473256 -->
-      The package now defines the constant
-      <a href="/pkg/debug/elf/#COMPRESS_ZSTD"><code>COMPRESS_ZSTD</code></a>.
-    </p>
-
-    <p><!-- https://go.dev/issue/60348, CL 496918 -->
-      The package now defines the constant
-      <a href="/pkg/debug/elf/#R_PPC64_REL24_P9NOTOC"><code>R_PPC64_REL24_P9NOTOC</code></a>.
-    </p>
-  </dd>
-</dl><!-- debug/elf -->
-
-<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
-  <dd>
-    <p><!-- CL 488475 -->
-      Attempts to read from a section containing uninitialized data
-      using
-      <a href="/pkg/debug/pe/#Section.Data"><code>Section.Data</code></a>
-      or the reader returned by <a href="/pkg/debug/pe/#Section.Open"><code>Section.Open</code></a>
-      now return an error.
-    </p>
-  </dd>
-</dl><!-- debug/pe -->
-
-<dl id="embed"><dt><a href="/pkg/embed/">embed</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/57803, CL 483235 -->
-      The <a href="/pkg/io/fs/#File"><code>io/fs.File</code></a>
-      returned by
-      <a href="/pkg/embed/#FS.Open"><code>FS.Open</code></a> now
-      has a <code>ReadAt</code> method that
-      implements <a href="/pkg/io/#ReaderAt"><code>io.ReaderAt</code></a>.
-    </p>
-
-    <p><!-- https://go.dev/issue/54451, CL 491175 -->
-      Calling <code><a href="/pkg/embed/FS.Open">FS.Open</a>.<a href="/pkg/io/fs/#File.Stat">Stat</a></code>
-      will return a type that now implements a <code>String</code>
-      method that calls
-      <a href="/pkg/io/fs/#FormatFileInfo"><code>io/fs.FormatFileInfo</code></a>.
-    </p>
-  </dd>
-</dl><!-- embed -->
-
-<dl id="encoding/binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/57237, CL 463218, CL 463985 -->
-      The new
-      <a href="/pkg/encoding/binary/#NativeEndian"><code>NativeEndian</code></a>
-      variable may be used to convert between byte slices and integers
-      using the current machine's native endianness.
-    </p>
-  </dd>
-</dl><!-- encoding/binary -->
-
-<dl id="errors"><dt><a href="/pkg/errors/">errors</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/41198, CL 473935 -->
-      The new
-      <a href="/pkg/errors/#ErrUnsupported"><code>ErrUnsupported</code></a>
-      error provides a standardized way to indicate that a requested
-      operation may not be performed because it is unsupported.
-      For example, a call to
-      <a href="/pkg/os/#Link"><code>os.Link</code></a> when using a
-      file system that does not support hard links.
-    </p>
-  </dd>
-</dl><!-- errors -->
-
-<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/53747, CL 476015 -->
-      The new <a href="/pkg/flag/#BoolFunc"><code>BoolFunc</code></a>
-      function and
-      <a href="/pkg/flag/#FlagSet.BoolFunc"><code>FlagSet.BoolFunc</code></a>
-      method define a flag that does not require an argument and calls
-      a function when the flag is used. This is similar to
-      <a href="/pkg/flag/#Func"><code>Func</code></a> but for a
-      boolean flag.
-    </p>
-
-    <p><!-- CL 480215 -->
-      A flag definition
-      (via <a href="/pkg/flag/#Bool"><code>Bool</code></a>,
-      <a href="/pkg/flag/#BoolVar"><code>BoolVar</code></a>,
-      <a href="/pkg/flag/#Int"><code>Int</code></a>,
-      <a href="/pkg/flag/#IntVar"><code>IntVar</code></a>, etc.)
-      will panic if <a href="/pkg/flag/#Set"><code>Set</code></a> has
-      already been called on a flag with the same name. This change is
-      intended to detect cases where <a href="#language">changes in
-      initialization order</a> cause flag operations to occur in a
-      different order than expected. In many cases the fix to this
-      problem is to introduce a explicit package dependence to
-      correctly order the definition before any
-      <a href="/pkg/flag/#Set"><code>Set</code></a> operations.
-    </p>
-  </dd>
-</dl><!-- flag -->
-
-<dl id="go/ast"><dt><a href="/pkg/go/ast/">go/ast</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/28089, CL 487935 -->
-      The new <a href="/pkg/go/ast/#IsGenerated"><code>IsGenerated</code></a> predicate
-      reports whether a file syntax tree contains the
-      <a href="https://go.dev/s/generatedcode">special comment</a>
-      that conventionally indicates that the file was generated by a tool.
-    </p>
-  </dd>
-
-  <dd>
-    <p><!-- https://go.dev/issue/59033, CL 476276 -->
-      The new
-      <a href="/pkg/go/ast/#File.GoVersion"><code>File.GoVersion</code></a>
-      field records the minimum Go version required by
-      any <code>//go:build</code> or <code>// +build</code>
-      directives.
-    </p>
-  </dd>
-</dl><!-- go/ast -->
-
-<dl id="go/build"><dt><a href="/pkg/go/build/">go/build</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/56986, CL 453603 -->
-      The package now parses build directives (comments that start
-      with <code>//go:</code>) in file headers (before
-      the <code>package</code> declaration). These directives are
-      available in the new
-      <a href="/pkg/go/build#Package"><code>Package</code></a> fields
-      <a href="/pkg/go/build#Package.Directives"><code>Directives</code></a>,
-      <a href="/pkg/go/build#Package.TestDirectives"><code>TestDirectives</code></a>,
-      and
-      <a href="/pkg/go/build#Package.XTestDirectives"><code>XTestDirectives</code></a>.
-    </p>
-  </dd>
-</dl><!-- go/build -->
-
-<dl id="go/build/constraint"><dt><a href="/pkg/go/build/constraint/">go/build/constraint</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/59033, CL 476275 -->
-      The new
-      <a href="/pkg/go/build/constraint/#GoVersion"><code>GoVersion</code></a>
-      function returns the minimum Go version implied by a build
-      expression.
-    </p>
-  </dd>
-</dl><!-- go/build/constraint -->
-
-<dl id="go/token"><dt><a href="/pkg/go/token/">go/token</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/57708, CL 464515 -->
-      The new <a href="/pkg/go/token/#File.Lines"><code>File.Lines</code></a> method
-      returns the file's line-number table in the same form as accepted by
-      <code>File.SetLines</code>.
-    </p>
-  </dd>
-</dl><!-- go/token -->
-
-<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/61175, CL 507975 -->
-      The new <a href="/pkg/go/types/#Package.GoVersion"><code>Package.GoVersion</code></a>
-      method returns the Go language version used to check the package.
-    </p>
-  </dd>
-</dl><!-- go/types -->
-
-<dl id="hash/maphash"><dt><a href="/pkg/hash/maphash/">hash/maphash</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/47342, CL 468795 -->
-      The <code>hash/maphash</code> package now has a pure Go implementation, selectable with the <code>purego</code> build tag.
-    </p>
-  </dd>
-</dl><!-- hash/maphash -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/59584, CL 496395 -->
-      The new error
-      <a href="/pkg/html/template/#ErrJSTemplate"><code>ErrJSTemplate</code></a>
-      is returned when an action appears in a JavaScript template
-      literal. Previously an unexported error was returned.
-    </p>
-  </dd>
-</dl><!-- html/template -->
-
-<dl id="io/fs"><dt><a href="/pkg/io/fs/">io/fs</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/54451, CL 489555 -->
-      The new
-      <a href="/pkg/io/fs/#FormatFileInfo"><code>FormatFileInfo</code></a>
-      function returns a formatted version of a
-      <a href="/pkg/io/fs/#FileInfo"><code>FileInfo</code></a>.
-      The new
-      <a href="/pkg/io/fs/#FormatDirEntry"><code>FormatDirEntry</code></a>
-      function returns a formatted version of a
-      <a href="/pkg/io/fs/#FileInfo"><code>DirEntry</code></a>.
-      The implementation of
-      <a href="/pkg/io/fs/#DirEntry"><code>DirEntry</code></a>
-      returned by
-      <a href="/pkg/io/fs/#ReadDir"><code>ReadDir</code></a> now
-      implements a <code>String</code> method that calls
-      <a href="/pkg/io/fs/#FormatDirEntry"><code>FormatDirEntry</code></a>,
-      and the same is true for
-      the <a href="/pkg/io/fs/#DirEntry"><code>DirEntry</code></a>
-      value passed to
-      <a href="/pkg/io/fs/#WalkDirFunc"><code>WalkDirFunc</code></a>.
-    </p>
-  </dd>
-</dl><!-- io/fs -->
-
-<!-- https://go.dev/issue/56491 rolled back by https://go.dev/issue/60519 -->
-<!-- CL 459435 reverted by CL 467255 -->
-<!-- CL 467515 reverted by CL 499416 -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/56984, CL 453115, CL 500116 -->
-      The new <a href="/pkg/math/big/#Int.Float64"><code>Int.Float64</code></a>
-      method returns the nearest floating-point value to a
-      multi-precision integer, along with an indication of any
-      rounding that occurred.
-    </p>
-  </dd>
-</dl><!-- math/big -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p>
-      <!-- https://go.dev/issue/59166, https://go.dev/issue/56539 -->
-      <!-- CL 471136, CL 471137, CL 471140 -->
-      On Linux, the <a href="/pkg/net/">net</a> package can now use
-      Multipath TCP when the kernel supports it. It is not used by
-      default. To use Multipath TCP when available on a client, call
-      the
-      <a href="/pkg/net/#Dialer.SetMultipathTCP"><code>Dialer.SetMultipathTCP</code></a>
-      method before calling the
-      <a href="/pkg/net/#Dialer.Dial"><code>Dialer.Dial</code></a> or
-      <a href="/pkg/net/#Dialer.DialContext"><code>Dialer.DialContext</code></a>
-      methods. To use Multipath TCP when available on a server, call
-      the
-      <a href="/pkg/net/#ListenConfig.SetMultipathTCP"><code>ListenConfig.SetMultipathTCP</code></a>
-      method before calling the
-      <a href="/pkg/net/#ListenConfig.Listen"><code>ListenConfig.Listen</code></a>
-      method. Specify the network as <code>"tcp"</code> or
-      <code>"tcp4"</code> or <code>"tcp6"</code> as usual. If
-      Multipath TCP is not supported by the kernel or the remote host,
-      the connection will silently fall back to TCP. To test whether a
-      particular connection is using Multipath TCP, use the
-      <a href="/pkg/net/#TCPConn.MultipathTCP"><code>TCPConn.MultipathTCP</code></a>
-      method.
-    </p>
-    <p>
-      In a future Go release we may enable Multipath TCP by default on
-      systems that support it.
-    </p>
-  </dd>
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-    <p><!-- CL 472636 -->
-      The new <a href="/pkg/net/http#ResponseController.EnableFullDuplex"><code>ResponseController.EnableFullDuplex</code></a>
-      method allows server handlers to concurrently read from an HTTP/1
-      request body while writing the response. Normally, the HTTP/1 server
-      automatically consumes any remaining request body before starting to
-      write the response, to avoid deadlocking clients which attempt to
-      write a complete request before reading the response. The
-      <code>EnableFullDuplex</code> method disables this behavior.
-    </p>
-
-    <p><!-- https://go.dev/issue/44855, CL 382117 -->
-      The new <a href="/pkg/net/http/#ErrSchemeMismatch"><code>ErrSchemeMismatch</code></a> error is returned by <a href="/pkg/net/http/#Client"><code>Client</code></a> and <a href="/pkg/net/http/#Transport"><code>Transport</code></a> when the server responds to an HTTPS request with an HTTP response.
-    </p>
-
-    <p><!-- CL 494122 -->
-      The <a href="/pkg/net/http/">net/http</a> package now supports
-      <a href="/pkg/errors/#ErrUnsupported"><code>errors.ErrUnsupported</code></a>,
-      in that the expression
-      <code>errors.Is(http.ErrNotSupported, errors.ErrUnsupported)</code>
-      will return true.
-    </p>
-  </dd>
-</dl><!-- net/http -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/32558, CL 219638 -->
-      Programs may now pass an empty <code>time.Time</code> value to
-      the <a href="/pkg/os/#Chtimes"><code>Chtimes</code></a> function
-      to leave either the access time or the modification time unchanged.
-    </p>
-
-    <p><!-- CL 480135 -->
-      On Windows the
-      <a href="/pkg/os#File.Chdir"><code>File.Chdir</code></a> method
-      now changes the current directory to the file, rather than
-      always returning an error.
-    </p>
-
-    <p><!-- CL 495079 -->
-      On Unix systems, if a non-blocking descriptor is passed
-      to <a href="/pkg/os/#NewFile"><code>NewFile</code></a>, calling
-      the <a href="/pkg/os/#File.Fd"><code>File.Fd</code></a> method
-      will now return a non-blocking descriptor. Previously the
-      descriptor was converted to blocking mode.
-    </p>
-
-    <p><!-- CL 477215 -->
-      On Windows calling
-      <a href="/pkg/os/#Truncate"><code>Truncate</code></a> on a
-      non-existent file used to create an empty file. It now returns
-      an error indicating that the file does not exist.
-    </p>
-
-    <p><!-- https://go.dev/issue/56899, CL 463219 -->
-      On Windows calling
-      <a href="/pkg/os/#TempDir"><code>TempDir</code></a> now uses
-      GetTempPath2W when available, instead of GetTempPathW. The
-      new behavior is a security hardening measure that prevents
-      temporary files created by processes running as SYSTEM to
-      be accessed by non-SYSTEM processes.
-    </p>
-
-    <p><!-- CL 493036 -->
-      On Windows the os package now supports working with files whose
-      names, stored as UTF-16, can't be represented as valid UTF-8.
-    </p>
-
-    <p><!-- CL 463177 -->
-      On Windows <a href="/pkg/os/#Lstat"><code>Lstat</code></a> now resolves
-      symbolic links for paths ending with a path separator, consistent with its
-      behavior on POSIX platforms.
-    </p>
-
-    <p><!-- https://go.dev/issue/54451, CL 491175 -->
-      The implementation of the
-      <a href="/pkg/io/fs/#DirEntry"><code>io/fs.DirEntry</code></a>
-      interface returned by the
-      <a href="/pkg/os/#ReadDir"><code>ReadDir</code></a> function and
-      the <a href="/pkg/os/#File.ReadDir"><code>File.ReadDir</code></a>
-      method now implements a <code>String</code> method that calls
-      <a href="/pkg/io/fs/#FormatDirEntry"><code>io/fs.FormatDirEntry</code></a>.
-    </p>
-
-    <p><!-- https://go.dev/issue/53761, CL 416775, CL 498015-->
-    The implementation of the
-    <a href="/pkg/io/fs/#FS"><code>io/fs.FS</code></a> interface returned by
-    the <a href="/pkg/os/#DirFS"><code>DirFS</code></a> function now implements
-    the <a href="/pkg/io/fs/#ReadFileFS"><code>io/fs.ReadFileFS</code></a> and
-    the <a href="/pkg/io/fs/#ReadDirFS"><code>io/fs.ReadDirFS</code></a>
-    interfaces.
-    </p>
-  </dd>
-</dl><!-- os -->
-
-<dl id="path/filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
-  <dd>
-    <p>
-      The implementation of the
-      <a href="/pkg/io/fs/#DirEntry"><code>io/fs.DirEntry</code></a>
-      interface passed to the function argument of
-      <a href="/pkg/path/filepath/#WalkDir"><code>WalkDir</code></a>
-      now implements a <code>String</code> method that calls
-      <a href="/pkg/io/fs/#FormatDirEntry"><code>io/fs.FormatDirEntry</code></a>.
-    </p>
-  </dd>
-</dl><!-- path/filepath -->
-
-<!-- CL 459455 reverted -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 408826, CL 413474 -->
-      In Go 1.21, <a href="/pkg/reflect/#ValueOf"><code>ValueOf</code></a>
-      no longer forces its argument to be allocated on the heap, allowing
-      a <code>Value</code>'s content to be allocated on the stack. Most
-      operations on a <code>Value</code> also allow the underlying value
-      to be stack allocated.
-    </p>
-
-    <p><!-- https://go.dev/issue/55002 -->
-      The new <a href="/pkg/reflect/#Value"><code>Value</code></a>
-      method <a href="/pkg/reflect/#Value.Clear"><code>Value.Clear</code></a>
-      clears the contents of a map or zeros the contents of a slice.
-      This corresponds to the new <code>clear</code> built-in
-      <a href="#language">added to the language</a>.
-    </p>
-
-    <p><!-- https://go.dev/issue/56906, CL 452762 -->
-      The <a href="/pkg/reflect/#SliceHeader"><code>SliceHeader</code></a>
-      and <a href="/pkg/reflect/#StringHeader"><code>StringHeader</code></a>
-      types are now deprecated. In new code
-      prefer <a href="/pkg/unsafe/#Slice"><code>unsafe.Slice</code></a>,
-      <a href="/pkg/unsafe/#SliceData"><code>unsafe.SliceData</code></a>,
-      <a href="/pkg/unsafe/#String"><code>unsafe.String</code></a>,
-      or <a href="/pkg/unsafe/#StringData"><code>unsafe.StringData</code></a>.
-    </p>
-  </dd>
-</dl><!-- reflect -->
-
-<dl id="regexp"><dt><a href="/pkg/regexp/">regexp</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/46159, CL 479401 -->
-      <a href="/pkg/regexp#Regexp"><code>Regexp</code></a> now defines
-      <a href="/pkg/regexp#Regexp.MarshalText"><code>MarshalText</code></a>
-      and <a href="/pkg/regexp#Regexp.UnmarshalText"><code>UnmarshalText</code></a>
-      methods. These implement
-      <a href="/pkg/encoding#TextMarshaler"><code>encoding.TextMarshaler</code></a>
-      and
-      <a href="/pkg/encoding#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>
-      and will be used by packages such as
-      <a href="/pkg/encoding/json">encoding/json</a>.
-    </p>
-  </dd>
-</dl><!-- regexp -->
-
-<dl id="runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/38651, CL 435337 -->
-      Textual stack traces produced by Go programs, such as those
-      produced when crashing, calling <code>runtime.Stack</code>, or
-      collecting a goroutine profile with <code>debug=2</code>, now
-      include the IDs of the goroutines that created each goroutine in
-      the stack trace.
-    </p>
-
-    <p><!-- https://go.dev/issue/57441, CL 474915 -->
-      Crashing Go applications can now opt-in to Windows Error Reporting (WER) by setting the environment variable
-      <code>GOTRACEBACK=wer</code> or calling <a href="/pkg/runtime/debug/#SetTraceback"><code>debug.SetTraceback("wer")</code></a>
-      before the crash. Other than enabling WER, the runtime will behave as with <code>GOTRACEBACK=crash</code>.
-      On non-Windows systems, <code>GOTRACEBACK=wer</code> is ignored.
-    </p>
-
-    <p><!-- CL 447778 -->
-      <code>GODEBUG=cgocheck=2</code>, a thorough checker of cgo pointer passing rules,
-      is no longer available as a <a href="/pkg/runtime#hdr-Environment_Variables">debug option</a>.
-      Instead, it is available as an experiment using <code>GOEXPERIMENT=cgocheck2</code>.
-      In particular this means that this mode has to be selected at build time instead of startup time.
-    </p>
-
-    <p>
-      <code>GODEBUG=cgocheck=1</code> is still available (and is still the default).
-    </p>
-
-    <p><!-- https://go.dev/issue/46787, CL 367296 -->
-      A new type <code>Pinner</code> has been added to the runtime
-      package. <code>Pinner</code>s may be used to "pin" Go memory
-      such that it may be used more freely by non-Go code. For instance,
-      passing Go values that reference pinned Go memory to C code is
-      now allowed. Previously, passing any such nested reference was
-      disallowed by the
-      <a href="https://pkg.go.dev/cmd/cgo#hdr-Passing_pointers">cgo pointer passing rules.</a>
-
-      See <a href="/pkg/runtime#Pinner">the docs</a> for more details.
-    </p>
-
-    <!-- CL 472195 no release note needed -->
-  </dd>
-</dl><!-- runtime -->
-
-<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/56857, CL 497315 -->
-      A few previously-internal GC metrics, such as live heap size, are
-      now available.
-
-      <code>GOGC</code> and <code>GOMEMLIMIT</code> are also now
-      available as metrics.
-    </p>
-  </dd>
-</dl><!-- runtime/metrics -->
-
-<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/16638 -->
-      Collecting traces on amd64 and arm64 now incurs a substantially
-      smaller CPU cost: up to a 10x improvement over the previous release.
-    </p>
-
-    <p><!-- CL 494495 -->
-      Traces now contain explicit stop-the-world events for every reason
-      the Go runtime might stop-the-world, not just garbage collection.
-    </p>
-  </dd>
-</dl><!-- runtime/trace -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/56102, CL 451356 -->
-      The new <a href="/pkg/sync/#OnceFunc"><code>OnceFunc</code></a>,
-      <a href="/pkg/sync/#OnceValue"><code>OnceValue</code></a>, and
-      <a href="/pkg/sync/#OnceValues"><code>OnceValues</code></a>
-      functions capture a common use of <a href="/pkg/sync/#Once">Once</a> to
-      lazily initialize a value on first use.
-    </p>
-  </dd>
-</dl>
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 480135 -->
-      On Windows the
-      <a href="/pkg/syscall#Fchdir"><code>Fchdir</code></a> function
-      now changes the current directory to its argument, rather than
-      always returning an error.
-    </p>
-
-    <p><!-- https://go.dev/issue/46259, CL 458335 -->
-      On FreeBSD
-      <a href="/pkg/syscall#SysProcAttr"><code>SysProcAttr</code></a>
-      has a new field <code>Jail</code> that may be used to put the
-      newly created process in a jailed environment.
-    </p>
-
-    <p><!-- CL 493036 -->
-      On Windows the syscall package now supports working with files whose
-      names, stored as UTF-16, can't be represented as valid UTF-8.
-      The <a href="/pkg/syscall#UTF16ToString"><code>UTF16ToString</code></a>
-      and <a href="/pkg/syscall#UTF16FromString"><code>UTF16FromString</code></a>
-      functions now convert between UTF-16 data and
-      <a href="https://simonsapin.github.io/wtf-8/">WTF-8</a> strings.
-      This is backward compatible as WTF-8 is a superset of the UTF-8
-      format that was used in earlier releases.
-    </p>
-
-    <p><!-- CL 476578, CL 476875, CL 476916 -->
-      Several error values match the new
-      <a href="/pkg/errors/#ErrUnsupported"><code>errors.ErrUnsupported</code></a>,
-      such that <code>errors.Is(err, errors.ErrUnsupported)</code>
-      returns true.
-      <ul>
-        <li><code>ENOSYS</code></li>
-        <li><code>ENOTSUP</code></li>
-        <li><code>EOPNOTSUPP</code></li>
-        <li><code>EPLAN9</code> (Plan 9 only)</li>
-        <li><code>ERROR_CALL_NOT_IMPLEMENTED</code> (Windows only)</li>
-        <li><code>ERROR_NOT_SUPPORTED</code> (Windows only)</li>
-        <li><code>EWINDOWS</code> (Windows only)</li>
-      </ul>
-    </p>
-  </dd>
-</dl><!-- syscall -->
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/37708, CL 463837 -->
-      The new <code>-test.fullpath</code> option will print full path
-      names in test log messages, rather than just base names.
-    </p>
-
-    <p><!-- https://go.dev/issue/52600, CL 475496 -->
-      The new <a href="/pkg/testing/#Testing"><code>Testing</code></a> function reports whether the program is a test created by <code>go</code> <code>test</code>.
-    </p>
-  </dd>
-</dl><!-- testing -->
-
-<dl id="testing/fstest"><dt><a href="/pkg/testing/fstest/">testing/fstest</a></dt>
-  <dd>
-    <p><!-- https://go.dev/issue/54451, CL 491175 -->
-      Calling <code><a href="/pkg/testing/fstest/MapFS.Open">Open</a>.<a href="/pkg/io/fs/#File.Stat">Stat</a></code>
-      will return a type that now implements a <code>String</code>
-      method that calls
-      <a href="/pkg/io/fs/#FormatFileInfo"><code>io/fs.FormatFileInfo</code></a>.
-    </p>
-  </dd>
-</dl><!-- testing/fstest -->
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-  <dd>
-    <p><!-- CL 456837 -->
-      The <a href="/pkg/unicode/"><code>unicode</code></a> package and
-      associated support throughout the system has been upgraded to
-      <a href="https://www.unicode.org/versions/Unicode15.0.0/">Unicode 15.0.0</a>.
-    </p>
-  </dd>
-</dl><!-- unicode -->
-
-<h2 id="ports">Ports</h2>
-
-<h3 id="darwin">Darwin</h3>
-
-<p><!-- https://go.dev/issue/57125 -->
-  As <a href="go1.20#darwin">announced</a> in the Go 1.20 release notes,
-  Go 1.21 requires macOS 10.15 Catalina or later;
-  support for previous versions has been discontinued.
-</p>
-
-<h3 id="windows">Windows</h3>
-
-<p><!-- https://go.dev/issue/57003, https://go.dev/issue/57004 -->
-  As <a href="go1.20#windows">announced</a> in the Go 1.20 release notes,
-  Go 1.21 requires at least Windows 10 or Windows Server 2016;
-  support for previous versions has been discontinued.
-</p>
-
-<!-- CL 470695 -->
-<p>
-  <!-- cmd/dist: default to GOARM=7 on all non-arm systems -->
-</p>
-
-<h3 id="wasm">WebAssembly</h3>
-
-<p><!-- https://go.dev/issue/38248, https://go.dev/issue/59149, CL 489255 -->
-  The new <code>go:wasmimport</code> directive can now be used in Go programs
-  to import functions from the WebAssembly host.
-</p>
-
-<!-- https://go.dev/issue/56100 -->
-<p>
-  The Go scheduler now interacts much more efficiently with the
-  JavaScript event loop, especially in applications that block
-  frequently on asynchronous events.
-</p>
-
-
-<h3 id="wasip1">WebAssembly System Interface</h3>
-
-<p><!-- https://go.dev/issue/58141 -->
-  Go 1.21 adds an experimental port to the <a href="https://wasi.dev/">
-  WebAssembly System Interface (WASI)</a>, Preview 1
-  (<code>GOOS=wasip1</code>, <code>GOARCH=wasm</code>).
-</p>
-
-<p>
-  As a result of the addition of the new <code>GOOS</code> value
-  "<code>wasip1</code>", Go files named <code>*_wasip1.go</code>
-  will now be <a href="/pkg/go/build/#hdr-Build_Constraints">ignored
-  by Go tools</a> except when that <code>GOOS</code> value is being
-  used.
-  If you have existing filenames matching that pattern, you will
-  need to rename them.
-</p>
-
-<h3 id="PPC64">ppc64/ppc64le</h3>
-
-<p><!-- go.dev/issue/44549 -->
-  On Linux, <code>GOPPC64=power10</code> now generates PC-relative instructions, prefixed
-  instructions, and other new Power10 instructions. On AIX, <code>GOPPC64=power10</code>
-  generates Power10 instructions, but does not generate PC-relative instructions.
-</p>
-
-<p>
-  When building position-independent binaries for <code>GOPPC64=power10</code>
-  <code>GOOS=linux</code> <code>GOARCH=ppc64le</code>, users can expect reduced binary
-  sizes in most cases, in some cases 3.5%. Position-independent binaries are built for
-  ppc64le with the following <code>-buildmode</code> values:
-  <code>c-archive</code>, <code>c-shared</code>, <code>shared</code>, <code>pie</code>, <code>plugin</code>.
-</p>
-
-<h3 id="loong64">loong64</h3>
-
-<p><!-- go.dev/issue/53301, CL 455075, CL 425474, CL 425476, CL 425478, CL 489576 -->
-  The <code>linux/loong64</code> port now supports <code>-buildmode=c-archive</code>,
-  <code>-buildmode=c-shared</code> and <code>-buildmode=pie</code>.
-</p>
-
-<!-- proposals for x repos that don't need to be mentioned here but
-     are picked up by the relnote tool. -->
-<!-- https://go.dev/issue/54232 -->
-<!-- https://go.dev/issue/57051 -->
-<!-- https://go.dev/issue/57792 -->
-<!-- https://go.dev/issue/57906 -->
-<!-- https://go.dev/issue/58668 -->
-<!-- https://go.dev/issue/59016 -->
-<!-- https://go.dev/issue/59676 -->
-<!-- https://go.dev/issue/60409 -->
-<!-- https://go.dev/issue/61176 -->
-
-<!-- changes to cmd/api that don't need release notes. -->
-<!-- CL 469115, CL 469135, CL 499981 -->
-
-<!-- proposals that don't need release notes. -->
-<!-- https://go.dev/issue/10275 -->
-<!-- https://go.dev/issue/59719 -->
diff --git a/_content/doc/go1.3.html b/_content/doc/go1.3.html
deleted file mode 100644
index 507227e..0000000
--- a/_content/doc/go1.3.html
+++ /dev/null
@@ -1,606 +0,0 @@
-<!--{
-	"Title": "Go 1.3 Release Notes"
-}-->
-
-<h2 id="introduction">Introduction to Go 1.3</h2>
-
-<p>
-The latest Go release, version 1.3, arrives six months after 1.2,
-and contains no language changes.
-It focuses primarily on implementation work, providing
-precise garbage collection,
-a major refactoring of the compiler toolchain that results in
-faster builds, especially for large projects,
-significant performance improvements across the board,
-and support for DragonFly BSD, Solaris, Plan 9 and Google's Native Client architecture (NaCl).
-It also has an important refinement to the memory model regarding synchronization.
-As always, Go 1.3 keeps the <a href="/doc/go1compat.html">promise
-of compatibility</a>,
-and almost everything
-will continue to compile and run without change when moved to 1.3.
-</p>
-
-<h2 id="os">Changes to the supported operating systems and architectures</h2>
-
-<h3 id="win2000">Removal of support for Windows 2000</h3>
-
-<p>
-Microsoft stopped supporting Windows 2000 in 2010.
-Since it has <a href="https://codereview.appspot.com/74790043">implementation difficulties</a>
-regarding exception handling (signals in Unix terminology),
-as of Go 1.3 it is not supported by Go either.
-</p>
-
-<h3 id="dragonfly">Support for DragonFly BSD</h3>
-
-<p>
-Go 1.3 now includes experimental support for DragonFly BSD on the <code>amd64</code> (64-bit x86) and <code>386</code> (32-bit x86) architectures.
-It uses DragonFly BSD 3.6 or above.
-</p>
-
-<h3 id="freebsd">Support for FreeBSD</h3>
-
-<p>
-It was not announced at the time, but since the release of Go 1.2, support for Go on FreeBSD
-requires FreeBSD 8 or above.
-</p>
-
-<p>
-As of Go 1.3, support for Go on FreeBSD requires that the kernel be compiled with the
-<code>COMPAT_FREEBSD32</code> flag configured.
-</p>
-
-<p>
-In concert with the switch to EABI syscalls for ARM platforms, Go 1.3 will run only on FreeBSD 10.
-The x86 platforms, 386 and amd64, are unaffected.
-</p>
-
-<h3 id="nacl">Support for Native Client</h3>
-
-<p>
-Support for the Native Client virtual machine architecture has returned to Go with the 1.3 release.
-It runs on the 32-bit Intel architectures (<code>GOARCH=386</code>) and also on 64-bit Intel, but using
-32-bit pointers (<code>GOARCH=amd64p32</code>).
-There is not yet support for Native Client on ARM.
-Note that this is Native Client (NaCl), not Portable Native Client (PNaCl).
-Details about Native Client are <a href="https://developers.google.com/native-client/dev/">here</a>;
-how to set up the Go version is described <a href="/wiki/NativeClient">here</a>.
-</p>
-
-<h3 id="netbsd">Support for NetBSD</h3>
-
-<p>
-As of Go 1.3, support for Go on NetBSD requires NetBSD 6.0 or above.
-</p>
-
-<h3 id="openbsd">Support for OpenBSD</h3>
-
-<p>
-As of Go 1.3, support for Go on OpenBSD requires OpenBSD 5.5 or above.
-</p>
-
-<h3 id="plan9">Support for Plan 9</h3>
-
-<p>
-Go 1.3 now includes experimental support for Plan 9 on the <code>386</code> (32-bit x86) architecture.
-It requires the <code>Tsemacquire</code> syscall, which has been in Plan 9 since June, 2012.
-</p>
-
-<h3 id="solaris">Support for Solaris</h3>
-
-<p>
-Go 1.3 now includes experimental support for Solaris on the <code>amd64</code> (64-bit x86) architecture.
-It requires illumos, Solaris 11 or above.
-</p>
-
-<h2 id="memory">Changes to the memory model</h2>
-
-<p>
-The Go 1.3 memory model <a href="https://codereview.appspot.com/75130045">adds a new rule</a>
-concerning sending and receiving on buffered channels,
-to make explicit that a buffered channel can be used as a simple
-semaphore, using a send into the
-channel to acquire and a receive from the channel to release.
-This is not a language change, just a clarification about an expected property of communication.
-</p>
-
-<h2 id="impl">Changes to the implementations and tools</h2>
-
-<h3 id="stacks">Stack</h3>
-
-<p>
-Go 1.3 has changed the implementation of goroutine stacks away from the old,
-"segmented" model to a contiguous model.
-When a goroutine needs more stack
-than is available, its stack is transferred to a larger single block of memory.
-The overhead of this transfer operation amortizes well and eliminates the old "hot spot"
-problem when a calculation repeatedly steps across a segment boundary.
-Details including performance numbers are in this
-<a href="/s/contigstacks">design document</a>.
-</p>
-
-<h3 id="garbage_collector">Changes to the garbage collector</h3>
-
-<p>
-For a while now, the garbage collector has been <em>precise</em> when examining
-values in the heap; the Go 1.3 release adds equivalent precision to values on the stack.
-This means that a non-pointer Go value such as an integer will never be mistaken for a
-pointer and prevent unused memory from being reclaimed.
-</p>
-
-<p>
-Starting with Go 1.3, the runtime assumes that values with pointer type
-contain pointers and other values do not.
-This assumption is fundamental to the precise behavior of both stack expansion
-and garbage collection.
-Programs that use <a href="/pkg/unsafe/">package unsafe</a>
-to store integers in pointer-typed values are illegal and will crash if the runtime detects the behavior.
-Programs that use <a href="/pkg/unsafe/">package unsafe</a> to store pointers
-in integer-typed values are also illegal but more difficult to diagnose during execution.
-Because the pointers are hidden from the runtime, a stack expansion or garbage collection
-may reclaim the memory they point at, creating
-<a href="https://en.wikipedia.org/wiki/Dangling_pointer">dangling pointers</a>.
-</p>
-
-<p>
-<em>Updating</em>: Code that uses <code>unsafe.Pointer</code> to convert
-an integer-typed value held in memory into a pointer is illegal and must be rewritten.
-Such code can be identified by <code>go vet</code>.
-</p>
-
-<h3 id="map">Map iteration</h3>
-
-<p>
-Iterations over small maps no longer happen in a consistent order.
-Go 1 defines that &ldquo;<a href="/ref/spec#For_statements">The iteration order over maps
-is not specified and is not guaranteed to be the same from one iteration to the next.</a>&rdquo;
-To keep code from depending on map iteration order,
-Go 1.0 started each map iteration at a random index in the map.
-A new map implementation introduced in Go 1.1 neglected to randomize
-iteration for maps with eight or fewer entries, although the iteration order
-can still vary from system to system.
-This has allowed people to write Go 1.1 and Go 1.2 programs that
-depend on small map iteration order and therefore only work reliably on certain systems.
-Go 1.3 reintroduces random iteration for small maps in order to flush out these bugs.
-</p>
-
-<p>
-<em>Updating</em>: If code assumes a fixed iteration order for small maps,
-it will break and must be rewritten not to make that assumption.
-Because only small maps are affected, the problem arises most often in tests.
-</p>
-
-<h3 id="liblink">The linker</h3>
-
-<p>
-As part of the general <a href="/s/go13linker">overhaul</a> to
-the Go linker, the compilers and linkers have been refactored.
-The linker is still a C program, but now the instruction selection phase that
-was part of the linker has been moved to the compiler through the creation of a new
-library called <code>liblink</code>.
-By doing instruction selection only once, when the package is first compiled,
-this can speed up compilation of large projects significantly.
-</p>
-
-<p>
-<em>Updating</em>: Although this is a major internal change, it should have no
-effect on programs.
-</p>
-
-<h3 id="gccgo">Status of gccgo</h3>
-
-<p>
-GCC release 4.9 will contain the Go 1.2 (not 1.3) version of gccgo.
-The release schedules for the GCC and Go projects do not coincide,
-which means that 1.3 will be available in the development branch but
-that the next GCC release, 4.10, will likely have the Go 1.4 version of gccgo.
-</p>
-
-<h3 id="gocmd">Changes to the go command</h3>
-
-<p>
-The <a href="/cmd/go/"><code>cmd/go</code></a> command has several new
-features.
-The <a href="/cmd/go/"><code>go run</code></a> and
-<a href="/cmd/go/"><code>go test</code></a> subcommands
-support a new <code>-exec</code> option to specify an alternate
-way to run the resulting binary.
-Its immediate purpose is to support NaCl.
-</p>
-
-<p>
-The test coverage support of the <a href="/cmd/go/"><code>go test</code></a>
-subcommand now automatically sets the coverage mode to <code>-atomic</code>
-when the race detector is enabled, to eliminate false reports about unsafe
-access to coverage counters.
-</p>
-
-<p>
-The <a href="/cmd/go/"><code>go test</code></a> subcommand
-now always builds the package, even if it has no test files.
-Previously, it would do nothing if no test files were present.
-</p>
-
-<p>
-The <a href="/cmd/go/"><code>go build</code></a> subcommand
-supports a new <code>-i</code> option to install dependencies
-of the specified target, but not the target itself.
-</p>
-
-<p>
-Cross compiling with <a href="/cmd/cgo/"><code>cgo</code></a> enabled
-is now supported.
-The CC_FOR_TARGET and CXX_FOR_TARGET environment
-variables are used when running all.bash to specify the cross compilers
-for C and C++ code, respectively.
-</p>
-
-<p>
-Finally, the go command now supports packages that import Objective-C
-files (suffixed <code>.m</code>) through cgo.
-</p>
-
-<h3 id="cgo">Changes to cgo</h3>
-
-<p>
-The <a href="/cmd/cgo/"><code>cmd/cgo</code></a> command,
-which processes <code>import "C"</code> declarations in Go packages,
-has corrected a serious bug that may cause some packages to stop compiling.
-Previously, all pointers to incomplete struct types translated to the Go type <code>*[0]byte</code>,
-with the effect that the Go compiler could not diagnose passing one kind of struct pointer
-to a function expecting another.
-Go 1.3 corrects this mistake by translating each different
-incomplete struct to a different named type.
-</p>
-
-<p>
-Given the C declaration <code>typedef struct S T</code> for an incomplete <code>struct S</code>,
-some Go code used this bug to refer to the types <code>C.struct_S</code> and <code>C.T</code> interchangeably.
-Cgo now explicitly allows this use, even for completed struct types.
-However, some Go code also used this bug to pass (for example) a <code>*C.FILE</code>
-from one package to another.
-This is not legal and no longer works: in general Go packages
-should avoid exposing C types and names in their APIs.
-</p>
-
-<p>
-<em>Updating</em>: Code confusing pointers to incomplete types or
-passing them across package boundaries will no longer compile
-and must be rewritten.
-If the conversion is correct and must be preserved,
-use an explicit conversion via <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code></a>.
-</p>
-
-<h3 id="swig">SWIG 3.0 required for programs that use SWIG</h3>
-
-<p>
-For Go programs that use SWIG, SWIG version 3.0 is now required.
-The <a href="/cmd/go"><code>cmd/go</code></a> command will now link the
-SWIG generated object files directly into the binary, rather than
-building and linking with a shared library.
-</p>
-
-<h3 id="gc_flag">Command-line flag parsing</h3>
-
-<p>
-In the gc toolchain, the assemblers now use the
-same command-line flag parsing rules as the Go flag package, a departure
-from the traditional Unix flag parsing.
-This may affect scripts that invoke the tool directly.
-For example,
-<code>go tool 6a -SDfoo</code> must now be written
-<code>go tool 6a -S -D foo</code>.
-(The same change was made to the compilers and linkers in <a href="/doc/go1.1#gc_flag">Go 1.1</a>.)
-</p>
-
-<h3 id="godoc">Changes to godoc</h3>
-<p>
-When invoked with the <code>-analysis</code> flag,
-<a href="https://godoc.org/golang.org/x/tools/cmd/godoc">godoc</a>
-now performs sophisticated <a href="/lib/godoc/analysis/help.html">static
-analysis</a> of the code it indexes.
-The results of analysis are presented in both the source view and the
-package documentation view, and include the call graph of each package
-and the relationships between
-definitions and references,
-types and their methods,
-interfaces and their implementations,
-send and receive operations on channels,
-functions and their callers, and
-call sites and their callees.
-</p>
-
-<h3 id="misc">Miscellany</h3>
-
-<p>
-The program <code>misc/benchcmp</code> that compares
-performance across benchmarking runs has been rewritten.
-Once a shell and awk script in the main repository, it is now a Go program in the <code>go.tools</code> repo.
-Documentation is <a href="https://godoc.org/golang.org/x/tools/cmd/benchcmp">here</a>.
-</p>
-
-<p>
-For the few of us that build Go distributions, the tool <code>misc/dist</code> has been
-moved and renamed; it now lives in <code>misc/makerelease</code>, still in the main repository.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-The performance of Go binaries for this release has improved in many cases due to changes
-in the runtime and garbage collection, plus some changes to libraries.
-Significant instances include:
-</p>
-
-<ul>
-
-<li>
-The runtime handles defers more efficiently, reducing the memory footprint by about two kilobytes
-per goroutine that calls defer.
-</li>
-
-<li>
-The garbage collector has been sped up, using a concurrent sweep algorithm,
-better parallelization, and larger pages.
-The cumulative effect can be a 50-70% reduction in collector pause time.
-</li>
-
-<li>
-The race detector (see <a href="/doc/articles/race_detector.html">this guide</a>)
-is now about 40% faster.
-</li>
-
-<li>
-The regular expression package <a href="/pkg/regexp/"><code>regexp</code></a>
-is now significantly faster for certain simple expressions due to the implementation of
-a second, one-pass execution engine.
-The choice of which engine to use is automatic;
-the details are hidden from the user.
-</li>
-
-</ul>
-
-<p>
-Also, the runtime now includes in stack dumps how long a goroutine has been blocked,
-which can be useful information when debugging deadlocks or performance issues.
-</p>
-
-<h2 id="library">Changes to the standard library</h2>
-
-<h3 id="new_packages">New packages</h3>
-
-<p>
-A new package <a href="/pkg/debug/plan9obj/"><code>debug/plan9obj</code></a> was added to the standard library.
-It implements access to Plan 9 <a href="https://9p.io/magic/man2html/6/a.out">a.out</a> object files.
-</p>
-
-<h3 id="major_library_changes">Major changes to the library</h3>
-
-<p>
-A previous bug in <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a>
-made it possible to skip verification in TLS inadvertently.
-In Go 1.3, the bug is fixed: one must specify either ServerName or
-InsecureSkipVerify, and if ServerName is specified it is enforced.
-This may break existing code that incorrectly depended on insecure
-behavior.
-</p>
-
-<p>
-There is an important new type added to the standard library: <a href="/pkg/sync/#Pool"><code>sync.Pool</code></a>.
-It provides an efficient mechanism for implementing certain types of caches whose memory
-can be reclaimed automatically by the system.
-</p>
-
-<p>
-The <a href="/pkg/testing/"><code>testing</code></a> package's benchmarking helper,
-<a href="/pkg/testing/#B"><code>B</code></a>, now has a
-<a href="/pkg/testing/#B.RunParallel"><code>RunParallel</code></a> method
-to make it easier to run benchmarks that exercise multiple CPUs.
-</p>
-
-<p>
-<em>Updating</em>: The crypto/tls fix may break existing code, but such
-code was erroneous and should be updated.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-The following list summarizes a number of minor changes to the library, mostly additions.
-See the relevant package documentation for more information about each change.
-</p>
-
-<ul>
-
-<li> In the <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package,
-a new <a href="/pkg/crypto/tls/#DialWithDialer"><code>DialWithDialer</code></a>
-function lets one establish a TLS connection using an existing dialer, making it easier
-to control dial options such as timeouts.
-The package also now reports the TLS version used by the connection in the
-<a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a>
-struct.
-</li>
-
-<li> The <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-function of the <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-now supports parsing (and elsewhere, serialization) of PKCS #10 certificate
-signature requests.
-</li>
-
-<li>
-The formatted print functions of the <code>fmt</code> package now define <code>%F</code>
-as a synonym for <code>%f</code> when printing floating-point values.
-</li>
-
-<li>
-The <a href="/pkg/math/big/"><code>math/big</code></a> package's
-<a href="/pkg/math/big/#Int"><code>Int</code></a> and
-<a href="/pkg/math/big/#Rat"><code>Rat</code></a> types
-now implement
-<a href="/pkg/encoding/#TextMarshaler"><code>encoding.TextMarshaler</code></a> and
-<a href="/pkg/encoding/#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>.
-</li>
-
-<li>
-The complex power function, <a href="/pkg/math/cmplx/#Pow"><code>Pow</code></a>,
-now specifies the behavior when the first argument is zero.
-It was undefined before.
-The details are in the <a href="/pkg/math/cmplx/#Pow">documentation for the function</a>.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package now exposes the
-properties of a TLS connection used to make a client request in the new
-<a href="/pkg/net/http/#Response"><code>Response.TLS</code></a> field.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package now
-allows setting an optional server error logger
-with <a href="/pkg/net/http/#Server"><code>Server.ErrorLog</code></a>.
-The default is still that all errors go to stderr.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package now
-supports disabling HTTP keep-alive connections on the server
-with <a href="/pkg/net/http/#Server.SetKeepAlivesEnabled"><code>Server.SetKeepAlivesEnabled</code></a>.
-The default continues to be that the server does keep-alive (reuses
-connections for multiple requests) by default.
-Only resource-constrained servers or those in the process of graceful
-shutdown will want to disable them.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package adds an optional
-<a href="/pkg/net/http/#Transport"><code>Transport.TLSHandshakeTimeout</code></a>
-setting to cap the amount of time HTTP client requests will wait for
-TLS handshakes to complete.
-It's now also set by default
-on <a href="/pkg/net/http#DefaultTransport"><code>DefaultTransport</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package's
-<a href="/pkg/net/http/#DefaultTransport"><code>DefaultTransport</code></a>,
-used by the HTTP client code, now
-enables <a href="http://en.wikipedia.org/wiki/Keepalive#TCP_keepalive">TCP
-keep-alives</a> by default.
-Other <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-values with a nil <code>Dial</code> field continue to function the same
-as before: no TCP keep-alives are used.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package
-now enables <a href="http://en.wikipedia.org/wiki/Keepalive#TCP_keepalive">TCP
-keep-alives</a> for incoming server requests when
-<a href="/pkg/net/http/#ListenAndServe"><code>ListenAndServe</code></a>
-or
-<a href="/pkg/net/http/#ListenAndServeTLS"><code>ListenAndServeTLS</code></a>
-are used.
-When a server is started otherwise, TCP keep-alives are not enabled.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package now
-provides an
-optional <a href="/pkg/net/http/#Server"><code>Server.ConnState</code></a>
-callback to hook various phases of a server connection's lifecycle
-(see <a href="/pkg/net/http/#ConnState"><code>ConnState</code></a>).
-This can be used to implement rate limiting or graceful shutdown.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package's HTTP
-client now has an
-optional <a href="/pkg/net/http/#Client"><code>Client.Timeout</code></a>
-field to specify an end-to-end timeout on requests made using the
-client.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package's
-<a href="/pkg/net/http/#Request.ParseMultipartForm"><code>Request.ParseMultipartForm</code></a>
-method will now return an error if the body's <code>Content-Type</code>
-is not <code>multipart/form-data</code>.
-Prior to Go 1.3 it would silently fail and return <code>nil</code>.
-Code that relies on the previous behavior should be updated.
-</li>
-
-<li> In the <a href="/pkg/net/"><code>net</code></a> package,
-the <a href="/pkg/net/#Dialer"><code>Dialer</code></a> struct now
-has a <code>KeepAlive</code> option to specify a keep-alive period for the connection.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package's
-<a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-now closes <a href="/pkg/net/http/#Request"><code>Request.Body</code></a>
-consistently, even on error.
-</li>
-
-<li>
-The <a href="/pkg/os/exec/"><code>os/exec</code></a> package now implements
-what the documentation has always said with regard to relative paths for the binary.
-In particular, it only calls <a href="/pkg/os/exec/#LookPath"><code>LookPath</code></a>
-when the binary's file name contains no path separators.
-</li>
-
-<li>
-The <a href="/pkg/reflect/#Value.SetMapIndex"><code>SetMapIndex</code></a>
-function in the <a href="/pkg/reflect/"><code>reflect</code></a> package
-no longer panics when deleting from a <code>nil</code> map.
-</li>
-
-<li>
-If the main goroutine calls
-<a href="/pkg/runtime/#Goexit"><code>runtime.Goexit</code></a>
-and all other goroutines finish execution, the program now always crashes,
-reporting a detected deadlock.
-Earlier versions of Go handled this situation inconsistently: most instances
-were reported as deadlocks, but some trivial cases exited cleanly instead.
-</li>
-
-<li>
-The runtime/debug package now has a new function
-<a href="/pkg/runtime/debug/#WriteHeapDump"><code>debug.WriteHeapDump</code></a>
-that writes out a description of the heap.
-</li>
-
-<li>
-The <a href="/pkg/strconv/#CanBackquote"><code>CanBackquote</code></a>
-function in the <a href="/pkg/strconv/"><code>strconv</code></a> package
-now considers the <code>DEL</code> character, <code>U+007F</code>, to be
-non-printing.
-</li>
-
-<li>
-The <a href="/pkg/syscall/"><code>syscall</code></a> package now provides
-<a href="/pkg/syscall/#SendmsgN"><code>SendmsgN</code></a>
-as an alternate version of
-<a href="/pkg/syscall/#Sendmsg"><code>Sendmsg</code></a>
-that returns the number of bytes written.
-</li>
-
-<li>
-On Windows, the <a href="/pkg/syscall/"><code>syscall</code></a> package now
-supports the cdecl calling convention through the addition of a new function
-<a href="/pkg/syscall/#NewCallbackCDecl"><code>NewCallbackCDecl</code></a>
-alongside the existing function
-<a href="/pkg/syscall/#NewCallback"><code>NewCallback</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/testing/"><code>testing</code></a> package now
-diagnoses tests that call <code>panic(nil)</code>, which are almost always erroneous.
-Also, tests now write profiles (if invoked with profiling flags) even on failure.
-</li>
-
-<li>
-The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-support throughout the system has been upgraded from
-Unicode 6.2.0 to <a href="http://www.unicode.org/versions/Unicode6.3.0/">Unicode 6.3.0</a>.
-</li>
-
-</ul>
diff --git a/_content/doc/go1.4.html b/_content/doc/go1.4.html
deleted file mode 100644
index 32b16b8..0000000
--- a/_content/doc/go1.4.html
+++ /dev/null
@@ -1,894 +0,0 @@
-<!--{
-	"Title": "Go 1.4 Release Notes"
-}-->
-
-<h2 id="introduction">Introduction to Go 1.4</h2>
-
-<p>
-The latest Go release, version 1.4, arrives as scheduled six months after 1.3.
-</p>
-
-<p>
-It contains only one tiny language change,
-in the form of a backwards-compatible simple variant of <code>for</code>-<code>range</code> loop,
-and a possibly breaking change to the compiler involving methods on pointers-to-pointers.
-</p>
-
-<p>
-The release focuses primarily on implementation work, improving the garbage collector
-and preparing the ground for a fully concurrent collector to be rolled out in the
-next few releases.
-Stacks are now contiguous, reallocated when necessary rather than linking on new
-"segments";
-this release therefore eliminates the notorious "hot stack split" problem.
-There are some new tools available including support in the <code>go</code> command
-for build-time source code generation.
-The release also adds support for ARM processors on Android and Native Client (NaCl)
-and for AMD64 on Plan 9.
-</p>
-
-<p>
-As always, Go 1.4 keeps the <a href="/doc/go1compat.html">promise
-of compatibility</a>,
-and almost everything
-will continue to compile and run without change when moved to 1.4.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<h3 id="forrange">For-range loops</h3>
-<p>
-Up until Go 1.3, <code>for</code>-<code>range</code> loop had two forms
-</p>
-
-<pre>
-for i, v := range x {
-	...
-}
-</pre>
-
-<p>
-and
-</p>
-
-<pre>
-for i := range x {
-	...
-}
-</pre>
-
-<p>
-If one was not interested in the loop values, only the iteration itself, it was still
-necessary to mention a variable (probably the <a href="/ref/spec#Blank_identifier">blank identifier</a>, as in
-<code>for</code> <code>_</code> <code>=</code> <code>range</code> <code>x</code>), because
-the form
-</p>
-
-<pre>
-for range x {
-	...
-}
-</pre>
-
-<p>
-was not syntactically permitted.
-</p>
-
-<p>
-This situation seemed awkward, so as of Go 1.4 the variable-free form is now legal.
-The pattern arises rarely but the code can be cleaner when it does.
-</p>
-
-<p>
-<em>Updating</em>: The change is strictly backwards compatible to existing Go
-programs, but tools that analyze Go parse trees may need to be modified to accept
-this new form as the
-<code>Key</code> field of <a href="/pkg/go/ast/#RangeStmt"><code>RangeStmt</code></a>
-may now be <code>nil</code>.
-</p>
-
-<h3 id="methodonpointertopointer">Method calls on **T</h3>
-
-<p>
-Given these declarations,
-</p>
-
-<pre>
-type T int
-func (T) M() {}
-var x **T
-</pre>
-
-<p>
-both <code>gc</code> and <code>gccgo</code> accepted the method call
-</p>
-
-<pre>
-x.M()
-</pre>
-
-<p>
-which is a double dereference of the pointer-to-pointer <code>x</code>.
-The Go specification allows a single dereference to be inserted automatically,
-but not two, so this call is erroneous according to the language definition.
-It has therefore been disallowed in Go 1.4, which is a breaking change,
-although very few programs will be affected.
-</p>
-
-<p>
-<em>Updating</em>: Code that depends on the old, erroneous behavior will no longer
-compile but is easy to fix by adding an explicit dereference.
-</p>
-
-<h2 id="os">Changes to the supported operating systems and architectures</h2>
-
-<h3 id="android">Android</h3>
-
-<p>
-Go 1.4 can build binaries for ARM processors running the Android operating system.
-It can also build a <code>.so</code> library that can be loaded by an Android application
-using the supporting packages in the <a href="https://golang.org/x/mobile">mobile</a> subrepository.
-A brief description of the plans for this experimental port are available
-<a href="/s/go14android">here</a>.
-</p>
-
-<h3 id="naclarm">NaCl on ARM</h3>
-
-<p>
-The previous release introduced Native Client (NaCl) support for the 32-bit x86
-(<code>GOARCH=386</code>)
-and 64-bit x86 using 32-bit pointers (GOARCH=amd64p32).
-The 1.4 release adds NaCl support for ARM (GOARCH=arm).
-</p>
-
-<h3 id="plan9amd64">Plan9 on AMD64</h3>
-
-<p>
-This release adds support for the Plan 9 operating system on AMD64 processors,
-provided the kernel supports the <code>nsec</code> system call and uses 4K pages.
-</p>
-
-<h2 id="compatibility">Changes to the compatibility guidelines</h2>
-
-<p>
-The <a href="/pkg/unsafe/"><code>unsafe</code></a> package allows one
-to defeat Go's type system by exploiting internal details of the implementation
-or machine representation of data.
-It was never explicitly specified what use of <code>unsafe</code> meant
-with respect to compatibility as specified in the
-<a href="go1compat.html">Go compatibility guidelines</a>.
-The answer, of course, is that we can make no promise of compatibility
-for code that does unsafe things.
-</p>
-
-<p>
-We have clarified this situation in the documentation included in the release.
-The <a href="go1compat.html">Go compatibility guidelines</a> and the
-docs for the <a href="/pkg/unsafe/"><code>unsafe</code></a> package
-are now explicit that unsafe code is not guaranteed to remain compatible.
-</p>
-
-<p>
-<em>Updating</em>: Nothing technical has changed; this is just a clarification
-of the documentation.
-</p>
-
-
-<h2 id="impl">Changes to the implementations and tools</h2>
-
-<h3 id="runtime">Changes to the runtime</h3>
-
-<p>
-Prior to Go 1.4, the runtime (garbage collector, concurrency support, interface management,
-maps, slices, strings, ...) was mostly written in C, with some assembler support.
-In 1.4, much of the code has been translated to Go so that the garbage collector can scan
-the stacks of programs in the runtime and get accurate information about what variables
-are active.
-This change was large but should have no semantic effect on programs.
-</p>
-
-<p>
-This rewrite allows the garbage collector in 1.4 to be fully precise,
-meaning that it is aware of the location of all active pointers in the program.
-This means the heap will be smaller as there will be no false positives keeping non-pointers alive.
-Other related changes also reduce the heap size, which is smaller by 10%-30% overall
-relative to the previous release.
-</p>
-
-<p>
-A consequence is that stacks are no longer segmented, eliminating the "hot split" problem.
-When a stack limit is reached, a new, larger stack is allocated, all active frames for
-the goroutine are copied there, and any pointers into the stack are updated.
-Performance can be noticeably better in some cases and is always more predictable.
-Details are available in <a href="/s/contigstacks">the design document</a>.
-</p>
-
-<p>
-The use of contiguous stacks means that stacks can start smaller without triggering performance issues,
-so the default starting size for a goroutine's stack in 1.4 has been reduced from 8192 bytes to 2048 bytes.
-</p>
-
-<p>
-As preparation for the concurrent garbage collector scheduled for the 1.5 release,
-writes to pointer values in the heap are now done by a function call,
-called a write barrier, rather than directly from the function updating the value.
-In this next release, this will permit the garbage collector to mediate writes to the heap while it is running.
-This change has no semantic effect on programs in 1.4, but was
-included in the release to test the compiler and the resulting performance.
-</p>
-
-<p>
-The implementation of interface values has been modified.
-In earlier releases, the interface contained a word that was either a pointer or a one-word
-scalar value, depending on the type of the concrete object stored.
-This implementation was problematical for the garbage collector,
-so as of 1.4 interface values always hold a pointer.
-In running programs, most interface values were pointers anyway,
-so the effect is minimal, but programs that store integers (for example) in
-interfaces will see more allocations.
-</p>
-
-<p>
-As of Go 1.3, the runtime crashes if it finds a memory word that should contain
-a valid pointer but instead contains an obviously invalid pointer (for example, the value 3).
-Programs that store integers in pointer values may run afoul of this check and crash.
-In Go 1.4, setting the <a href="/pkg/runtime/"><code>GODEBUG</code></a> variable
-<code>invalidptr=0</code> disables
-the crash as a workaround, but we cannot guarantee that future releases will be
-able to avoid the crash; the correct fix is to rewrite code not to alias integers and pointers.
-</p>
-
-<h3 id="asm">Assembly</h3>
-
-<p>
-The language accepted by the assemblers <code>cmd/5a</code>, <code>cmd/6a</code>
-and <code>cmd/8a</code> has had several changes,
-mostly to make it easier to deliver type information to the runtime.
-</p>
-
-<p>
-First, the <code>textflag.h</code> file that defines flags for <code>TEXT</code> directives
-has been copied from the linker source directory to a standard location so it can be
-included with the simple directive
-</p>
-
-<pre>
-#include "textflag.h"
-</pre>
-
-<p>
-The more important changes are in how assembler source can define the necessary
-type information.
-For most programs it will suffice to move data
-definitions (<code>DATA</code> and <code>GLOBL</code> directives)
-out of assembly into Go files
-and to write a Go declaration for each assembly function.
-The <a href="/doc/asm#runtime">assembly document</a> describes what to do.
-</p>
-
-<p>
-<em>Updating</em>:
-Assembly files that include <code>textflag.h</code> from its old
-location will still work, but should be updated.
-For the type information, most assembly routines will need no change,
-but all should be examined.
-Assembly source files that define data,
-functions with non-empty stack frames, or functions that return pointers
-need particular attention.
-A description of the necessary (but simple) changes
-is in the <a href="/doc/asm#runtime">assembly document</a>.
-</p>
-
-<p>
-More information about these changes is in the <a href="/doc/asm">assembly document</a>.
-</p>
-
-<h3 id="gccgo">Status of gccgo</h3>
-
-<p>
-The release schedules for the GCC and Go projects do not coincide.
-GCC release 4.9 contains the Go 1.2 version of gccgo.
-The next release, GCC 5, will likely have the Go 1.4 version of gccgo.
-</p>
-
-<h3 id="internalpackages">Internal packages</h3>
-
-<p>
-Go's package system makes it easy to structure programs into components with clean boundaries,
-but there are only two forms of access: local (unexported) and global (exported).
-Sometimes one wishes to have components that are not exported,
-for instance to avoid acquiring clients of interfaces to code that is part of a public repository
-but not intended for use outside the program to which it belongs.
-</p>
-
-<p>
-The Go language does not have the power to enforce this distinction, but as of Go 1.4 the
-<a href="/cmd/go/"><code>go</code></a> command introduces
-a mechanism to define "internal" packages that may not be imported by packages outside
-the source subtree in which they reside.
-</p>
-
-<p>
-To create such a package, place it in a directory named <code>internal</code> or in a subdirectory of a directory
-named internal.
-When the <code>go</code> command sees an import of a package with <code>internal</code> in its path,
-it verifies that the package doing the import
-is within the tree rooted at the parent of the <code>internal</code> directory.
-For example, a package <code>.../a/b/c/internal/d/e/f</code>
-can be imported only by code in the directory tree rooted at <code>.../a/b/c</code>.
-It cannot be imported by code in <code>.../a/b/g</code> or in any other repository.
-</p>
-
-<p>
-For Go 1.4, the internal package mechanism is enforced for the main Go repository;
-from 1.5 and onward it will be enforced for any repository.
-</p>
-
-<p>
-Full details of the mechanism are in
-<a href="/s/go14internal">the design document</a>.
-</p>
-
-<h3 id="canonicalimports">Canonical import paths</h3>
-
-<p>
-Code often lives in repositories hosted by public services such as <code>github.com</code>,
-meaning that the import paths for packages begin with the name of the hosting service,
-<code>github.com/rsc/pdf</code> for example.
-One can use
-<a href="/cmd/go/#hdr-Remote_import_paths">an existing mechanism</a>
-to provide a "custom" or "vanity" import path such as
-<code>rsc.io/pdf</code>, but
-that creates two valid import paths for the package.
-That is a problem: one may inadvertently import the package through the two
-distinct paths in a single program, which is wasteful;
-miss an update to a package because the path being used is not recognized to be
-out of date;
-or break clients using the old path by moving the package to a different hosting service.
-</p>
-
-<p>
-Go 1.4 introduces an annotation for package clauses in Go source that identify a canonical
-import path for the package.
-If an import is attempted using a path that is not canonical,
-the <a href="/cmd/go/"><code>go</code></a> command
-will refuse to compile the importing package.
-</p>
-
-<p>
-The syntax is simple: put an identifying comment on the package line.
-For our example, the package clause would read:
-</p>
-
-<pre>
-package pdf // import "rsc.io/pdf"
-</pre>
-
-<p>
-With this in place,
-the <code>go</code> command will
-refuse to compile a package that imports <code>github.com/rsc/pdf</code>,
-ensuring that the code can be moved without breaking users.
-</p>
-
-<p>
-The check is at build time, not download time, so if <code>go</code> <code>get</code>
-fails because of this check, the mis-imported package has been copied to the local machine
-and should be removed manually.
-</p>
-
-<p>
-To complement this new feature, a check has been added at update time to verify
-that the local package's remote repository matches that of its custom import.
-The <code>go</code> <code>get</code> <code>-u</code> command will fail to
-update a package if its remote repository has changed since it was first
-downloaded.
-The new <code>-f</code> flag overrides this check.
-</p>
-
-<p>
-Further information is in
-<a href="/s/go14customimport">the design document</a>.
-</p>
-
-<h3 id="subrepo">Import paths for the subrepositories</h3>
-
-<p>
-The Go project subrepositories (<code>code.google.com/p/go.tools</code> and so on)
-are now available under custom import paths replacing <code>code.google.com/p/go.</code> with <code>golang.org/x/</code>,
-as in <code>golang.org/x/tools</code>.
-We will add canonical import comments to the code around June 1, 2015,
-at which point Go 1.4 and later will stop accepting the old <code>code.google.com</code> paths.
-</p>
-
-<p>
-<em>Updating</em>: All code that imports from subrepositories should change
-to use the new <code>golang.org</code> paths.
-Go 1.0 and later can resolve and import the new paths, so updating will not break
-compatibility with older releases.
-Code that has not updated will stop compiling with Go 1.4 around June 1, 2015.
-</p>
-
-<h3 id="gogenerate">The go generate subcommand</h3>
-
-<p>
-The <a href="/cmd/go/"><code>go</code></a> command has a new subcommand,
-<a href="/cmd/go/#hdr-Generate_Go_files_by_processing_source"><code>go generate</code></a>,
-to automate the running of tools to generate source code before compilation.
-For example, it can be used to run the <a href="/cmd/yacc"><code>yacc</code></a>
-compiler-compiler on a <code>.y</code> file to produce the Go source file implementing the grammar,
-or to automate the generation of <code>String</code> methods for typed constants using the new
-<a href="https://godoc.org/golang.org/x/tools/cmd/stringer">stringer</a>
-tool in the <code>golang.org/x/tools</code> subrepository.
-</p>
-
-<p>
-For more information, see the
-<a href="/s/go1.4-generate">design document</a>.
-</p>
-
-<h3 id="filenames">Change to file name handling</h3>
-
-<p>
-Build constraints, also known as build tags, control compilation by including or excluding files
-(see the documentation <a href="/pkg/go/build/"><code>/go/build</code></a>).
-Compilation can also be controlled by the name of the file itself by "tagging" the file with
-a suffix (before the <code>.go</code> or <code>.s</code> extension) with an underscore
-and the name of the architecture or operating system.
-For instance, the file <code>gopher_arm.go</code> will only be compiled if the target
-processor is an ARM.
-</p>
-
-<p>
-Before Go 1.4, a file called just <code>arm.go</code> was similarly tagged, but this behavior
-can break sources when new architectures are added, causing files to suddenly become tagged.
-In 1.4, therefore, a file will be tagged in this manner only if the tag (architecture or operating
-system name) is preceded by an underscore.
-</p>
-
-<p>
-<em>Updating</em>: Packages that depend on the old behavior will no longer compile correctly.
-Files with names like <code>windows.go</code> or <code>amd64.go</code> should either
-have explicit build tags added to the source or be renamed to something like
-<code>os_windows.go</code> or <code>support_amd64.go</code>.
-</p>
-
-<h3 id="gocmd">Other changes to the go command</h3>
-
-<p>
-There were a number of minor changes to the
-<a href="/cmd/go/"><code>cmd/go</code></a>
-command worth noting.
-</p>
-
-<ul>
-
-<li>
-Unless <a href="/cmd/cgo/"><code>cgo</code></a> is being used to build the package,
-the <code>go</code> command now refuses to compile C source files,
-since the relevant C compilers
-(<a href="/cmd/6c/"><code>6c</code></a> etc.)
-are intended to be removed from the installation in some future release.
-(They are used today only to build part of the runtime.)
-It is difficult to use them correctly in any case, so any extant uses are likely incorrect,
-so we have disabled them.
-</li>
-
-<li>
-The <a href="/cmd/go/#hdr-Test_packages"><code>go</code> <code>test</code></a>
-subcommand has a new flag, <code>-o</code>, to set the name of the resulting binary,
-corresponding to the same flag in other subcommands.
-The non-functional <code>-file</code> flag has been removed.
-</li>
-
-<li>
-The <a href="/cmd/go/#hdr-Test_packages"><code>go</code> <code>test</code></a>
-subcommand will compile and link all <code>*_test.go</code> files in the package,
-even when there are no <code>Test</code> functions in them.
-It previously ignored such files.
-</li>
-
-<li>
-The behavior of the
-<a href="/cmd/go/#hdr-Test_packages"><code>go</code> <code>build</code></a>
-subcommand's
-<code>-a</code> flag has been changed for non-development installations.
-For installations running a released distribution, the <code>-a</code> flag will no longer
-rebuild the standard library and commands, to avoid overwriting the installation's files.
-</li>
-
-</ul>
-
-<h3 id="pkg">Changes to package source layout</h3>
-
-<p>
-In the main Go source repository, the source code for the packages was kept in
-the directory <code>src/pkg</code>, which made sense but differed from
-other repositories, including the Go subrepositories.
-In Go 1.4, the<code> pkg</code> level of the source tree is now gone, so for example
-the <a href="/pkg/fmt/"><code>fmt</code></a> package's source, once kept in
-directory <code>src/pkg/fmt</code>, now lives one level higher in <code>src/fmt</code>.
-</p>
-
-<p>
-<em>Updating</em>: Tools like <code>godoc</code> that discover source code
-need to know about the new location. All tools and services maintained by the Go team
-have been updated.
-</p>
-
-
-<h3 id="swig">SWIG</h3>
-
-<p>
-Due to runtime changes in this release, Go 1.4 requires SWIG 3.0.3.
-</p>
-
-<h3 id="misc">Miscellany</h3>
-
-<p>
-The standard repository's top-level <code>misc</code> directory used to contain
-Go support for editors and IDEs: plugins, initialization scripts and so on.
-Maintaining these was becoming time-consuming
-and needed external help because many of the editors listed were not used by
-members of the core team.
-It also required us to make decisions about which plugin was best for a given
-editor, even for editors we do not use.
-</p>
-
-<p>
-The Go community at large is much better suited to managing this information.
-In Go 1.4, therefore, this support has been removed from the repository.
-Instead, there is a curated, informative list of what's available on
-a <a href="/wiki/IDEsAndTextEditorPlugins">wiki page</a>.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-Most programs will run about the same speed or slightly faster in 1.4 than in 1.3;
-some will be slightly slower.
-There are many changes, making it hard to be precise about what to expect.
-</p>
-
-<p>
-As mentioned above, much of the runtime was translated to Go from C,
-which led to some reduction in heap sizes.
-It also improved performance slightly because the Go compiler is better
-at optimization, due to things like inlining, than the C compiler used to build
-the runtime.
-</p>
-
-<p>
-The garbage collector was sped up, leading to measurable improvements for
-garbage-heavy programs.
-On the other hand, the new write barriers slow things down again, typically
-by about the same amount but, depending on their behavior, some programs
-may be somewhat slower or faster.
-</p>
-
-<p>
-Library changes that affect performance are documented below.
-</p>
-
-<h2 id="library">Changes to the standard library</h2>
-
-<h3 id="new_packages">New packages</h3>
-
-<p>
-There are no new packages in this release.
-</p>
-
-<h3 id="major_library_changes">Major changes to the library</h3>
-
-<h4 id="scanner">bufio.Scanner</h4>
-
-<p>
-The <a href="/pkg/bufio/#Scanner"><code>Scanner</code></a> type in the
-<a href="/pkg/bufio/"><code>bufio</code></a> package
-has had a bug fixed that may require changes to custom
-<a href="/pkg/bufio/#SplitFunc"><code>split functions</code></a>.
-The bug made it impossible to generate an empty token at EOF; the fix
-changes the end conditions seen by the split function.
-Previously, scanning stopped at EOF if there was no more data.
-As of 1.4, the split function will be called once at EOF after input is exhausted,
-so the split function can generate a final empty token
-as the documentation already promised.
-</p>
-
-<p>
-<em>Updating</em>: Custom split functions may need to be modified to
-handle empty tokens at EOF as desired.
-</p>
-
-<h4 id="syscall">syscall</h4>
-
-<p>
-The <a href="/pkg/syscall/"><code>syscall</code></a> package is now frozen except
-for changes needed to maintain the core repository.
-In particular, it will no longer be extended to support new or different system calls
-that are not used by the core.
-The reasons are described at length in <a href="/s/go1.4-syscall">a
-separate document</a>.
-</p>
-
-<p>
-A new subrepository, <a href="https://golang.org/x/sys">golang.org/x/sys</a>,
-has been created to serve as the location for new developments to support system
-calls on all kernels.
-It has a nicer structure, with three packages that each hold the implementation of
-system calls for one of
-<a href="https://godoc.org/golang.org/x/sys/unix">Unix</a>,
-<a href="https://godoc.org/golang.org/x/sys/windows">Windows</a> and
-<a href="https://godoc.org/golang.org/x/sys/plan9">Plan 9</a>.
-These packages will be curated more generously, accepting all reasonable changes
-that reflect kernel interfaces in those operating systems.
-See the documentation and the article mentioned above for more information.
-</p>
-
-<p>
-<em>Updating</em>: Existing programs are not affected as the <code>syscall</code>
-package is largely unchanged from the 1.3 release.
-Future development that requires system calls not in the <code>syscall</code> package
-should build on <code>golang.org/x/sys</code> instead.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-The following list summarizes a number of minor changes to the library, mostly additions.
-See the relevant package documentation for more information about each change.
-</p>
-
-<ul>
-
-<li>
-The <a href="/pkg/archive/zip/"><code>archive/zip</code></a> package's
-<a href="/pkg/archive/zip/#Writer"><code>Writer</code></a> now supports a
-<a href="/pkg/archive/zip/#Writer.Flush"><code>Flush</code></a> method.
-</li>
-
-<li>
-The <a href="/pkg/compress/flate/"><code>compress/flate</code></a>,
-<a href="/pkg/compress/gzip/"><code>compress/gzip</code></a>,
-and <a href="/pkg/compress/zlib/"><code>compress/zlib</code></a>
-packages now support a <code>Reset</code> method
-for the decompressors, allowing them to reuse buffers and improve performance.
-The <a href="/pkg/compress/gzip/"><code>compress/gzip</code></a> package also has a
-<a href="/pkg/compress/gzip/#Reader.Multistream"><code>Multistream</code></a> method to control support
-for multistream files.
-</li>
-
-<li>
-The <a href="/pkg/crypto/"><code>crypto</code></a> package now has a
-<a href="/pkg/crypto/#Signer"><code>Signer</code></a> interface, implemented by the
-<code>PrivateKey</code> types in
-<a href="/pkg/crypto/ecdsa"><code>crypto/ecdsa</code></a> and
-<a href="/pkg/crypto/rsa"><code>crypto/rsa</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-now supports ALPN as defined in <a href="https://tools.ietf.org/html/rfc7301">RFC 7301</a>.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-now supports programmatic selection of server certificates
-through the new <a href="/pkg/crypto/tls/#Config.CertificateForName"><code>CertificateForName</code></a> function
-of the <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> struct.
-</li>
-
-<li>
-Also in the crypto/tls package, the server now supports
-<a href="https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-00">TLS_FALLBACK_SCSV</a>
-to help clients detect fallback attacks.
-(The Go client does not support fallback at all, so it is not vulnerable to
-those attacks.)
-</li>
-
-<li>
-The <a href="/pkg/database/sql/"><code>database/sql</code></a> package can now list all registered
-<a href="/pkg/database/sql/#Drivers"><code>Drivers</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/debug/dwarf/"><code>debug/dwarf</code></a> package now supports
-<a href="/pkg/debug/dwarf/#UnspecifiedType"><code>UnspecifiedType</code></a>s.
-</li>
-
-<li>
-In the <a href="/pkg/encoding/asn1/"><code>encoding/asn1</code></a> package,
-optional elements with a default value will now only be omitted if they have that value.
-</li>
-
-<li>
-The <a href="/pkg/encoding/csv/"><code>encoding/csv</code></a> package no longer
-quotes empty strings but does quote the end-of-data marker <code>\.</code> (backslash dot).
-This is permitted by the definition of CSV and allows it to work better with Postgres.
-</li>
-
-<li>
-The <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a> package has been rewritten to eliminate
-the use of unsafe operations, allowing it to be used in environments that do not permit use of the
-<a href="/pkg/unsafe/"><code>unsafe</code></a> package.
-For typical uses it will be 10-30% slower, but the delta is dependent on the type of the data and
-in some cases, especially involving arrays, it can be faster.
-There is no functional change.
-</li>
-
-<li>
-The <a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> package's
-<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> can now report its input offset.
-</li>
-
-<li>
-In the <a href="/pkg/fmt/"><code>fmt</code></a> package,
-formatting of pointers to maps has changed to be consistent with that of pointers
-to structs, arrays, and so on.
-For instance, <code>&amp;map[string]int{"one":</code> <code>1}</code> now prints by default as
-<code>&amp;map[one:</code> <code>1]</code> rather than as a hexadecimal pointer value.
-</li>
-
-<li>
-The <a href="/pkg/image/"><code>image</code></a> package's
-<a href="/pkg/image/#Image"><code>Image</code></a>
-implementations like
-<a href="/pkg/image/#RGBA"><code>RGBA</code></a> and
-<a href="/pkg/image/#Gray"><code>Gray</code></a> have specialized
-<a href="/pkg/image/#RGBA.RGBAAt"><code>RGBAAt</code></a> and
-<a href="/pkg/image/#Gray.GrayAt"><code>GrayAt</code></a> methods alongside the general
-<a href="/pkg/image/#Image.At"><code>At</code></a> method.
-</li>
-
-<li>
-The <a href="/pkg/image/png/"><code>image/png</code></a> package now has an
-<a href="/pkg/image/png/#Encoder"><code>Encoder</code></a>
-type to control the compression level used for encoding.
-</li>
-
-<li>
-The <a href="/pkg/math/"><code>math</code></a> package now has a
-<a href="/pkg/math/#Nextafter32"><code>Nextafter32</code></a> function.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package's
-<a href="/pkg/net/http/#Request"><code>Request</code></a> type
-has a new <a href="/pkg/net/http/#Request.BasicAuth"><code>BasicAuth</code></a> method
-that returns the username and password from authenticated requests using the
-HTTP Basic Authentication
-Scheme.
-</li>
-
-<li>The <a href="/pkg/net/http/"><code>net/http</code></a> package's
-<a href="/pkg/net/http/#Request"><code>Transport</code></a> type
-has a new <a href="/pkg/net/http/#Transport.DialTLS"><code>DialTLS</code></a> hook
-that allows customizing the behavior of outbound TLS connections.
-</li>
-
-<li>
-The <a href="/pkg/net/http/httputil/"><code>net/http/httputil</code></a> package's
-<a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a> type
-has a new field,
-<a href="/pkg/net/http/#ReverseProxy.ErrorLog"><code>ErrorLog</code></a>, that
-provides user control of logging.
-</li>
-
-<li>
-The <a href="/pkg/os/"><code>os</code></a> package
-now implements symbolic links on the Windows operating system
-through the <a href="/pkg/os/#Symlink"><code>Symlink</code></a> function.
-Other operating systems already have this functionality.
-There is also a new <a href="/pkg/os/#Unsetenv"><code>Unsetenv</code></a> function.
-</li>
-
-<li>
-The <a href="/pkg/reflect/"><code>reflect</code></a> package's
-<a href="/pkg/reflect/#Type"><code>Type</code></a> interface
-has a new method, <a href="/pkg/reflect/#type.Comparable"><code>Comparable</code></a>,
-that reports whether the type implements general comparisons.
-</li>
-
-<li>
-Also in the <a href="/pkg/reflect/"><code>reflect</code></a> package, the
-<a href="/pkg/reflect/#Value"><code>Value</code></a> interface is now three instead of four words
-because of changes to the implementation of interfaces in the runtime.
-This saves memory but has no semantic effect.
-</li>
-
-<li>
-The <a href="/pkg/runtime/"><code>runtime</code></a> package
-now implements monotonic clocks on Windows,
-as it already did for the other systems.
-</li>
-
-<li>
-The <a href="/pkg/runtime/"><code>runtime</code></a> package's
-<a href="/pkg/runtime/#MemStats.Mallocs"><code>Mallocs</code></a> counter
-now counts very small allocations that were missed in Go 1.3.
-This may break tests using <a href="/pkg/runtime/#ReadMemStats"><code>ReadMemStats</code></a>
-or <a href="/pkg/testing/#AllocsPerRun"><code>AllocsPerRun</code></a>
-due to the more accurate answer.
-</li>
-
-<li>
-In the <a href="/pkg/runtime/"><code>runtime</code></a> package,
-an array <a href="/pkg/runtime/#MemStats.PauseEnd"><code>PauseEnd</code></a>
-has been added to the
-<a href="/pkg/runtime/#MemStats"><code>MemStats</code></a>
-and <a href="/pkg/runtime/#GCStats"><code>GCStats</code></a> structs.
-This array is a circular buffer of times when garbage collection pauses ended.
-The corresponding pause durations are already recorded in
-<a href="/pkg/runtime/#MemStats.PauseNs"><code>PauseNs</code></a>
-</li>
-
-<li>
-The <a href="/pkg/runtime/race/"><code>runtime/race</code></a> package
-now supports FreeBSD, which means the
-<a href="/pkg/cmd/go/"><code>go</code></a> command's <code>-race</code>
-flag now works on FreeBSD.
-</li>
-
-<li>
-The <a href="/pkg/sync/atomic/"><code>sync/atomic</code></a> package
-has a new type, <a href="/pkg/sync/atomic/#Value"><code>Value</code></a>.
-<code>Value</code> provides an efficient mechanism for atomic loads and
-stores of values of arbitrary type.
-</li>
-
-<li>
-In the <a href="/pkg/syscall/"><code>syscall</code></a> package's
-implementation on Linux, the
-<a href="/pkg/syscall/#Setuid"><code>Setuid</code></a>
-and <a href="/pkg/syscall/#Setgid"><code>Setgid</code></a> have been disabled
-because those system calls operate on the calling thread, not the whole process, which is
-different from other platforms and not the expected result.
-</li>
-
-<li>
-The <a href="/pkg/testing/"><code>testing</code></a> package
-has a new facility to provide more control over running a set of tests.
-If the test code contains a function
-<pre>
-func TestMain(m *<a href="/pkg/testing/#M"><code>testing.M</code></a>)
-</pre>
-
-that function will be called instead of running the tests directly.
-The <code>M</code> struct contains methods to access and run the tests.
-</li>
-
-<li>
-Also in the <a href="/pkg/testing/"><code>testing</code></a> package,
-a new <a href="/pkg/testing/#Coverage"><code>Coverage</code></a>
-function reports the current test coverage fraction,
-enabling individual tests to report how much they are contributing to the
-overall coverage.
-</li>
-
-<li>
-The <a href="/pkg/text/scanner/"><code>text/scanner</code></a> package's
-<a href="/pkg/text/scanner/#Scanner"><code>Scanner</code></a> type
-has a new function,
-<a href="/pkg/text/scanner/#Scanner.IsIdentRune"><code>IsIdentRune</code></a>,
-allowing one to control the definition of an identifier when scanning.
-</li>
-
-<li>
-The <a href="/pkg/text/template/"><code>text/template</code></a> package's boolean
-functions <code>eq</code>, <code>lt</code>, and so on have been generalized to allow comparison
-of signed and unsigned integers, simplifying their use in practice.
-(Previously one could only compare values of the same signedness.)
-All negative values compare less than all unsigned values.
-</li>
-
-<li>
-The <code>time</code> package now uses the standard symbol for the micro prefix,
-the micro symbol (U+00B5 'µ'), to print microsecond durations.
-<a href="/pkg/time/#ParseDuration"><code>ParseDuration</code></a> still accepts <code>us</code>
-but the package no longer prints microseconds as <code>us</code>.
-<br>
-<em>Updating</em>: Code that depends on the output format of durations
-but does not use ParseDuration will need to be updated.
-</li>
-
-</ul>
diff --git a/_content/doc/go1.5.html b/_content/doc/go1.5.html
deleted file mode 100644
index 3514b55..0000000
--- a/_content/doc/go1.5.html
+++ /dev/null
@@ -1,1308 +0,0 @@
-<!--{
-	"Title": "Go 1.5 Release Notes"
-}-->
-
-
-<h2 id="introduction">Introduction to Go 1.5</h2>
-
-<p>
-The latest Go release, version 1.5,
-is a significant release, including major architectural changes to the implementation.
-Despite that, we expect almost all Go programs to continue to compile and run as before,
-because the release still maintains the Go 1 <a href="/doc/go1compat.html">promise
-of compatibility</a>.
-</p>
-
-<p>
-The biggest developments in the implementation are:
-</p>
-
-<ul>
-
-<li>
-The compiler and runtime are now written entirely in Go (with a little assembler).
-C is no longer involved in the implementation, and so the C compiler that was
-once necessary for building the distribution is gone.
-</li>
-
-<li>
-The garbage collector is now <a href="/s/go14gc">concurrent</a> and provides dramatically lower
-pause times by running, when possible, in parallel with other goroutines.
-</li>
-
-<li>
-By default, Go programs run with <code>GOMAXPROCS</code> set to the
-number of cores available; in prior releases it defaulted to 1.
-</li>
-
-<li>
-Support for <a href="/s/go14internal">internal packages</a>
-is now provided for all repositories, not just the Go core.
-</li>
-
-<li>
-The <code>go</code> command now provides <a href="/s/go15vendor">experimental
-support</a> for "vendoring" external dependencies.
-</li>
-
-<li>
-A new <code>go tool trace</code> command supports fine-grained
-tracing of program execution.
-</li>
-
-<li>
-A new <code>go doc</code> command (distinct from <code>godoc</code>)
-is customized for command-line use.
-</li>
-
-</ul>
-
-<p>
-These and a number of other changes to the implementation and tools
-are discussed below.
-</p>
-
-<p>
-The release also contains one small language change involving map literals.
-</p>
-
-<p>
-Finally, the timing of the <a href="/s/releasesched">release</a>
-strays from the usual six-month interval,
-both to provide more time to prepare this major release and to shift the schedule thereafter to
-time the release dates more conveniently.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<h3 id="map_literals">Map literals</h3>
-
-<p>
-Due to an oversight, the rule that allowed the element type to be elided from slice literals was not
-applied to map keys.
-This has been <a href="/cl/2591">corrected</a> in Go 1.5.
-An example will make this clear.
-As of Go 1.5, this map literal,
-</p>
-
-<pre>
-m := map[Point]string{
-    Point{29.935523, 52.891566}:   "Persepolis",
-    Point{-25.352594, 131.034361}: "Uluru",
-    Point{37.422455, -122.084306}: "Googleplex",
-}
-</pre>
-
-<p>
-may be written as follows, without the <code>Point</code> type listed explicitly:
-</p>
-
-<pre>
-m := map[Point]string{
-    {29.935523, 52.891566}:   "Persepolis",
-    {-25.352594, 131.034361}: "Uluru",
-    {37.422455, -122.084306}: "Googleplex",
-}
-</pre>
-
-<h2 id="implementation">The Implementation</h2>
-
-<h3 id="c">No more C</h3>
-
-<p>
-The compiler and runtime are now implemented in Go and assembler, without C.
-The only C source left in the tree is related to testing or to <code>cgo</code>.
-There was a C compiler in the tree in 1.4 and earlier.
-It was used to build the runtime; a custom compiler was necessary in part to
-guarantee the C code would work with the stack management of goroutines.
-Since the runtime is in Go now, there is no need for this C compiler and it is gone.
-Details of the process to eliminate C are discussed <a href="/s/go13compiler">elsewhere</a>.
-</p>
-
-<p>
-The conversion from C was done with the help of custom tools created for the job.
-Most important, the compiler was actually moved by automatic translation of
-the C code into Go.
-It is in effect the same program in a different language.
-It is not a new implementation
-of the compiler so we expect the process will not have introduced new compiler
-bugs.
-An overview of this process is available in the slides for
-<a href="/talks/2015/gogo.slide">this presentation</a>.
-</p>
-
-<h3 id="compiler_and_tools">Compiler and tools</h3>
-
-<p>
-Independent of but encouraged by the move to Go, the names of the tools have changed.
-The old names <code>6g</code>, <code>8g</code> and so on are gone; instead there
-is just one binary, accessible as <code>go</code> <code>tool</code> <code>compile</code>,
-that compiles Go source into binaries suitable for the architecture and operating system
-specified by <code>$GOARCH</code> and <code>$GOOS</code>.
-Similarly, there is now one linker (<code>go</code> <code>tool</code> <code>link</code>)
-and one assembler (<code>go</code> <code>tool</code> <code>asm</code>).
-The linker was translated automatically from the old C implementation,
-but the assembler is a new native Go implementation discussed
-in more detail below.
-</p>
-
-<p>
-Similar to the drop of the names <code>6g</code>, <code>8g</code>, and so on,
-the output of the compiler and assembler are now given a plain <code>.o</code> suffix
-rather than <code>.8</code>, <code>.6</code>, etc.
-</p>
-
-
-<h3 id="gc">Garbage collector</h3>
-
-<p>
-The garbage collector has been re-engineered for 1.5 as part of the development
-outlined in the <a href="/s/go14gc">design document</a>.
-Expected latencies are much lower than with the collector
-in prior releases, through a combination of advanced algorithms,
-better <a href="/s/go15gcpacing">scheduling</a> of the collector,
-and running more of the collection in parallel with the user program.
-The "stop the world" phase of the collector
-will almost always be under 10 milliseconds and usually much less.
-</p>
-
-<p>
-For systems that benefit from low latency, such as user-responsive web sites,
-the drop in expected latency with the new collector may be important.
-</p>
-
-<p>
-Details of the new collector were presented in a
-<a href="/talks/2015/go-gc.pdf">talk</a> at GopherCon 2015.
-</p>
-
-<h3 id="runtime">Runtime</h3>
-
-<p>
-In Go 1.5, the order in which goroutines are scheduled has been changed.
-The properties of the scheduler were never defined by the language,
-but programs that depend on the scheduling order may be broken
-by this change.
-We have seen a few (erroneous) programs affected by this change.
-If you have programs that implicitly depend on the scheduling
-order, you will need to update them.
-</p>
-
-<p>
-Another potentially breaking change is that the runtime now
-sets the default number of threads to run simultaneously,
-defined by <code>GOMAXPROCS</code>, to the number
-of cores available on the CPU.
-In prior releases the default was 1.
-Programs that do not expect to run with multiple cores may
-break inadvertently.
-They can be updated by removing the restriction or by setting
-<code>GOMAXPROCS</code> explicitly.
-For a more detailed discussion of this change, see
-the <a href="/s/go15gomaxprocs">design document</a>.
-</p>
-
-<h3 id="build">Build</h3>
-
-<p>
-Now that the Go compiler and runtime are implemented in Go, a Go compiler
-must be available to compile the distribution from source.
-Thus, to build the Go core, a working Go distribution must already be in place.
-(Go programmers who do not work on the core are unaffected by this change.)
-Any Go 1.4 or later distribution (including <code>gccgo</code>) will serve.
-For details, see the <a href="/s/go15bootstrap">design document</a>.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p>
-Due mostly to the industry's move away from the 32-bit x86 architecture,
-the set of binary downloads provided is reduced in 1.5.
-A distribution for the OS X operating system is provided only for the
-<code>amd64</code> architecture, not <code>386</code>.
-Similarly, the ports for Snow Leopard (Apple OS X 10.6) still work but are no
-longer released as a download or maintained since Apple no longer maintains that version
-of the operating system.
-Also, the <code>dragonfly/386</code> port is no longer supported at all
-because DragonflyBSD itself no longer supports the 32-bit 386 architecture.
-</p>
-
-<p>
-There are however several new ports available to be built from source.
-These include <code>darwin/arm</code> and <code>darwin/arm64</code>.
-The new port <code>linux/arm64</code> is mostly in place, but <code>cgo</code>
-is only supported using external linking.
-</p>
-
-<p>
-Also available as experiments are <code>ppc64</code>
-and <code>ppc64le</code> (64-bit PowerPC, big- and little-endian).
-Both these ports support <code>cgo</code> but
-only with internal linking.
-</p>
-
-<p>
-On FreeBSD, Go 1.5 requires FreeBSD 8-STABLE+ because of its new use of the <code>SYSCALL</code> instruction.
-</p>
-
-<p>
-On NaCl, Go 1.5 requires SDK version pepper-41. Later pepper versions are not
-compatible due to the removal of the sRPC subsystem from the NaCl runtime.
-</p>
-
-<p>
-On Darwin, the use of the system X.509 certificate interface can be disabled
-with the <code>ios</code> build tag.
-</p>
-
-<p>
-The Solaris port now has full support for cgo and the packages
-<a href="/pkg/net/"><code>net</code></a> and
-<a href="/pkg/crypto/x509/"><code>crypto/x509</code></a>,
-as well as a number of other fixes and improvements.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="translate">Translating</h3>
-
-<p>
-As part of the process to eliminate C from the tree, the compiler and
-linker were translated from C to Go.
-It was a genuine (machine assisted) translation, so the new programs are essentially
-the old programs translated rather than new ones with new bugs.
-We are confident the translation process has introduced few if any new bugs,
-and in fact uncovered a number of previously unknown bugs, now fixed.
-</p>
-
-<p>
-The assembler is a new program, however; it is described below.
-</p>
-
-<h3 id="rename">Renaming</h3>
-
-<p>
-The suites of programs that were the compilers (<code>6g</code>, <code>8g</code>, etc.),
-the assemblers (<code>6a</code>, <code>8a</code>, etc.),
-and the linkers (<code>6l</code>, <code>8l</code>, etc.)
-have each been consolidated into a single tool that is configured
-by the environment variables <code>GOOS</code> and <code>GOARCH</code>.
-The old names are gone; the new tools are available through the <code>go</code> <code>tool</code>
-mechanism as <code>go tool compile</code>,
-<code>go tool asm</code>,
-<code>and go tool link</code>.
-Also, the file suffixes <code>.6</code>, <code>.8</code>, etc. for the
-intermediate object files are also gone; now they are just plain <code>.o</code> files.
-</p>
-
-<p>
-For example, to build and link a program on amd64 for Darwin
-using the tools directly, rather than through <code>go build</code>,
-one would run:
-</p>
-
-<pre>
-$ export GOOS=darwin GOARCH=amd64
-$ go tool compile program.go
-$ go tool link program.o
-</pre>
-
-<h3 id="moving">Moving</h3>
-
-<p>
-Because the <a href="/pkg/go/types/"><code>go/types</code></a> package
-has now moved into the main repository (see below),
-the <a href="/cmd/vet"><code>vet</code></a> and
-<a href="/cmd/cover"><code>cover</code></a>
-tools have also been moved.
-They are no longer maintained in the external <code>golang.org/x/tools</code> repository,
-although (deprecated) source still resides there for compatibility with old releases.
-</p>
-
-<h3 id="compiler">Compiler</h3>
-
-<p>
-As described above, the compiler in Go 1.5 is a single Go program,
-translated from the old C source, that replaces <code>6g</code>, <code>8g</code>,
-and so on.
-Its target is configured by the environment variables <code>GOOS</code> and <code>GOARCH</code>.
-</p>
-
-<p>
-The 1.5 compiler is mostly equivalent to the old,
-but some internal details have changed.
-One significant change is that evaluation of constants now uses
-the <a href="/pkg/math/big/"><code>math/big</code></a> package
-rather than a custom (and less well tested) implementation of high precision
-arithmetic.
-We do not expect this to affect the results.
-</p>
-
-<p>
-For the amd64 architecture only, the compiler has a new option, <code>-dynlink</code>,
-that assists dynamic linking by supporting references to Go symbols
-defined in external shared libraries.
-</p>
-
-<h3 id="assembler">Assembler</h3>
-
-<p>
-Like the compiler and linker, the assembler in Go 1.5 is a single program
-that replaces the suite of assemblers (<code>6a</code>,
-<code>8a</code>, etc.) and the environment variables
-<code>GOARCH</code> and <code>GOOS</code>
-configure the architecture and operating system.
-Unlike the other programs, the assembler is a wholly new program
-written in Go.
-</p>
-
- <p>
-The new assembler is very nearly compatible with the previous
-ones, but there are a few changes that may affect some
-assembler source files.
-See the updated <a href="/doc/asm">assembler guide</a>
-for more specific information about these changes. In summary:
-
-</p>
-
-<p>
-First, the expression evaluation used for constants is a little
-different.
-It now uses unsigned 64-bit arithmetic and the precedence
-of operators (<code>+</code>, <code>-</code>, <code><<</code>, etc.)
-comes from Go, not C.
-We expect these changes to affect very few programs but
-manual verification may be required.
-</p>
-
-<p>
-Perhaps more important is that on machines where
-<code>SP</code> or <code>PC</code> is only an alias
-for a numbered register,
-such as <code>R13</code> for the stack pointer and
-<code>R15</code> for the hardware program counter
-on ARM,
-a reference to such a register that does not include a symbol
-is now illegal.
-For example, <code>SP</code> and <code>4(SP)</code> are
-illegal but <code>sym+4(SP)</code> is fine.
-On such machines, to refer to the hardware register use its
-true <code>R</code> name.
-</p>
-
-<p>
-One minor change is that some of the old assemblers
-permitted the notation
-</p>
-
-<pre>
-constant=value
-</pre>
-
-<p>
-to define a named constant.
-Since this is always possible to do with the traditional
-C-like <code>#define</code> notation, which is still
-supported (the assembler includes an implementation
-of a simplified C preprocessor), the feature was removed.
-</p>
-
-<h3 id="link">Linker</h3>
-
-<p>
-The linker in Go 1.5 is now one Go program,
-that replaces <code>6l</code>, <code>8l</code>, etc.
-Its operating system and instruction set are specified
-by the environment variables <code>GOOS</code> and <code>GOARCH</code>.
-</p>
-
-<p>
-There are several other changes.
-The most significant is the addition of a <code>-buildmode</code> option that
-expands the style of linking; it now supports
-situations such as building shared libraries and allowing other languages
-to call into Go libraries.
-Some of these were outlined in a <a href="/s/execmodes">design document</a>.
-For a list of the available build modes and their use, run
-</p>
-
-<pre>
-$ go help buildmode
-</pre>
-
-<p>
-Another minor change is that the linker no longer records build time stamps in
-the header of Windows executables.
-Also, although this may be fixed, Windows cgo executables are missing some
-DWARF information.
-</p>
-
-<p>
-Finally, the <code>-X</code> flag, which takes two arguments,
-as in
-</p>
-
-<pre>
--X importpath.name value
-</pre>
-
-<p>
-now also accepts a more common Go flag style with a single argument
-that is itself a <code>name=value</code> pair:
-</p>
-
-<pre>
--X importpath.name=value
-</pre>
-
-<p>
-Although the old syntax still works, it is recommended that uses of this
-flag in scripts and the like be updated to the new form.
-</p>
-
-<h3 id="go_command">Go command</h3>
-
-<p>
-The <a href="/cmd/go"><code>go</code></a> command's basic operation
-is unchanged, but there are a number of changes worth noting.
-</p>
-
-<p>
-The previous release introduced the idea of a directory internal to a package
-being unimportable through the <code>go</code> command.
-In 1.4, it was tested with the introduction of some internal elements
-in the core repository.
-As suggested in the <a href="/s/go14internal">design document</a>,
-that change is now being made available to all repositories.
-The rules are explained in the design document, but in summary any
-package in or under a directory named <code>internal</code> may
-be imported by packages rooted in the same subtree.
-Existing packages with directory elements named <code>internal</code> may be
-inadvertently broken by this change, which was why it was advertised
-in the last release.
-</p>
-
-<p>
-Another change in how packages are handled is the experimental
-addition of support for "vendoring".
-For details, see the documentation for the <a href="/cmd/go/#hdr-Vendor_Directories"><code>go</code> command</a>
-and the <a href="/s/go15vendor">design document</a>.
-</p>
-
-<p>
-There have also been several minor changes.
-Read the <a href="/cmd/go">documentation</a> for full details.
-</p>
-
-<ul>
-
-<li>
-SWIG support has been updated such that
-<code>.swig</code> and <code>.swigcxx</code>
-now require SWIG 3.0.6 or later.
-</li>
-
-<li>
-The <code>install</code> subcommand now removes the
-binary created by the <code>build</code> subcommand
-in the source directory, if present,
-to avoid problems having two binaries present in the tree.
-</li>
-
-<li>
-The <code>std</code> (standard library) wildcard package name
-now excludes commands.
-A new <code>cmd</code> wildcard covers the commands.
-</li>
-
-<li>
-A new <code>-asmflags</code> build option
-sets flags to pass to the assembler.
-However,
-the <code>-ccflags</code> build option has been dropped;
-it was specific to the old, now deleted C compiler .
-</li>
-
-<li>
-A new <code>-buildmode</code> build option
-sets the build mode, described above.
-</li>
-
-<li>
-A new <code>-pkgdir</code> build option
-sets the location of installed package archives,
-to help isolate custom builds.
-</li>
-
-<li>
-A new <code>-toolexec</code> build option
-allows substitution of a different command to invoke
-the compiler and so on.
-This acts as a custom replacement for <code>go tool</code>.
-</li>
-
-<li>
-The <code>test</code> subcommand now has a <code>-count</code>
-flag to specify how many times to run each test and benchmark.
-The <a href="/pkg/testing/"><code>testing</code></a> package
-does the work here, through the <code>-test.count</code> flag.
-</li>
-
-<li>
-The <code>generate</code> subcommand has a couple of new features.
-The <code>-run</code> option specifies a regular expression to select which directives
-to execute; this was proposed but never implemented in 1.4.
-The executing pattern now has access to two new environment variables:
-<code>$GOLINE</code> returns the source line number of the directive
-and <code>$DOLLAR</code> expands to a dollar sign.
-</li>
-
-<li>
-The <code>get</code> subcommand now has a <code>-insecure</code>
-flag that must be enabled if fetching from an insecure repository, one that
-does not encrypt the connection.
-</li>
-
-</ul>
-
-<h3 id="vet_command">Go vet command</h3>
-
-<p>
-The <a href="/cmd/vet"><code>go tool vet</code></a> command now does
-more thorough validation of struct tags.
-</p>
-
-<h3 id="trace_command">Trace command</h3>
-
-<p>
-A new tool is available for dynamic execution tracing of Go programs.
-The usage is analogous to how the test coverage tool works.
-Generation of traces is integrated into <code>go test</code>,
-and then a separate execution of the tracing tool itself analyzes the results:
-</p>
-
-<pre>
-$ go test -trace=trace.out path/to/package
-$ go tool trace [flags] pkg.test trace.out
-</pre>
-
-<p>
-The flags enable the output to be displayed in a browser window.
-For details, run <code>go tool trace -help</code>.
-There is also a description of the tracing facility in this
-<a href="/talks/2015/dynamic-tools.slide">talk</a>
-from GopherCon 2015.
-</p>
-
-<h3 id="doc_command">Go doc command</h3>
-
-<p>
-A few releases back, the <code>go doc</code>
-command was deleted as being unnecessary.
-One could always run "<code>godoc .</code>" instead.
-The 1.5 release introduces a new <a href="/cmd/doc"><code>go doc</code></a>
-command with a more convenient command-line interface than
-<code>godoc</code>'s.
-It is designed for command-line usage specifically, and provides a more
-compact and focused presentation of the documentation for a package
-or its elements, according to the invocation.
-It also provides case-insensitive matching and
-support for showing the documentation for unexported symbols.
-For details run "<code>go help doc</code>".
-</p>
-
-<h3 id="cgo">Cgo</h3>
-
-<p>
-When parsing <code>#cgo</code> lines,
-the invocation <code>${SRCDIR}</code> is now
-expanded into the path to the source directory.
-This allows options to be passed to the
-compiler and linker that involve file paths relative to the
-source code directory. Without the expansion the paths would be
-invalid when the current working directory changes.
-</p>
-
-<p>
-Solaris now has full cgo support.
-</p>
-
-<p>
-On Windows, cgo now uses external linking by default.
-</p>
-
-<p>
-When a C struct ends with a zero-sized field, but the struct itself is
-not zero-sized, Go code can no longer refer to the zero-sized field.
-Any such references will have to be rewritten.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-As always, the changes are so general and varied that precise statements
-about performance are difficult to make.
-The changes are even broader ranging than usual in this release, which
-includes a new garbage collector and a conversion of the runtime to Go.
-Some programs may run faster, some slower.
-On average the programs in the Go 1 benchmark suite run a few percent faster in Go 1.5
-than they did in Go 1.4,
-while as mentioned above the garbage collector's pauses are
-dramatically shorter, and almost always under 10 milliseconds.
-</p>
-
-<p>
-Builds in Go 1.5 will be slower by a factor of about two.
-The automatic translation of the compiler and linker from C to Go resulted in
-unidiomatic Go code that performs poorly compared to well-written Go.
-Analysis tools and refactoring helped to improve the code, but much remains to be done.
-Further profiling and optimization will continue in Go 1.6 and future releases.
-For more details, see these <a href="/talks/2015/gogo.slide">slides</a>
-and associated <a href="https://www.youtube.com/watch?v=cF1zJYkBW4A">video</a>.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="flag">Flag</h3>
-
-<p>
-The flag package's
-<a href="/pkg/flag/#PrintDefaults"><code>PrintDefaults</code></a>
-function, and method on <a href="/pkg/flag/#FlagSet"><code>FlagSet</code></a>,
-have been modified to create nicer usage messages.
-The format has been changed to be more human-friendly and in the usage
-messages a word quoted with `backquotes` is taken to be the name of the
-flag's operand to display in the usage message.
-For instance, a flag created with the invocation,
-</p>
-
-<pre>
-cpuFlag = flag.Int("cpu", 1, "run `N` processes in parallel")
-</pre>
-
-<p>
-will show the help message,
-</p>
-
-<pre>
--cpu N
-    	run N processes in parallel (default 1)
-</pre>
-
-<p>
-Also, the default is now listed only when it is not the zero value for the type.
-</p>
-
-<h3 id="math_big">Floats in math/big</h3>
-
-<p>
-The <a href="/pkg/math/big/"><code>math/big</code></a> package
-has a new, fundamental data type,
-<a href="/pkg/math/big/#Float"><code>Float</code></a>,
-which implements arbitrary-precision floating-point numbers.
-A <code>Float</code> value is represented by a boolean sign,
-a variable-length mantissa, and a 32-bit fixed-size signed exponent.
-The precision of a <code>Float</code> (the mantissa size in bits)
-can be specified explicitly or is otherwise determined by the first
-operation that creates the value.
-Once created, the size of a <code>Float</code>'s mantissa may be modified with the
-<a href="/pkg/math/big/#Float.SetPrec"><code>SetPrec</code></a> method.
-<code>Floats</code> support the concept of infinities, such as are created by
-overflow, but values that would lead to the equivalent of IEEE 754 NaNs
-trigger a panic.
-<code>Float</code> operations support all IEEE-754 rounding modes.
-When the precision is set to 24 (53) bits,
-operations that stay within the range of normalized <code>float32</code>
-(<code>float64</code>)
-values produce the same results as the corresponding IEEE-754
-arithmetic on those values.
-</p>
-
-<h3 id="go_types">Go types</h3>
-
-<p>
-The <a href="/pkg/go/types/"><code>go/types</code></a> package
-up to now has been maintained in the <code>golang.org/x</code>
-repository; as of Go 1.5 it has been relocated to the main repository.
-The code at the old location is now deprecated.
-There is also a modest API change in the package, discussed below.
-</p>
-
-<p>
-Associated with this move, the
-<a href="/pkg/go/constant/"><code>go/constant</code></a>
-package also moved to the main repository;
-it was <code>golang.org/x/tools/exact</code> before.
-The <a href="/pkg/go/importer/"><code>go/importer</code></a> package
-also moved to the main repository,
-as well as some tools described above.
-</p>
-
-<h3 id="net">Net</h3>
-
-<p>
-The DNS resolver in the net package has almost always used <code>cgo</code> to access
-the system interface.
-A change in Go 1.5 means that on most Unix systems DNS resolution
-will no longer require <code>cgo</code>, which simplifies execution
-on those platforms.
-Now, if the system's networking configuration permits, the native Go resolver
-will suffice.
-The important effect of this change is that each DNS resolution occupies a goroutine
-rather than a thread,
-so a program with multiple outstanding DNS requests will consume fewer operating
-system resources.
-</p>
-
-<p>
-The decision of how to run the resolver applies at run time, not build time.
-The <code>netgo</code> build tag that has been used to enforce the use
-of the Go resolver is no longer necessary, although it still works.
-A new <code>netcgo</code> build tag forces the use of the <code>cgo</code> resolver at
-build time.
-To force <code>cgo</code> resolution at run time set
-<code>GODEBUG=netdns=cgo</code> in the environment.
-More debug options are documented <a href="/cl/11584">here</a>.
-</p>
-
-<p>
-This change applies to Unix systems only.
-Windows, Mac OS X, and Plan 9 systems behave as before.
-</p>
-
-<h3 id="reflect">Reflect</h3>
-
-<p>
-The <a href="/pkg/reflect/"><code>reflect</code></a> package
-has two new functions: <a href="/pkg/reflect/#ArrayOf"><code>ArrayOf</code></a>
-and <a href="/pkg/reflect/#FuncOf"><code>FuncOf</code></a>.
-These functions, analogous to the extant
-<a href="/pkg/reflect/#SliceOf"><code>SliceOf</code></a> function,
-create new types at runtime to describe arrays and functions.
-</p>
-
-<h3 id="hardening">Hardening</h3>
-
-<p>
-Several dozen bugs were found in the standard library
-through randomized testing with the
-<a href="https://github.com/dvyukov/go-fuzz"><code>go-fuzz</code></a> tool.
-Bugs were fixed in the
-<a href="/pkg/archive/tar/"><code>archive/tar</code></a>,
-<a href="/pkg/archive/zip/"><code>archive/zip</code></a>,
-<a href="/pkg/compress/flate/"><code>compress/flate</code></a>,
-<a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>,
-<a href="/pkg/fmt/"><code>fmt</code></a>,
-<a href="/pkg/html/template/"><code>html/template</code></a>,
-<a href="/pkg/image/gif/"><code>image/gif</code></a>,
-<a href="/pkg/image/jpeg/"><code>image/jpeg</code></a>,
-<a href="/pkg/image/png/"><code>image/png</code></a>, and
-<a href="/pkg/text/template/"><code>text/template</code></a>,
-packages.
-The fixes harden the implementation against incorrect and malicious inputs.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<ul>
-
-<li>
-The <a href="/pkg/archive/zip/"><code>archive/zip</code></a> package's
-<a href="/pkg/archive/zip/#Writer"><code>Writer</code></a> type now has a
-<a href="/pkg/archive/zip/#Writer.SetOffset"><code>SetOffset</code></a>
-method to specify the location within the output stream at which to write the archive.
-</li>
-
-<li>
-The <a href="/pkg/bufio/#Reader"><code>Reader</code></a> in the
-<a href="/pkg/bufio/"><code>bufio</code></a> package now has a
-<a href="/pkg/bufio/#Reader.Discard"><code>Discard</code></a>
-method to discard data from the input.
-</li>
-
-<li>
-In the <a href="/pkg/bytes/"><code>bytes</code></a> package,
-the <a href="/pkg/bytes/#Buffer"><code>Buffer</code></a> type
-now has a <a href="/pkg/bytes/#Buffer.Cap"><code>Cap</code></a> method
-that reports the number of bytes allocated within the buffer.
-Similarly, in both the <a href="/pkg/bytes/"><code>bytes</code></a>
-and <a href="/pkg/strings/"><code>strings</code></a> packages,
-the <a href="/pkg/bytes/#Reader"><code>Reader</code></a>
-type now has a <a href="/pkg/bytes/#Reader.Size"><code>Size</code></a>
-method that reports the original length of the underlying slice or string.
-</li>
-
-<li>
-Both the <a href="/pkg/bytes/"><code>bytes</code></a> and
-<a href="/pkg/strings/"><code>strings</code></a> packages
-also now have a <a href="/pkg/bytes/#LastIndexByte"><code>LastIndexByte</code></a>
-function that locates the rightmost byte with that value in the argument.
-</li>
-
-<li>
-The <a href="/pkg/crypto/"><code>crypto</code></a> package
-has a new interface, <a href="/pkg/crypto/#Decrypter"><code>Decrypter</code></a>,
-that abstracts the behavior of a private key used in asymmetric decryption.
-</li>
-
-<li>
-In the <a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a> package,
-the documentation for the <a href="/pkg/crypto/cipher/#Stream"><code>Stream</code></a>
-interface has been clarified regarding the behavior when the source and destination are
-different lengths.
-If the destination is shorter than the source, the method will panic.
-This is not a change in the implementation, only the documentation.
-</li>
-
-<li>
-Also in the <a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a> package,
-there is now support for nonce lengths other than 96 bytes in AES's Galois/Counter mode (GCM),
-which some protocols require.
-</li>
-
-<li>
-In the <a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a> package,
-there is now a <code>Name</code> field in the
-<a href="/pkg/crypto/elliptic/#CurveParams"><code>CurveParams</code></a> struct,
-and the curves implemented in the package have been given names.
-These names provide a safer way to select a curve, as opposed to
-selecting its bit size, for cryptographic systems that are curve-dependent.
-</li>
-
-<li>
-Also in the <a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a> package,
-the <a href="/pkg/crypto/elliptic/#Unmarshal"><code>Unmarshal</code></a> function
-now verifies that the point is actually on the curve.
-(If it is not, the function returns nils).
-This change guards against certain attacks.
-</li>
-
-<li>
-The <a href="/pkg/crypto/sha512/"><code>crypto/sha512</code></a>
-package now has support for the two truncated versions of
-the SHA-512 hash algorithm, SHA-512/224 and SHA-512/256.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-minimum protocol version now defaults to TLS 1.0.
-The old default, SSLv3, is still available through <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> if needed.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-now supports Signed Certificate Timestamps (SCTs) as specified in RFC 6962.
-The server serves them if they are listed in the
-<a href="/pkg/crypto/tls/#Certificate"><code>Certificate</code></a> struct,
-and the client requests them and exposes them, if present,
-in its <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a> struct.
-
-<li>
-The stapled OCSP response to a <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> client connection,
-previously only available via the
-<a href="/pkg/crypto/tls/#Conn.OCSPResponse"><code>OCSPResponse</code></a> method,
-is now exposed in the <a href="/pkg/crypto/tls/#ConnectionState"><code>ConnectionState</code></a> struct.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> server implementation
-will now always call the
-<code>GetCertificate</code> function in
-the <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> struct
-to select a certificate for the connection when none is supplied.
-</li>
-
-<li>
-Finally, the session ticket keys in the
-<a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-can now be changed while the server is running.
-This is done through the new
-<a href="/pkg/crypto/tls/#Config.SetSessionTicketKeys"><code>SetSessionTicketKeys</code></a>
-method of the
-<a href="/pkg/crypto/tls/#Config"><code>Config</code></a> type.
-</li>
-
-<li>
-In the <a href="/pkg/crypto/x509/"><code>crypto/x509</code></a> package,
-wildcards are now accepted only in the leftmost label as defined in
-<a href="https://tools.ietf.org/html/rfc6125#section-6.4.3">the specification</a>.
-</li>
-
-<li>
-Also in the <a href="/pkg/crypto/x509/"><code>crypto/x509</code></a> package,
-the handling of unknown critical extensions has been changed.
-They used to cause parse errors but now they are parsed and caused errors only
-in <a href="/pkg/crypto/x509/#Certificate.Verify"><code>Verify</code></a>.
-The new field <code>UnhandledCriticalExtensions</code> of
-<a href="/pkg/crypto/x509/#Certificate"><code>Certificate</code></a> records these extensions.
-</li>
-
-<li>
-The <a href="/pkg/database/sql/#DB"><code>DB</code></a> type of the
-<a href="/pkg/database/sql/"><code>database/sql</code></a> package
-now has a <a href="/pkg/database/sql/#DB.Stats"><code>Stats</code></a> method
-to retrieve database statistics.
-</li>
-
-<li>
-The <a href="/pkg/debug/dwarf/"><code>debug/dwarf</code></a>
-package has extensive additions to better support DWARF version 4.
-See for example the definition of the new type
-<a href="/pkg/debug/dwarf/#Class"><code>Class</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/debug/dwarf/"><code>debug/dwarf</code></a> package
-also now supports decoding of DWARF line tables.
-</li>
-
-<li>
-The <a href="/pkg/debug/elf/"><code>debug/elf</code></a>
-package now has support for the 64-bit PowerPC architecture.
-</li>
-
-<li>
-The <a href="/pkg/encoding/base64/"><code>encoding/base64</code></a> package
-now supports unpadded encodings through two new encoding variables,
-<a href="/pkg/encoding/base64/#RawStdEncoding"><code>RawStdEncoding</code></a> and
-<a href="/pkg/encoding/base64/#RawURLEncoding"><code>RawURLEncoding</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/encoding/json/"><code>encoding/json</code></a> package
-now returns an <a href="/pkg/encoding/json/#UnmarshalTypeError"><code>UnmarshalTypeError</code></a>
-if a JSON value is not appropriate for the target variable or component
-to which it is being unmarshaled.
-</li>
-
-<li>
-The <code>encoding/json</code>'s
-<a href="/pkg/encoding/json/#Decoder"><code>Decoder</code></a>
-type has a new method that provides a streaming interface for decoding
-a JSON document:
-<a href="/pkg/encoding/json/#Decoder.Token"><code>Token</code></a>.
-It also interoperates with the existing functionality of <code>Decode</code>,
-which will continue a decode operation already started with <code>Decoder.Token</code>.
-</li>
-
-<li>
-The <a href="/pkg/flag/"><code>flag</code></a> package
-has a new function, <a href="/pkg/flag/#UnquoteUsage"><code>UnquoteUsage</code></a>,
-to assist in the creation of usage messages using the new convention
-described above.
-</li>
-
-<li>
-In the <a href="/pkg/fmt/"><code>fmt</code></a> package,
-a value of type <a href="/pkg/reflect/#Value"><code>Value</code></a> now
-prints what it holds, rather than use the <code>reflect.Value</code>'s <code>Stringer</code>
-method, which produces things like <code>&lt;int Value&gt;</code>.
-</li>
-
-<li>
-The <a href="/pkg/ast/#EmptyStmt"><code>EmptyStmt</code></a> type
-in the <a href="/pkg/go/ast/"><code>go/ast</code></a> package now
-has a boolean <code>Implicit</code> field that records whether the
-semicolon was implicitly added or was present in the source.
-</li>
-
-<li>
-For forward compatibility the <a href="/pkg/go/build/"><code>go/build</code></a> package
-reserves <code>GOARCH</code> values for  a number of architectures that Go might support one day.
-This is not a promise that it will.
-Also, the <a href="/pkg/go/build/#Package"><code>Package</code></a> struct
-now has a <code>PkgTargetRoot</code> field that stores the
-architecture-dependent root directory in which to install, if known.
-</li>
-
-<li>
-The (newly migrated) <a href="/pkg/go/types/"><code>go/types</code></a>
-package allows one to control the prefix attached to package-level names using
-the new <a href="/pkg/go/types/#Qualifier"><code>Qualifier</code></a>
-function type as an argument to several functions. This is an API change for
-the package, but since it is new to the core, it is not breaking the Go 1 compatibility
-rules since code that uses the package must explicitly ask for it at its new location.
-To update, run
-<a href="/cmd/go/#hdr-Run_go_tool_fix_on_packages"><code>go fix</code></a> on your package.
-</li>
-
-<li>
-In the <a href="/pkg/image/"><code>image</code></a> package,
-the <a href="/pkg/image/#Rectangle"><code>Rectangle</code></a> type
-now implements the <a href="/pkg/image/#Image"><code>Image</code></a> interface,
-so a <code>Rectangle</code> can serve as a mask when drawing.
-</li>
-
-<li>
-Also in the <a href="/pkg/image/"><code>image</code></a> package,
-to assist in the handling of some JPEG images,
-there is now support for 4:1:1 and 4:1:0 YCbCr subsampling and basic
-CMYK support, represented by the new <code>image.CMYK</code> struct.
-</li>
-
-<li>
-The <a href="/pkg/image/color/"><code>image/color</code></a> package
-adds basic CMYK support, through the new
-<a href="/pkg/image/color/#CMYK"><code>CMYK</code></a> struct,
-the <a href="/pkg/image/color/#CMYKModel"><code>CMYKModel</code></a> color model, and the
-<a href="/pkg/image/color/#CMYKToRGB"><code>CMYKToRGB</code></a> function, as
-needed by some JPEG images.
-</li>
-
-<li>
-Also in the <a href="/pkg/image/color/"><code>image/color</code></a> package,
-the conversion of a <a href="/pkg/image/color/#YCbCr"><code>YCbCr</code></a>
-value to <code>RGBA</code> has become more precise.
-Previously, the low 8 bits were just an echo of the high 8 bits;
-now they contain more accurate information.
-Because of the echo property of the old code, the operation
-<code>uint8(r)</code> to extract an 8-bit red value worked, but is incorrect.
-In Go 1.5, that operation may yield a different value.
-The correct code is, and always was, to select the high 8 bits:
-<code>uint8(r&gt;&gt;8)</code>.
-Incidentally, the <code>image/draw</code> package
-provides better support for such conversions; see
-<a href="https://blog.golang.org/go-imagedraw-package">this blog post</a>
-for more information.
-</li>
-
-<li>
-Finally, as of Go 1.5 the closest match check in
-<a href="/pkg/image/color/#Palette.Index"><code>Index</code></a>
-now honors the alpha channel.
-</li>
-
-<li>
-The <a href="/pkg/image/gif/"><code>image/gif</code></a> package
-includes a couple of generalizations.
-A multiple-frame GIF file can now have an overall bounds different
-from all the contained single frames' bounds.
-Also, the <a href="/pkg/image/gif/#GIF"><code>GIF</code></a> struct
-now has a <code>Disposal</code> field
-that specifies the disposal method for each frame.
-</li>
-
-<li>
-The <a href="/pkg/io/"><code>io</code></a> package
-adds a <a href="/pkg/io/#CopyBuffer"><code>CopyBuffer</code></a> function
-that is like <a href="/pkg/io/#Copy"><code>Copy</code></a> but
-uses a caller-provided buffer, permitting control of allocation and buffer size.
-</li>
-
-<li>
-The <a href="/pkg/log/"><code>log</code></a> package
-has a new <a href="/pkg/log/#LUTC"><code>LUTC</code></a> flag
-that causes time stamps to be printed in the UTC time zone.
-It also adds a <a href="/pkg/log/#Logger.SetOutput"><code>SetOutput</code></a> method
-for user-created loggers.
-</li>
-
-<li>
-In Go 1.4, <a href="/pkg/math/#Max"><code>Max</code></a> was not detecting all possible NaN bit patterns.
-This is fixed in Go 1.5, so programs that use <code>math.Max</code> on data including NaNs may behave differently,
-but now correctly according to the IEEE754 definition of NaNs.
-</li>
-
-<li>
-The <a href="/pkg/math/big/"><code>math/big</code></a> package
-adds a new <a href="/pkg/math/big/#Jacobi"><code>Jacobi</code></a>
-function for integers and a new
-<a href="/pkg/math/big/#Int.ModSqrt"><code>ModSqrt</code></a>
-method for the <a href="/pkg/math/big/#Int"><code>Int</code></a> type.
-</li>
-
-<li>
-The mime package
-adds a new <a href="/pkg/mime/#WordDecoder"><code>WordDecoder</code></a> type
-to decode MIME headers containing RFC 204-encoded words.
-It also provides <a href="/pkg/mime/#BEncoding"><code>BEncoding</code></a> and
-<a href="/pkg/mime/#QEncoding"><code>QEncoding</code></a>
-as implementations of the encoding schemes of RFC 2045 and RFC 2047.
-</li>
-
-<li>
-The <a href="/pkg/mime/"><code>mime</code></a> package also adds an
-<a href="/pkg/mime/#ExtensionsByType"><code>ExtensionsByType</code></a>
-function that returns the MIME extensions know to be associated with a given MIME type.
-</li>
-
-<li>
-There is a new <a href="/pkg/mime/quotedprintable/"><code>mime/quotedprintable</code></a>
-package that implements the quoted-printable encoding defined by RFC 2045.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package will now
-<a href="/pkg/net/#Dial"><code>Dial</code></a> hostnames by trying each
-IP address in order until one succeeds.
-The <code><a href="/pkg/net/#Dialer">Dialer</a>.DualStack</code>
-mode now implements Happy Eyeballs
-(<a href="https://tools.ietf.org/html/rfc6555">RFC 6555</a>) by giving the
-first address family a 300ms head start; this value can be overridden by
-the new <code>Dialer.FallbackDelay</code>.
-</li>
-
-<li>
-A number of inconsistencies in the types returned by errors in the
-<a href="/pkg/net/"><code>net</code></a> package have been
-tidied up.
-Most now return an
-<a href="/pkg/net/#OpError"><code>OpError</code></a> value
-with more information than before.
-Also, the <a href="/pkg/net/#OpError"><code>OpError</code></a>
-type now includes a <code>Source</code> field that holds the local
-network address.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package now
-has support for setting trailers from a server <a href="/pkg/net/http/#Handler"><code>Handler</code></a>.
-For details, see the documentation for
-<a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>.
-</li>
-
-<li>
-There is a new method to cancel a <a href="/pkg/net/http/"><code>net/http</code></a>
-<code>Request</code> by setting the new
-<a href="/pkg/net/http/#Request"><code>Request.Cancel</code></a>
-field.
-It is supported by <code>http.Transport</code>.
-The <code>Cancel</code> field's type is compatible with the
-<a href="https://godoc.org/golang.org/x/net/context"><code>context.Context.Done</code></a>
-return value.
-</li>
-
-<li>
-Also in the <a href="/pkg/net/http/"><code>net/http</code></a> package,
-there is code to ignore the zero <a href="/pkg/time/#Time"><code>Time</code></a> value
-in the <a href="/pkg/net/#ServeContent"><code>ServeContent</code></a> function.
-As of Go 1.5, it now also ignores a time value equal to the Unix epoch.
-</li>
-
-<li>
-The <a href="/pkg/net/http/fcgi/"><code>net/http/fcgi</code></a> package
-exports two new errors,
-<a href="/pkg/net/http/fcgi/#ErrConnClosed"><code>ErrConnClosed</code></a> and
-<a href="/pkg/net/http/fcgi/#ErrRequestAborted"><code>ErrRequestAborted</code></a>,
-to report the corresponding error conditions.
-</li>
-
-<li>
-The <a href="/pkg/net/http/cgi/"><code>net/http/cgi</code></a> package
-had a bug that mishandled the values of the environment variables
-<code>REMOTE_ADDR</code> and <code>REMOTE_HOST</code>.
-This has been fixed.
-Also, starting with Go 1.5 the package sets the <code>REMOTE_PORT</code>
-variable.
-</li>
-
-<li>
-The <a href="/pkg/net/mail/"><code>net/mail</code></a> package
-adds an <a href="/pkg/net/mail/#AddressParser"><code>AddressParser</code></a>
-type that can parse mail addresses.
-</li>
-
-<li>
-The <a href="/pkg/net/smtp/"><code>net/smtp</code></a> package
-now has a <a href="/pkg/net/smtp/#Client.TLSConnectionState"><code>TLSConnectionState</code></a>
-accessor to the <a href="/pkg/net/smtp/#Client"><code>Client</code></a>
-type that returns the client's TLS state.
-</li>
-
-<li>
-The <a href="/pkg/os/"><code>os</code></a> package
-has a new <a href="/pkg/os/#LookupEnv"><code>LookupEnv</code></a> function
-that is similar to <a href="/pkg/os/#Getenv"><code>Getenv</code></a>
-but can distinguish between an empty environment variable and a missing one.
-</li>
-
-<li>
-The <a href="/pkg/os/signal/"><code>os/signal</code></a> package
-adds new <a href="/pkg/os/signal/#Ignore"><code>Ignore</code></a> and
-<a href="/pkg/os/signal/#Reset"><code>Reset</code></a> functions.
-</li>
-
-<li>
-The <a href="/pkg/runtime/"><code>runtime</code></a>,
-<a href="/pkg/runtime/trace/"><code>runtime/trace</code></a>,
-and <a href="/pkg/net/http/pprof/"><code>net/http/pprof</code></a> packages
-each have new functions to support the tracing facilities described above:
-<a href="/pkg/runtime/#ReadTrace"><code>ReadTrace</code></a>,
-<a href="/pkg/runtime/#StartTrace"><code>StartTrace</code></a>,
-<a href="/pkg/runtime/#StopTrace"><code>StopTrace</code></a>,
-<a href="/pkg/runtime/trace/#Start"><code>Start</code></a>,
-<a href="/pkg/runtime/trace/#Stop"><code>Stop</code></a>, and
-<a href="/pkg/net/http/pprof/#Trace"><code>Trace</code></a>.
-See the respective documentation for details.
-</li>
-
-<li>
-The <a href="/pkg/runtime/pprof/"><code>runtime/pprof</code></a> package
-by default now includes overall memory statistics in all memory profiles.
-</li>
-
-<li>
-The <a href="/pkg/strings/"><code>strings</code></a> package
-has a new <a href="/pkg/strings/#Compare"><code>Compare</code></a> function.
-This is present to provide symmetry with the <a href="/pkg/bytes/"><code>bytes</code></a> package
-but is otherwise unnecessary as strings support comparison natively.
-</li>
-
-<li>
-The <a href="/pkg/sync/#WaitGroup"><code>WaitGroup</code></a> implementation in
-package <a href="/pkg/sync/"><code>sync</code></a>
-now diagnoses code that races a call to <a href="/pkg/sync/#WaitGroup.Add"><code>Add</code></a>
-against a return from <a href="/pkg/sync/#WaitGroup.Wait"><code>Wait</code></a>.
-If it detects this condition, the implementation panics.
-</li>
-
-<li>
-In the <a href="/pkg/syscall/"><code>syscall</code></a> package,
-the Linux <code>SysProcAttr</code> struct now has a
-<code>GidMappingsEnableSetgroups</code> field, made necessary
-by security changes in Linux 3.19.
-On all Unix systems, the struct also has new <code>Foreground</code> and <code>Pgid</code> fields
-to provide more control when exec'ing.
-On Darwin, there is now a <code>Syscall9</code> function
-to support calls with too many arguments.
-</li>
-
-<li>
-The <a href="/pkg/testing/quick/"><code>testing/quick</code></a> will now
-generate <code>nil</code> values for pointer types,
-making it possible to use with recursive data structures.
-Also, the package now supports generation of array types.
-</li>
-
-<li>
-In the <a href="/pkg/text/template/"><code>text/template</code></a> and
-<a href="/pkg/html/template/"><code>html/template</code></a> packages,
-integer constants too large to be represented as a Go integer now trigger a
-parse error. Before, they were silently converted to floating point, losing
-precision.
-</li>
-
-<li>
-Also in the <a href="/pkg/text/template/"><code>text/template</code></a> and
-<a href="/pkg/html/template/"><code>html/template</code></a> packages,
-a new <a href="/pkg/text/template/#Template.Option"><code>Option</code></a> method
-allows customization of the behavior of the template during execution.
-The sole implemented option allows control over how a missing key is
-handled when indexing a map.
-The default, which can now be overridden, is as before: to continue with an invalid value.
-</li>
-
-<li>
-The <a href="/pkg/time/"><code>time</code></a> package's
-<code>Time</code> type has a new method
-<a href="/pkg/time/#Time.AppendFormat"><code>AppendFormat</code></a>,
-which can be used to avoid allocation when printing a time value.
-</li>
-
-<li>
-The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-support throughout the system has been upgraded from version 7.0 to
-<a href="http://www.unicode.org/versions/Unicode8.0.0/">Unicode 8.0</a>.
-</li>
-
-</ul>
diff --git a/_content/doc/go1.6.html b/_content/doc/go1.6.html
deleted file mode 100644
index 1bcfe46..0000000
--- a/_content/doc/go1.6.html
+++ /dev/null
@@ -1,920 +0,0 @@
-<!--{
-	"Title": "Go 1.6 Release Notes"
-}-->
-
-<!--
-Edit .,s;^PKG:([a-z][A-Za-z0-9_/]+);<a href="/pkg/\1/"><code>\1</code></a>;g
-Edit .,s;^([a-z][A-Za-z0-9_/]+)\.([A-Z][A-Za-z0-9_]+\.)?([A-Z][A-Za-z0-9_]+)([ .',]|$);<a href="/pkg/\1/#\2\3"><code>\3</code></a>\4;g
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.6</h2>
-
-<p>
-The latest Go release, version 1.6, arrives six months after 1.5.
-Most of its changes are in the implementation of the language, runtime, and libraries.
-There are no changes to the language specification.
-As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-The release adds new ports to <a href="#ports">Linux on 64-bit MIPS and Android on 32-bit x86</a>;
-defined and enforced <a href="#cgo">rules for sharing Go pointers with C</a>;
-transparent, automatic <a href="#http2">support for HTTP/2</a>;
-and a new mechanism for <a href="#template">template reuse</a>.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-There are no language changes in this release.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p>
-Go 1.6 adds experimental ports to
-Linux on 64-bit MIPS (<code>linux/mips64</code> and <code>linux/mips64le</code>).
-These ports support <code>cgo</code> but only with internal linking.
-</p>
-
-<p>
-Go 1.6 also adds an experimental port to Android on 32-bit x86 (<code>android/386</code>).
-</p>
-
-<p>
-On FreeBSD, Go 1.6 defaults to using <code>clang</code>, not <code>gcc</code>, as the external C compiler.
-</p>
-
-<p>
-On Linux on little-endian 64-bit PowerPC (<code>linux/ppc64le</code>),
-Go 1.6 now supports <code>cgo</code> with external linking and
-is roughly feature complete.
-</p>
-
-<p>
-On NaCl, Go 1.5 required SDK version pepper-41.
-Go 1.6 adds support for later SDK versions.
-</p>
-
-<p>
-On 32-bit x86 systems using the <code>-dynlink</code> or <code>-shared</code> compilation modes,
-the register CX is now overwritten by certain memory references and should
-be avoided in hand-written assembly.
-See the <a href="/doc/asm#x86">assembly documentation</a> for details.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="cgo">Cgo</h3>
-
-<p>
-There is one major change to <a href="/cmd/cgo/"><code>cgo</code></a>, along with one minor change.
-</p>
-
-<p>
-The major change is the definition of rules for sharing Go pointers with C code,
-to ensure that such C code can coexist with Go's garbage collector.
-Briefly, Go and C may share memory allocated by Go
-when a pointer to that memory is passed to C as part of a <code>cgo</code> call,
-provided that the memory itself contains no pointers to Go-allocated memory,
-and provided that C does not retain the pointer after the call returns.
-These rules are checked by the runtime during program execution:
-if the runtime detects a violation, it prints a diagnosis and crashes the program.
-The checks can be disabled by setting the environment variable
-<code>GODEBUG=cgocheck=0</code>, but note that the vast majority of
-code identified by the checks is subtly incompatible with garbage collection
-in one way or another.
-Disabling the checks will typically only lead to more mysterious failure modes.
-Fixing the code in question should be strongly preferred
-over turning off the checks.
-See the <a href="/cmd/cgo/#hdr-Passing_pointers"><code>cgo</code> documentation</a> for more details.
-</p>
-
-<p>
-The minor change is
-the addition of explicit <code>C.complexfloat</code> and <code>C.complexdouble</code> types,
-separate from Go's <code>complex64</code> and <code>complex128</code>.
-Matching the other numeric types, C's complex types and Go's complex type are
-no longer interchangeable.
-</p>
-
-<h3 id="compiler">Compiler Toolchain</h3>
-
-<p>
-The compiler toolchain is mostly unchanged.
-Internally, the most significant change is that the parser is now hand-written
-instead of generated from <a href="/cmd/yacc/">yacc</a>.
-</p>
-
-<p>
-The compiler, linker, and <code>go</code> command have a new flag <code>-msan</code>,
-analogous to <code>-race</code> and only available on linux/amd64,
-that enables interoperation with the <a href="https://clang.llvm.org/docs/MemorySanitizer.html">Clang MemorySanitizer</a>.
-Such interoperation is useful mainly for testing a program containing suspect C or C++ code.
-</p>
-
-<p>
-The linker has a new option <code>-libgcc</code> to set the expected location
-of the C compiler support library when linking <a href="/cmd/cgo/"><code>cgo</code></a> code.
-The option is only consulted when using <code>-linkmode=internal</code>,
-and it may be set to <code>none</code> to disable the use of a support library.
-</p>
-
-<p>
-The implementation of <a href="/doc/go1.5#link">build modes started in Go 1.5</a> has been expanded to more systems.
-This release adds support for the <code>c-shared</code> mode on <code>android/386</code>, <code>android/amd64</code>,
-<code>android/arm64</code>, <code>linux/386</code>, and <code>linux/arm64</code>;
-for the <code>shared</code> mode on <code>linux/386</code>, <code>linux/arm</code>, <code>linux/amd64</code>, and <code>linux/ppc64le</code>;
-and for the new <code>pie</code> mode (generating position-independent executables) on
-<code>android/386</code>, <code>android/amd64</code>, <code>android/arm</code>, <code>android/arm64</code>, <code>linux/386</code>,
-<code>linux/amd64</code>, <code>linux/arm</code>, <code>linux/arm64</code>, and <code>linux/ppc64le</code>.
-See the <a href="/s/execmodes">design document</a> for details.
-</p>
-
-<p>
-As a reminder, the linker's <code>-X</code> flag changed in Go 1.5.
-In Go 1.4 and earlier, it took two arguments, as in
-</p>
-
-<pre>
--X importpath.name value
-</pre>
-
-<p>
-Go 1.5 added an alternative syntax using a single argument
-that is itself a <code>name=value</code> pair:
-</p>
-
-<pre>
--X importpath.name=value
-</pre>
-
-<p>
-In Go 1.5 the old syntax was still accepted, after printing a warning
-suggesting use of the new syntax instead.
-Go 1.6 continues to accept the old syntax and print the warning.
-Go 1.7 will remove support for the old syntax.
-</p>
-
-<h3 id="gccgo">Gccgo</h3>
-
-<p>
-The release schedules for the GCC and Go projects do not coincide.
-GCC release 5 contains the Go 1.4 version of gccgo.
-The next release, GCC 6, will have the Go 1.6.1 version of gccgo.
-</p>
-
-<h3 id="go_command">Go command</h3>
-
-<p>
-The <a href="/cmd/go"><code>go</code></a> command's basic operation
-is unchanged, but there are a number of changes worth noting.
-</p>
-
-<p>
-Go 1.5 introduced experimental support for vendoring,
-enabled by setting the <code>GO15VENDOREXPERIMENT</code> environment variable to <code>1</code>.
-Go 1.6 keeps the vendoring support, no longer considered experimental,
-and enables it by default.
-It can be disabled explicitly by setting
-the <code>GO15VENDOREXPERIMENT</code> environment variable to <code>0</code>.
-Go 1.7 will remove support for the environment variable.
-</p>
-
-<p>
-The most likely problem caused by enabling vendoring by default happens
-in source trees containing an existing directory named <code>vendor</code> that
-does not expect to be interpreted according to new vendoring semantics.
-In this case, the simplest fix is to rename the directory to anything other
-than <code>vendor</code> and update any affected import paths.
-</p>
-
-<p>
-For details about vendoring,
-see the documentation for the <a href="/cmd/go/#hdr-Vendor_Directories"><code>go</code> command</a>
-and the <a href="/s/go15vendor">design document</a>.
-</p>
-
-<p>
-There is a new build flag, <code>-msan</code>,
-that compiles Go with support for the LLVM memory sanitizer.
-This is intended mainly for use when linking against C or C++ code
-that is being checked with the memory sanitizer.
-</p>
-
-<h3 id="doc_command">Go doc command</h3>
-
-<p>
-Go 1.5 introduced the
-<a href="/cmd/go/#hdr-Show_documentation_for_package_or_symbol"><code>go doc</code></a> command,
-which allows references to packages using only the package name, as in
-<code>go</code> <code>doc</code> <code>http</code>.
-In the event of ambiguity, the Go 1.5 behavior was to use the package
-with the lexicographically earliest import path.
-In Go 1.6, ambiguity is resolved by preferring import paths with
-fewer elements, breaking ties using lexicographic comparison.
-An important effect of this change is that original copies of packages
-are now preferred over vendored copies.
-Successful searches also tend to run faster.
-</p>
-
-<h3 id="vet_command">Go vet command</h3>
-
-<p>
-The <a href="/cmd/vet"><code>go vet</code></a> command now diagnoses
-passing function or method values as arguments to <code>Printf</code>,
-such as when passing <code>f</code> where <code>f()</code> was intended.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-As always, the changes are so general and varied that precise statements
-about performance are difficult to make.
-Some programs may run faster, some slower.
-On average the programs in the Go 1 benchmark suite run a few percent faster in Go 1.6
-than they did in Go 1.5.
-The garbage collector's pauses are even lower than in Go 1.5,
-especially for programs using
-a large amount of memory.
-</p>
-
-<p>
-There have been significant optimizations bringing more than 10% improvements
-to implementations of the
-<a href="/pkg/compress/bzip2/"><code>compress/bzip2</code></a>,
-<a href="/pkg/compress/gzip/"><code>compress/gzip</code></a>,
-<a href="/pkg/crypto/aes/"><code>crypto/aes</code></a>,
-<a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a>,
-<a href="/pkg/crypto/ecdsa/"><code>crypto/ecdsa</code></a>, and
-<a href="/pkg/sort/"><code>sort</code></a> packages.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="http2">HTTP/2</h3>
-
-<p>
-Go 1.6 adds transparent support in the
-<a href="/pkg/net/http/"><code>net/http</code></a> package
-for the new <a href="https://http2.github.io/">HTTP/2 protocol</a>.
-Go clients and servers will automatically use HTTP/2 as appropriate when using HTTPS.
-There is no exported API specific to details of the HTTP/2 protocol handling,
-just as there is no exported API specific to HTTP/1.1.
-</p>
-
-<p>
-Programs that must disable HTTP/2 can do so by setting
-<a href="/pkg/net/http/#Transport"><code>Transport.TLSNextProto</code></a> (for clients)
-or
-<a href="/pkg/net/http/#Server"><code>Server.TLSNextProto</code></a> (for servers)
-to a non-nil, empty map.
-</p>
-
-<p>
-Programs that must adjust HTTP/2 protocol-specific details can import and use
-<a href="https://golang.org/x/net/http2"><code>golang.org/x/net/http2</code></a>,
-in particular its
-<a href="https://godoc.org/golang.org/x/net/http2/#ConfigureServer">ConfigureServer</a>
-and
-<a href="https://godoc.org/golang.org/x/net/http2/#ConfigureTransport">ConfigureTransport</a>
-functions.
-</p>
-
-<h3 id="runtime">Runtime</h3>
-
-<p>
-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 the program
-under the
-<a href="https://blog.golang.org/race-detector">race detector</a>,
-which will more reliably identify the race
-and give more detail.
-</p>
-
-<p>
-For program-ending panics, the runtime now by default
-prints only the stack of the running goroutine,
-not all existing goroutines.
-Usually only the current goroutine is relevant to a panic,
-so omitting the others significantly reduces irrelevant output
-in a crash message.
-To see the stacks from all goroutines in crash messages, set the environment variable
-<code>GOTRACEBACK</code> to <code>all</code>
-or call
-<a href="/pkg/runtime/debug/#SetTraceback"><code>debug.SetTraceback</code></a>
-before the crash, and rerun the program.
-See the <a href="/pkg/runtime/#hdr-Environment_Variables">runtime documentation</a> for details.
-</p>
-
-<p>
-<em>Updating</em>:
-Uncaught panics intended to dump the state of the entire program,
-such as when a timeout is detected or when explicitly handling a received signal,
-should now call <code>debug.SetTraceback("all")</code> before panicking.
-Searching for uses of
-<a href="/pkg/os/signal/#Notify"><code>signal.Notify</code></a> may help identify such code.
-</p>
-
-<p>
-On Windows, Go programs in Go 1.5 and earlier forced
-the global Windows timer resolution to 1ms at startup
-by calling <code>timeBeginPeriod(1)</code>.
-Go no longer needs this for good scheduler performance,
-and changing the global timer resolution caused problems on some systems,
-so the call has been removed.
-</p>
-
-<p>
-When using <code>-buildmode=c-archive</code> or
-<code>-buildmode=c-shared</code> to build an archive or a shared
-library, the handling of signals has changed.
-In Go 1.5 the archive or shared library would install a signal handler
-for most signals.
-In Go 1.6 it will only install a signal handler for the
-synchronous signals needed to handle run-time panics in Go code:
-SIGBUS, SIGFPE, SIGSEGV.
-See the <a href="/pkg/os/signal">os/signal</a> package for more
-details.
-</p>
-
-<h3 id="reflect">Reflect</h3>
-
-<p>
-The
-<a href="/pkg/reflect/"><code>reflect</code></a> package has
-<a href="/issue/12367">resolved a long-standing incompatibility</a>
-between the gc and gccgo toolchains
-regarding embedded unexported struct types containing exported fields.
-Code that walks data structures using reflection, especially to implement
-serialization in the spirit
-of the
-<a href="/pkg/encoding/json/"><code>encoding/json</code></a> and
-<a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> packages,
-may need to be updated.
-</p>
-
-<p>
-The problem arises when using reflection to walk through
-an embedded unexported struct-typed field
-into an exported field of that struct.
-In this case, <code>reflect</code> had incorrectly reported
-the embedded field as exported, by returning an empty <code>Field.PkgPath</code>.
-Now it correctly reports the field as unexported
-but ignores that fact when evaluating access to exported fields
-contained within the struct.
-</p>
-
-<p>
-<em>Updating</em>:
-Typically, code that previously walked over structs and used
-</p>
-
-<pre>
-f.PkgPath != ""
-</pre>
-
-<p>
-to exclude inaccessible fields
-should now use
-</p>
-
-<pre>
-f.PkgPath != "" &amp;&amp; !f.Anonymous
-</pre>
-
-<p>
-For example, see the changes to the implementations of
-<a href="https://go-review.googlesource.com/#/c/14011/2/src/encoding/json/encode.go"><code>encoding/json</code></a> and
-<a href="https://go-review.googlesource.com/#/c/14012/2/src/encoding/xml/typeinfo.go"><code>encoding/xml</code></a>.
-</p>
-
-<h3 id="sort">Sorting</h3>
-
-<p>
-In the
-<a href="/pkg/sort/"><code>sort</code></a>
-package,
-the implementation of
-<a href="/pkg/sort/#Sort"><code>Sort</code></a>
-has been rewritten to make about 10% fewer calls to the
-<a href="/pkg/sort/#Interface"><code>Interface</code></a>'s
-<code>Less</code> and <code>Swap</code>
-methods, with a corresponding overall time savings.
-The new algorithm does choose a different ordering than before
-for values that compare equal (those pairs for which <code>Less(i,</code> <code>j)</code> and <code>Less(j,</code> <code>i)</code> are false).
-</p>
-
-<p>
-<em>Updating</em>:
-The definition of <code>Sort</code> makes no guarantee about the final order of equal values,
-but the new behavior may still break programs that expect a specific order.
-Such programs should either refine their <code>Less</code> implementations
-to report the desired order
-or should switch to
-<a href="/pkg/sort/#Stable"><code>Stable</code></a>,
-which preserves the original input order
-of equal values.
-</p>
-
-<h3 id="template">Templates</h3>
-
-<p>
-In the
-<a href="/pkg/text/template/">text/template</a> package,
-there are two significant new features to make writing templates easier.
-</p>
-
-<p>
-First, it is now possible to <a href="/pkg/text/template/#hdr-Text_and_spaces">trim spaces around template actions</a>,
-which can make template definitions more readable.
-A minus sign at the beginning of an action says to trim space before the action,
-and a minus sign at the end of an action says to trim space after the action.
-For example, the template
-</p>
-
-<pre>
-{{23 -}}
-   &lt;
-{{- 45}}
-</pre>
-
-<p>
-formats as <code>23&lt;45</code>.
-</p>
-
-<p>
-Second, the new <a href="/pkg/text/template/#hdr-Actions"><code>{{block}}</code> action</a>,
-combined with allowing redefinition of named templates,
-provides a simple way to define pieces of a template that
-can be replaced in different instantiations.
-There is <a href="/pkg/text/template/#example_Template_block">an example</a>
-in the <code>text/template</code> package that demonstrates this new feature.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<ul>
-
-<li>
-The <a href="/pkg/archive/tar/"><code>archive/tar</code></a> package's
-implementation corrects many bugs in rare corner cases of the file format.
-One visible change is that the
-<a href="/pkg/archive/tar/#Reader"><code>Reader</code></a> type's
-<a href="/pkg/archive/tar/#Reader.Read"><code>Read</code></a> method
-now presents the content of special file types as being empty,
-returning <code>io.EOF</code> immediately.
-</li>
-
-<li>
-In the <a href="/pkg/archive/zip/"><code>archive/zip</code></a> package, the
-<a href="/pkg/archive/zip/#Reader"><code>Reader</code></a> type now has a
-<a href="/pkg/archive/zip/#Reader.RegisterDecompressor"><code>RegisterDecompressor</code></a> method,
-and the
-<a href="/pkg/archive/zip/#Writer"><code>Writer</code></a> type now has a
-<a href="/pkg/archive/zip/#Writer.RegisterCompressor"><code>RegisterCompressor</code></a> method,
-enabling control over compression options for individual zip files.
-These take precedence over the pre-existing global
-<a href="/pkg/archive/zip/#RegisterDecompressor"><code>RegisterDecompressor</code></a> and
-<a href="/pkg/archive/zip/#RegisterCompressor"><code>RegisterCompressor</code></a> functions.
-</li>
-
-<li>
-The <a href="/pkg/bufio/"><code>bufio</code></a> package's
-<a href="/pkg/bufio/#Scanner"><code>Scanner</code></a> type now has a
-<a href="/pkg/bufio/#Scanner.Buffer"><code>Buffer</code></a> method,
-to specify an initial buffer and maximum buffer size to use during scanning.
-This makes it possible, when needed, to scan tokens larger than
-<code>MaxScanTokenSize</code>.
-Also for the <code>Scanner</code>, the package now defines the
-<a href="/pkg/bufio/#ErrFinalToken"><code>ErrFinalToken</code></a> error value, for use by
-<a href="/pkg/bufio/#SplitFunc">split functions</a> to abort processing or to return a final empty token.
-</li>
-
-<li>
-The <a href="/pkg/compress/flate/"><code>compress/flate</code></a> package
-has deprecated its
-<a href="/pkg/compress/flate/#ReadError"><code>ReadError</code></a> and
-<a href="/pkg/compress/flate/#WriteError"><code>WriteError</code></a> error implementations.
-In Go 1.5 they were only rarely returned when an error was encountered;
-now they are never returned, although they remain defined for compatibility.
-</li>
-
-<li>
-The <a href="/pkg/compress/flate/"><code>compress/flate</code></a>,
-<a href="/pkg/compress/gzip/"><code>compress/gzip</code></a>, and
-<a href="/pkg/compress/zlib/"><code>compress/zlib</code></a> packages
-now report
-<a href="/pkg/io/#ErrUnexpectedEOF"><code>io.ErrUnexpectedEOF</code></a> for truncated input streams, instead of
-<a href="/pkg/io/#EOF"><code>io.EOF</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a> package now
-overwrites the destination buffer in the event of a GCM decryption failure.
-This is to allow the AESNI code to avoid using a temporary buffer.
-</li>
-
-<li>
-The <a href="/pkg/crypto/tls/"><code>crypto/tls</code></a> package
-has a variety of minor changes.
-It now allows
-<a href="/pkg/crypto/tls/#Listen"><code>Listen</code></a>
-to succeed when the
-<a href="/pkg/crypto/tls/#Config"><code>Config</code></a>
-has a nil <code>Certificates</code>, as long as the <code>GetCertificate</code> callback is set,
-it adds support for RSA with AES-GCM cipher suites,
-and
-it adds a
-<a href="/pkg/crypto/tls/#RecordHeaderError"><code>RecordHeaderError</code></a>
-to allow clients (in particular, the <a href="/pkg/net/http/"><code>net/http</code></a> package)
-to report a better error when attempting a TLS connection to a non-TLS server.
-</li>
-
-<li>
-The <a href="/pkg/crypto/x509/"><code>crypto/x509</code></a> package
-now permits certificates to contain negative serial numbers
-(technically an error, but unfortunately common in practice),
-and it defines a new
-<a href="/pkg/crypto/x509/#InsecureAlgorithmError"><code>InsecureAlgorithmError</code></a>
-to give a better error message when rejecting a certificate
-signed with an insecure algorithm like MD5.
-</li>
-
-<li>
-The <a href="/pkg/debug/dwarf"><code>debug/dwarf</code></a> and
-<a href="/pkg/debug/elf/"><code>debug/elf</code></a> packages
-together add support for compressed DWARF sections.
-User code needs no updating: the sections are decompressed automatically when read.
-</li>
-
-<li>
-The <a href="/pkg/debug/elf/"><code>debug/elf</code></a> package
-adds support for general compressed ELF sections.
-User code needs no updating: the sections are decompressed automatically when read.
-However, compressed
-<a href="/pkg/debug/elf/#Section"><code>Sections</code></a> do not support random access:
-they have a nil <code>ReaderAt</code> field.
-</li>
-
-<li>
-The <a href="/pkg/encoding/asn1/"><code>encoding/asn1</code></a> package
-now exports
-<a href="/pkg/encoding/asn1/#pkg-constants">tag and class constants</a>
-useful for advanced parsing of ASN.1 structures.
-</li>
-
-<li>
-Also in the <a href="/pkg/encoding/asn1/"><code>encoding/asn1</code></a> package,
-<a href="/pkg/encoding/asn1/#Unmarshal"><code>Unmarshal</code></a> now rejects various non-standard integer and length encodings.
-</li>
-
-<li>
-The <a href="/pkg/encoding/base64"><code>encoding/base64</code></a> package's
-<a href="/pkg/encoding/base64/#Decoder"><code>Decoder</code></a> has been fixed
-to process the final bytes of its input. Previously it processed as many four-byte tokens as
-possible but ignored the remainder, up to three bytes.
-The <code>Decoder</code> therefore now handles inputs in unpadded encodings (like
-<a href="/pkg/encoding/base64/#RawURLEncoding">RawURLEncoding</a>) correctly,
-but it also rejects inputs in padded encodings that are truncated or end with invalid bytes,
-such as trailing spaces.
-</li>
-
-<li>
-The <a href="/pkg/encoding/json/"><code>encoding/json</code></a> package
-now checks the syntax of a
-<a href="/pkg/encoding/json/#Number"><code>Number</code></a>
-before marshaling it, requiring that it conforms to the JSON specification for numeric values.
-As in previous releases, the zero <code>Number</code> (an empty string) is marshaled as a literal 0 (zero).
-</li>
-
-<li>
-The <a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> package's
-<a href="/pkg/encoding/xml/#Marshal"><code>Marshal</code></a>
-function now supports a <code>cdata</code> attribute, such as <code>chardata</code>
-but encoding its argument in one or more <code>&lt;![CDATA[ ... ]]&gt;</code> tags.
-</li>
-
-<li>
-Also in the <a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> package,
-<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a>'s
-<a href="/pkg/encoding/xml/#Decoder.Token"><code>Token</code></a> method
-now reports an error when encountering EOF before seeing all open tags closed,
-consistent with its general requirement that tags in the input be properly matched.
-To avoid that requirement, use
-<a href="/pkg/encoding/xml/#Decoder.RawToken"><code>RawToken</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/fmt/"><code>fmt</code></a> package now allows
-any integer type as an argument to
-<a href="/pkg/fmt/#Printf"><code>Printf</code></a>'s <code>*</code> width and precision specification.
-In previous releases, the argument to <code>*</code> was required to have type <code>int</code>.
-</li>
-
-<li>
-Also in the <a href="/pkg/fmt/"><code>fmt</code></a> package,
-<a href="/pkg/fmt/#Scanf"><code>Scanf</code></a> can now scan hexadecimal strings using %X, as an alias for %x.
-Both formats accept any mix of upper- and lower-case hexadecimal.
-</li>
-
-<li>
-The <a href="/pkg/image/"><code>image</code></a>
-and
-<a href="/pkg/image/color/"><code>image/color</code></a> packages
-add
-<a href="/pkg/image/#NYCbCrA"><code>NYCbCrA</code></a>
-and
-<a href="/pkg/image/color/#NYCbCrA"><code>NYCbCrA</code></a>
-types, to support Y'CbCr images with non-premultiplied alpha.
-</li>
-
-<li>
-The <a href="/pkg/io/"><code>io</code></a> package's
-<a href="/pkg/io/#MultiWriter"><code>MultiWriter</code></a>
-implementation now implements a <code>WriteString</code> method,
-for use by
-<a href="/pkg/io/#WriteString"><code>WriteString</code></a>.
-</li>
-
-<li>
-In the <a href="/pkg/math/big/"><code>math/big</code></a> package,
-<a href="/pkg/math/big/#Int"><code>Int</code></a> adds
-<a href="/pkg/math/big/#Int.Append"><code>Append</code></a>
-and
-<a href="/pkg/math/big/#Int.Text"><code>Text</code></a>
-methods to give more control over printing.
-</li>
-
-<li>
-Also in the <a href="/pkg/math/big/"><code>math/big</code></a> package,
-<a href="/pkg/math/big/#Float"><code>Float</code></a> now implements
-<a href="/pkg/encoding/#TextMarshaler"><code>encoding.TextMarshaler</code></a> and
-<a href="/pkg/encoding/#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>,
-allowing it to be serialized in a natural form by the
-<a href="/pkg/encoding/json/"><code>encoding/json</code></a> and
-<a href="/pkg/encoding/xml/"><code>encoding/xml</code></a> packages.
-</li>
-
-<li>
-Also in the <a href="/pkg/math/big/"><code>math/big</code></a> package,
-<a href="/pkg/math/big/#Float"><code>Float</code></a>'s
-<a href="/pkg/math/big/#Float.Append"><code>Append</code></a> method now supports the special precision argument -1.
-As in
-<a href="/pkg/strconv/#ParseFloat"><code>strconv.ParseFloat</code></a>,
-precision -1 means to use the smallest number of digits necessary such that
-<a href="/pkg/math/big/#Float.Parse"><code>Parse</code></a>
-reading the result into a <code>Float</code> of the same precision
-will yield the original value.
-</li>
-
-<li>
-The <a href="/pkg/math/rand/"><code>math/rand</code></a> package
-adds a
-<a href="/pkg/math/rand/#Read"><code>Read</code></a>
-function, and likewise
-<a href="/pkg/math/rand/#Rand"><code>Rand</code></a> adds a
-<a href="/pkg/math/rand/#Rand.Read"><code>Read</code></a> method.
-These make it easier to generate pseudorandom test data.
-Note that, like the rest of the package,
-these should not be used in cryptographic settings;
-for such purposes, use the <a href="/pkg/crypto/rand/"><code>crypto/rand</code></a> package instead.
-</li>
-
-<li>
-The <a href="/pkg/net/"><code>net</code></a> package's
-<a href="/pkg/net/#ParseMAC"><code>ParseMAC</code></a> function now accepts 20-byte IP-over-InfiniBand (IPoIB) link-layer addresses.
-</li>
-
-
-<li>
-Also in the <a href="/pkg/net/"><code>net</code></a> package,
-there have been a few changes to DNS lookups.
-First, the
-<a href="/pkg/net/#DNSError"><code>DNSError</code></a> error implementation now implements
-<a href="/pkg/net/#Error"><code>Error</code></a>,
-and in particular its new
-<a href="/pkg/net/#DNSError.IsTemporary"><code>IsTemporary</code></a>
-method returns true for DNS server errors.
-Second, DNS lookup functions such as
-<a href="/pkg/net/#LookupAddr"><code>LookupAddr</code></a>
-now return rooted domain names (with a trailing dot)
-on Plan 9 and Windows, to match the behavior of Go on Unix systems.
-</li>
-
-<li>
-The <a href="/pkg/net/http/"><code>net/http</code></a> package has
-a number of minor additions beyond the HTTP/2 support already discussed.
-First, the
-<a href="/pkg/net/http/#FileServer"><code>FileServer</code></a> now sorts its generated directory listings by file name.
-Second, the
-<a href="/pkg/net/http/#ServeFile"><code>ServeFile</code></a> function now refuses to serve a result
-if the request's URL path contains &ldquo;..&rdquo; (dot-dot) as a path element.
-Programs should typically use <code>FileServer</code> and
-<a href="/pkg/net/http/#Dir"><code>Dir</code></a>
-instead of calling <code>ServeFile</code> directly.
-Programs that need to serve file content in response to requests for URLs containing dot-dot can
-still call <a href="/pkg/net/http/#ServeContent"><code>ServeContent</code></a>.
-Third, the
-<a href="/pkg/net/http/#Client"><code>Client</code></a> now allows user code to set the
-<code>Expect:</code> <code>100-continue</code> header (see
-<a href="/pkg/net/http/#Transport"><code>Transport.ExpectContinueTimeout</code></a>).
-Fourth, there are
-<a href="/pkg/net/http/#pkg-constants">five new error codes</a>:
-<code>StatusPreconditionRequired</code> (428),
-<code>StatusTooManyRequests</code> (429),
-<code>StatusRequestHeaderFieldsTooLarge</code> (431), and
-<code>StatusNetworkAuthenticationRequired</code> (511) from RFC 6585,
-as well as the recently-approved
-<code>StatusUnavailableForLegalReasons</code> (451).
-Fifth, the implementation and documentation of
-<a href="/pkg/net/http/#CloseNotifier"><code>CloseNotifier</code></a>
-has been substantially changed.
-The <a href="/pkg/net/http/#Hijacker"><code>Hijacker</code></a>
-interface now works correctly on connections that have previously
-been used with <code>CloseNotifier</code>.
-The documentation now describes when <code>CloseNotifier</code>
-is expected to work.
-</li>
-
-<li>
-Also in the <a href="/pkg/net/http/"><code>net/http</code></a> package,
-there are a few changes related to the handling of a
-<a href="/pkg/net/http/#Request"><code>Request</code></a> data structure with its <code>Method</code> field set to the empty string.
-An empty <code>Method</code> field has always been documented as an alias for <code>"GET"</code>
-and it remains so.
-However, Go 1.6 fixes a few routines that did not treat an empty
-<code>Method</code> the same as an explicit <code>"GET"</code>.
-Most notably, in previous releases
-<a href="/pkg/net/http/#Client"><code>Client</code></a> followed redirects only with
-<code>Method</code> set explicitly to <code>"GET"</code>;
-in Go 1.6 <code>Client</code> also follows redirects for the empty <code>Method</code>.
-Finally,
-<a href="/pkg/net/http/#NewRequest"><code>NewRequest</code></a> accepts a <code>method</code> argument that has not been
-documented as allowed to be empty.
-In past releases, passing an empty <code>method</code> argument resulted
-in a <code>Request</code> with an empty <code>Method</code> field.
-In Go 1.6, the resulting <code>Request</code> always has an initialized
-<code>Method</code> field: if its argument is an empty string, <code>NewRequest</code>
-sets the <code>Method</code> field in the returned <code>Request</code> to <code>"GET"</code>.
-</li>
-
-<li>
-The <a href="/pkg/net/http/httptest/"><code>net/http/httptest</code></a> package's
-<a href="/pkg/net/http/httptest/#ResponseRecorder"><code>ResponseRecorder</code></a> now initializes a default Content-Type header
-using the same content-sniffing algorithm as in
-<a href="/pkg/net/http/#Server"><code>http.Server</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/net/url/"><code>net/url</code></a> package's
-<a href="/pkg/net/url/#Parse"><code>Parse</code></a> is now stricter and more spec-compliant regarding the parsing
-of host names.
-For example, spaces in the host name are no longer accepted.
-</li>
-
-<li>
-Also in the <a href="/pkg/net/url/"><code>net/url</code></a> package,
-the <a href="/pkg/net/url/#Error"><code>Error</code></a> type now implements
-<a href="/pkg/net/#Error"><code>net.Error</code></a>.
-</li>
-
-<li>
-The <a href="/pkg/os/"><code>os</code></a> package's
-<a href="/pkg/os/#IsExist"><code>IsExist</code></a>,
-<a href="/pkg/os/#IsNotExist"><code>IsNotExist</code></a>,
-and
-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>
-now return correct results when inquiring about an
-<a href="/pkg/os/#SyscallError"><code>SyscallError</code></a>.
-</li>
-
-<li>
-On Unix-like systems, when a write
-to <a href="/pkg/os/#pkg-variables"><code>os.Stdout</code>
-or <code>os.Stderr</code></a> (more precisely, an <code>os.File</code>
-opened for file descriptor 1 or 2) fails due to a broken pipe error,
-the program will raise a <code>SIGPIPE</code> signal.
-By default this will cause the program to exit; this may be changed by
-calling the
-<a href="/pkg/os/signal"><code>os/signal</code></a>
-<a href="/pkg/os/signal/#Notify"><code>Notify</code></a> function
-for <code>syscall.SIGPIPE</code>.
-A write to a broken pipe on a file descriptor other 1 or 2 will simply
-return <code>syscall.EPIPE</code> (possibly wrapped in
-<a href="/pkg/os#PathError"><code>os.PathError</code></a>
-and/or <a href="/pkg/os#SyscallError"><code>os.SyscallError</code></a>)
-to the caller.
-The old behavior of raising an uncatchable <code>SIGPIPE</code> signal
-after 10 consecutive writes to a broken pipe no longer occurs.
-</li>
-
-<li>
-In the <a href="/pkg/os/exec/"><code>os/exec</code></a> package,
-<a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a>'s
-<a href="/pkg/os/exec/#Cmd.Output"><code>Output</code></a> method continues to return an
-<a href="/pkg/os/exec/#ExitError"><code>ExitError</code></a> when a command exits with an unsuccessful status.
-If standard error would otherwise have been discarded,
-the returned <code>ExitError</code> now holds a prefix and suffix
-(currently 32 kB) of the failed command's standard error output,
-for debugging or for inclusion in error messages.
-The <code>ExitError</code>'s
-<a href="/pkg/os/exec/#ExitError.String"><code>String</code></a>
-method does not show the captured standard error;
-programs must retrieve it from the data structure
-separately.
-</li>
-
-<li>
-On Windows, the <a href="/pkg/path/filepath/"><code>path/filepath</code></a> package's
-<a href="/pkg/path/filepath/#Join"><code>Join</code></a> function now correctly handles the case when the base is a relative drive path.
-For example, <code>Join(`c:`,</code> <code>`a`)</code> now
-returns <code>`c:a`</code> instead of <code>`c:\a`</code> as in past releases.
-This may affect code that expects the incorrect result.
-</li>
-
-<li>
-In the <a href="/pkg/regexp/"><code>regexp</code></a> package,
-the
-<a href="/pkg/regexp/#Regexp"><code>Regexp</code></a> type has always been safe for use by
-concurrent goroutines.
-It uses a <a href="/pkg/sync/#Mutex"><code>sync.Mutex</code></a> to protect
-a cache of scratch spaces used during regular expression searches.
-Some high-concurrency servers using the same <code>Regexp</code> from many goroutines
-have seen degraded performance due to contention on that mutex.
-To help such servers, <code>Regexp</code> now has a
-<a href="/pkg/regexp/#Regexp.Copy"><code>Copy</code></a> method,
-which makes a copy of a <code>Regexp</code> that shares most of the structure
-of the original but has its own scratch space cache.
-Two goroutines can use different copies of a <code>Regexp</code>
-without mutex contention.
-A copy does have additional space overhead, so <code>Copy</code>
-should only be used when contention has been observed.
-</li>
-
-<li>
-The <a href="/pkg/strconv/"><code>strconv</code></a> package adds
-<a href="/pkg/strconv/#IsGraphic"><code>IsGraphic</code></a>,
-similar to <a href="/pkg/strconv/#IsPrint"><code>IsPrint</code></a>.
-It also adds
-<a href="/pkg/strconv/#QuoteToGraphic"><code>QuoteToGraphic</code></a>,
-<a href="/pkg/strconv/#QuoteRuneToGraphic"><code>QuoteRuneToGraphic</code></a>,
-<a href="/pkg/strconv/#AppendQuoteToGraphic"><code>AppendQuoteToGraphic</code></a>,
-and
-<a href="/pkg/strconv/#AppendQuoteRuneToGraphic"><code>AppendQuoteRuneToGraphic</code></a>,
-analogous to
-<a href="/pkg/strconv/#QuoteToASCII"><code>QuoteToASCII</code></a>,
-<a href="/pkg/strconv/#QuoteRuneToASCII"><code>QuoteRuneToASCII</code></a>,
-and so on.
-The <code>ASCII</code> family escapes all space characters except ASCII space (U+0020).
-In contrast, the <code>Graphic</code> family does not escape any Unicode space characters (category Zs).
-</li>
-
-<li>
-In the <a href="/pkg/testing/"><code>testing</code></a> package,
-when a test calls
-<a href="/pkg/testing/#T.Parallel">t.Parallel</a>,
-that test is paused until all non-parallel tests complete, and then
-that test continues execution with all other parallel tests.
-Go 1.6 changes the time reported for such a test:
-previously the time counted only the parallel execution,
-but now it also counts the time from the start of testing
-until the call to <code>t.Parallel</code>.
-</li>
-
-<li>
-The <a href="/pkg/text/template/"><code>text/template</code></a> package
-contains two minor changes, in addition to the <a href="#template">major changes</a>
-described above.
-First, it adds a new
-<a href="/pkg/text/template/#ExecError"><code>ExecError</code></a> type
-returned for any error during
-<a href="/pkg/text/template/#Template.Execute"><code>Execute</code></a>
-that does not originate in a <code>Write</code> to the underlying writer.
-Callers can distinguish template usage errors from I/O errors by checking for
-<code>ExecError</code>.
-Second, the
-<a href="/pkg/text/template/#Template.Funcs"><code>Funcs</code></a> method
-now checks that the names used as keys in the
-<a href="/pkg/text/template/#FuncMap"><code>FuncMap</code></a>
-are identifiers that can appear in a template function invocation.
-If not, <code>Funcs</code> panics.
-</li>
-
-<li>
-The <a href="/pkg/time/"><code>time</code></a> package's
-<a href="/pkg/time/#Parse"><code>Parse</code></a> function has always rejected any day of month larger than 31,
-such as January 32.
-In Go 1.6, <code>Parse</code> now also rejects February 29 in non-leap years,
-February 30, February 31, April 31, June 31, September 31, and November 31.
-</li>
-
-</ul>
diff --git a/_content/doc/go1.7.html b/_content/doc/go1.7.html
deleted file mode 100644
index 1f777fe..0000000
--- a/_content/doc/go1.7.html
+++ /dev/null
@@ -1,1279 +0,0 @@
-<!--{
-	"Title": "Go 1.7 Release Notes"
-}-->
-
-<!--
-for acme:
-Edit .,s;^PKG:([a-z][A-Za-z0-9_/]+);<a href="/pkg/\1/"><code>\1</code></a>;g
-Edit .,s;^([a-z][A-Za-z0-9_/]+)\.([A-Z][A-Za-z0-9_]+\.)?([A-Z][A-Za-z0-9_]+)([ .',)]|$);<a href="/pkg/\1/#\2\3"><code>\3</code></a>\4;g
-Edit .,s;^FULL:([a-z][A-Za-z0-9_/]+)\.([A-Z][A-Za-z0-9_]+\.)?([A-Z][A-Za-z0-9_]+)([ .',)]|$);<a href="/pkg/\1/#\2\3"><code>\1.\2\3</code></a>\4;g
-Edit .,s;^DPKG:([a-z][A-Za-z0-9_/]+);<dl id="\1"><a href="/pkg/\1/">\1</a></dl>;g
-
-rsc last updated through 6729576
--->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.7</h2>
-
-<p>
-The latest Go release, version 1.7, arrives six months after 1.6.
-Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-There is one minor change to the language specification.
-As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-The release <a href="#ports">adds a port to IBM LinuxOne</a>;
-<a href="#compiler">updates the x86-64 compiler back end</a> to generate more efficient code;
-includes the <a href="#context">context package</a>, promoted from the
-<a href="https://golang.org/x/net/context">x/net subrepository</a>
-and now used in the standard library;
-and <a href="#testing">adds support in the testing package</a> for
-creating hierarchies of tests and benchmarks.
-The release also <a href="#cmd_go">finalizes the vendoring support</a>
-started in Go 1.5, making it a standard feature.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-There is one tiny language change in this release.
-The section on <a href="/ref/spec#Terminating_statements">terminating statements</a>
-clarifies that to determine whether a statement list ends in a terminating statement,
-the “final non-empty statement” is considered the end,
-matching the existing behavior of the gc and gccgo compiler toolchains.
-In earlier releases the definition referred only to the “final statement,”
-leaving the effect of trailing empty statements at the least unclear.
-The <a href="/pkg/go/types/"><code>go/types</code></a>
-package has been updated to match the gc and gccgo compiler toolchains
-in this respect.
-This change has no effect on the correctness of existing programs.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p>
-Go 1.7 adds support for macOS 10.12 Sierra.
-Binaries built with versions of Go before 1.7 will not work
-correctly on Sierra.
-</p>
-
-<p>
-Go 1.7 adds an experimental port to <a href="https://en.wikipedia.org/wiki/Linux_on_z_Systems">Linux on z Systems</a> (<code>linux/s390x</code>)
-and the beginning of a port to Plan 9 on ARM (<code>plan9/arm</code>).
-</p>
-
-<p>
-The experimental ports to Linux on 64-bit MIPS (<code>linux/mips64</code> and <code>linux/mips64le</code>)
-added in Go 1.6 now have full support for cgo and external linking.
-</p>
-
-<p>
-The experimental port to Linux on little-endian 64-bit PowerPC (<code>linux/ppc64le</code>)
-now requires the POWER8 architecture or later.
-Big-endian 64-bit PowerPC (<code>linux/ppc64</code>) only requires the
-POWER5 architecture.
-</p>
-
-<p>
-The OpenBSD port now requires OpenBSD 5.6 or later, for access to the <a href="https://man.openbsd.org/getentropy.2"><i>getentropy</i>(2)</a> system call.
-</p>
-
-<h3 id="known_issues">Known Issues</h3>
-
-<p>
-There are some instabilities on FreeBSD that are known but not understood.
-These can lead to program crashes in rare cases.
-See <a href="/issue/16136">issue 16136</a>,
-<a href="/issue/15658">issue 15658</a>,
-and <a href="/issue/16396">issue 16396</a>.
-Any help in solving these FreeBSD-specific issues would be appreciated.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="cmd_asm">Assembler</h3>
-
-<p>
-For 64-bit ARM systems, the vector register names have been
-corrected to <code>V0</code> through <code>V31</code>;
-previous releases incorrectly referred to them as <code>V32</code> through <code>V63</code>.
-</p>
-
-<p>
-For 64-bit x86 systems, the following instructions have been added:
-<code>PCMPESTRI</code>,
-<code>RORXL</code>,
-<code>RORXQ</code>,
-<code>VINSERTI128</code>,
-<code>VPADDD</code>,
-<code>VPADDQ</code>,
-<code>VPALIGNR</code>,
-<code>VPBLENDD</code>,
-<code>VPERM2F128</code>,
-<code>VPERM2I128</code>,
-<code>VPOR</code>,
-<code>VPSHUFB</code>,
-<code>VPSHUFD</code>,
-<code>VPSLLD</code>,
-<code>VPSLLDQ</code>,
-<code>VPSLLQ</code>,
-<code>VPSRLD</code>,
-<code>VPSRLDQ</code>,
-and
-<code>VPSRLQ</code>.
-</p>
-
-<h3 id="compiler">Compiler Toolchain</h3>
-
-<p>
-This release includes a new code generation back end for 64-bit x86 systems,
-following a <a href="/s/go17ssa">proposal from 2015</a>
-that has been under development since then.
-The new back end, based on
-<a href="https://en.wikipedia.org/wiki/Static_single_assignment_form">SSA</a>,
-generates more compact, more efficient code
-and provides a better platform for optimizations
-such as bounds check elimination.
-The new back end reduces the CPU time required by
-<a href="/test/bench/go1/">our benchmark programs</a> by 5-35%.
-</p>
-
-<p>
-For this release, the new back end can be disabled by passing
-<code>-ssa=0</code> to the compiler.
-If you find that your program compiles or runs successfully
-only with the new back end disabled, please
-<a href="/issue/new">file a bug report</a>.
-</p>
-
-<p>
-The format of exported metadata written by the compiler in package archives has changed:
-the old textual format has been replaced by a more compact binary format.
-This results in somewhat smaller package archives and fixes a few
-long-standing corner case bugs.
-</p>
-
-<p>
-For this release, the new export format can be disabled by passing
-<code>-newexport=0</code> to the compiler.
-If you find that your program compiles or runs successfully
-only with the new export format disabled, please
-<a href="/issue/new">file a bug report</a>.
-</p>
-
-<p>
-The linker's <code>-X</code> option no longer supports the unusual two-argument form
-<code>-X</code> <code>name</code> <code>value</code>,
-as <a href="/doc/go1.6#compiler">announced</a> in the Go 1.6 release
-and in warnings printed by the linker.
-Use <code>-X</code> <code>name=value</code> instead.
-</p>
-
-<p>
-The compiler and linker have been optimized and run significantly faster in this release than in Go 1.6,
-although they are still slower than we would like and will continue to be optimized in future releases.
-</p>
-
-<p>
-Due to changes across the compiler toolchain and standard library,
-binaries built with this release should typically be smaller than binaries
-built with Go 1.6,
-sometimes by as much as 20-30%.
-</p>
-
-<p>
-On x86-64 systems, Go programs now maintain stack frame pointers
-as expected by profiling tools like Linux's perf and Intel's VTune,
-making it easier to analyze and optimize Go programs using these tools.
-The frame pointer maintenance has a small run-time overhead that varies
-but averages around 2%. We hope to reduce this cost in future releases.
-To build a toolchain that does not use frame pointers, set
-<code>GOEXPERIMENT=noframepointer</code> when running
-<code>make.bash</code>, <code>make.bat</code>, or <code>make.rc</code>.
-</p>
-
-<h3 id="cmd_cgo">Cgo</h3>
-
-<p>
-Packages using <a href="/cmd/cgo/">cgo</a> may now include
-Fortran source files (in addition to C, C++, Objective C, and SWIG),
-although the Go bindings must still use C language APIs.
-</p>
-
-<p>
-Go bindings may now use a new helper function <code>C.CBytes</code>.
-In contrast to <code>C.CString</code>, which takes a Go <code>string</code>
-and returns a <code>*C.byte</code> (a C <code>char*</code>),
-<code>C.CBytes</code> takes a Go <code>[]byte</code>
-and returns an <code>unsafe.Pointer</code> (a C <code>void*</code>).
-</p>
-
-<p>
-Packages and binaries built using <code>cgo</code> have in past releases
-produced different output on each build,
-due to the embedding of temporary directory names.
-When using this release with
-new enough versions of GCC or Clang
-(those that support the <code>-fdebug-prefix-map</code> option),
-those builds should finally be deterministic.
-</p>
-
-<h3 id="gccgo">Gccgo</h3>
-
-<p>
-Due to the alignment of Go's semiannual release schedule with GCC's annual release schedule,
-GCC release 6 contains the Go 1.6.1 version of gccgo.
-The next release, GCC 7, will likely have the Go 1.8 version of gccgo.
-</p>
-
-<h3 id="cmd_go">Go command</h3>
-
-<p>
-The <a href="/cmd/go/"><code>go</code></a> command's basic operation
-is unchanged, but there are a number of changes worth noting.
-</p>
-
-<p>
-This release removes support for the <code>GO15VENDOREXPERIMENT</code> environment variable,
-as <a href="/doc/go1.6#go_command">announced</a> in the Go 1.6 release.
-<a href="/s/go15vendor">Vendoring support</a>
-is now a standard feature of the <code>go</code> command and toolchain.
-</p>
-
-<p>
-The <code>Package</code> data structure made available to
-“<code>go</code> <code>list</code>” now includes a
-<code>StaleReason</code> field explaining why a particular package
-is or is not considered stale (in need of rebuilding).
-This field is available to the <code>-f</code> or <code>-json</code>
-options and is useful for understanding why a target is being rebuilt.
-</p>
-
-<p>
-The “<code>go</code> <code>get</code>” command now supports
-import paths referring to <code>git.openstack.org</code>.
-</p>
-
-<p>
-This release adds experimental, minimal support for building programs using
-<a href="/pkg/go/build#hdr-Binary_Only_Packages">binary-only packages</a>,
-packages distributed in binary form
-without the corresponding source code.
-This feature is needed in some commercial settings
-but is not intended to be fully integrated into the rest of the toolchain.
-For example, tools that assume access to complete source code
-will not work with such packages, and there are no plans to support
-such packages in the “<code>go</code> <code>get</code>” command.
-</p>
-
-<h3 id="cmd_doc">Go doc</h3>
-
-<p>
-The “<code>go</code> <code>doc</code>” command
-now groups constructors with the type they construct,
-following <a href="/cmd/godoc/"><code>godoc</code></a>.
-</p>
-
-<h3 id="cmd_vet">Go vet</h3>
-
-<p>
-The “<code>go</code> <code>vet</code>” command
-has more accurate analysis in its <code>-copylock</code> and <code>-printf</code> checks,
-and a new <code>-tests</code> check that checks the name and signature of likely test functions.
-To avoid confusion with the new <code>-tests</code> check, the old, unadvertised
-<code>-test</code> option has been removed; it was equivalent to <code>-all</code> <code>-shadow</code>.
-</p>
-
-<p id="vet_lostcancel">
-The <code>vet</code> command also has a new check,
-<code>-lostcancel</code>, which detects failure to call the
-cancellation function returned by the <code>WithCancel</code>,
-<code>WithTimeout</code>, and <code>WithDeadline</code> functions in
-Go 1.7's new <code>context</code> package (see <a
-href='#context'>below</a>).
-Failure to call the function prevents the new <code>Context</code>
-from being reclaimed until its parent is canceled.
-(The background context is never canceled.)
-</p>
-
-<h3 id="cmd_dist">Go tool dist</h3>
-
-<p>
-The new subcommand “<code>go</code> <code>tool</code> <code>dist</code> <code>list</code>”
-prints all supported operating system/architecture pairs.
-</p>
-
-<h3 id="cmd_trace">Go tool trace</h3>
-
-<p>
-The “<code>go</code> <code>tool</code> <code>trace</code>” command,
-<a href="/doc/go1.5#trace_command">introduced in Go 1.5</a>,
-has been refined in various ways.
-</p>
-
-<p>
-First, collecting traces is significantly more efficient than in past releases.
-In this release, the typical execution-time overhead of collecting a trace is about 25%;
-in past releases it was at least 400%.
-Second, trace files now include file and line number information,
-making them more self-contained and making the
-original executable optional when running the trace tool.
-Third, the trace tool now breaks up large traces to avoid limits
-in the browser-based viewer.
-</p>
-
-<p>
-Although the trace file format has changed in this release,
-the Go 1.7 tools can still read traces from earlier releases.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-As always, the changes are so general and varied that precise statements
-about performance are difficult to make.
-Most programs should run a bit faster,
-due to speedups in the garbage collector and
-optimizations in the core library.
-On x86-64 systems, many programs will run significantly faster,
-due to improvements in generated code brought by the
-new compiler back end.
-As noted above, in our own benchmarks,
-the code generation changes alone typically reduce program CPU time by 5-35%.
-</p>
-
-<p>
-<!-- git log -''-grep '-[0-9][0-9]\.[0-9][0-9]%' go1.6.. -->
-There have been significant optimizations bringing more than 10% improvements
-to implementations in the
-<a href="/pkg/crypto/sha1/"><code>crypto/sha1</code></a>,
-<a href="/pkg/crypto/sha256/"><code>crypto/sha256</code></a>,
-<a href="/pkg/encoding/binary/"><code>encoding/binary</code></a>,
-<a href="/pkg/fmt/"><code>fmt</code></a>,
-<a href="/pkg/hash/adler32/"><code>hash/adler32</code></a>,
-<a href="/pkg/hash/crc32/"><code>hash/crc32</code></a>,
-<a href="/pkg/hash/crc64/"><code>hash/crc64</code></a>,
-<a href="/pkg/image/color/"><code>image/color</code></a>,
-<a href="/pkg/math/big/"><code>math/big</code></a>,
-<a href="/pkg/strconv/"><code>strconv</code></a>,
-<a href="/pkg/strings/"><code>strings</code></a>,
-<a href="/pkg/unicode/"><code>unicode</code></a>,
-and
-<a href="/pkg/unicode/utf16/"><code>unicode/utf16</code></a>
-packages.
-</p>
-
-<p>
-Garbage collection pauses should be significantly shorter than they
-were in Go 1.6 for programs with large numbers of idle goroutines,
-substantial stack size fluctuation, or large package-level variables.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="context">Context</h3>
-
-<p>
-Go 1.7 moves the <code>golang.org/x/net/context</code> package
-into the standard library as <a href="/pkg/context/"><code>context</code></a>.
-This allows the use of contexts for cancellation, timeouts, and passing
-request-scoped data in other standard library packages,
-including
-<a href="#net">net</a>,
-<a href="#net_http">net/http</a>,
-and
-<a href="#os_exec">os/exec</a>,
-as noted below.
-</p>
-
-<p>
-For more information about contexts, see the
-<a href="/pkg/context/">package documentation</a>
-and the Go blog post
-“<a href="https://blog.golang.org/context">Go Concurrent Patterns: Context</a>.”
-</p>
-
-<h3 id="httptrace">HTTP Tracing</h3>
-
-<p>
-Go 1.7 introduces <a href="/pkg/net/http/httptrace/"><code>net/http/httptrace</code></a>,
-a package that provides mechanisms for tracing events within HTTP requests.
-</p>
-
-<h3 id="testing">Testing</h3>
-
-<p>
-The <code>testing</code> package now supports the definition
-of tests with subtests and benchmarks with sub-benchmarks.
-This support makes it easy to write table-driven benchmarks
-and to create hierarchical tests.
-It also provides a way to share common setup and tear-down code.
-See the <a href="/pkg/testing/#hdr-Subtests_and_Sub_benchmarks">package documentation</a> for details.
-</p>
-
-<h3 id="runtime">Runtime</h3>
-
-<p>
-All panics started by the runtime now use panic values
-that implement both the
-builtin <a href="/ref/spec#Errors"><code>error</code></a>,
-and
-<a href="/pkg/runtime/#Error"><code>runtime.Error</code></a>,
-as
-<a href="/ref/spec#Run_time_panics">required by the language specification</a>.
-</p>
-
-<p>
-During panics, if a signal's name is known, it will be printed in the stack trace.
-Otherwise, the signal's number will be used, as it was before Go1.7.
-</p>
-
-<p>
-The new function
-<a href="/pkg/runtime/#KeepAlive"><code>KeepAlive</code></a>
-provides an explicit mechanism for declaring
-that an allocated object must be considered reachable
-at a particular point in a program,
-typically to delay the execution of an associated finalizer.
-</p>
-
-<p>
-The new function
-<a href="/pkg/runtime/#CallersFrames"><code>CallersFrames</code></a>
-translates a PC slice obtained from
-<a href="/pkg/runtime/#Callers"><code>Callers</code></a>
-into a sequence of frames corresponding to the call stack.
-This new API should be preferred instead of direct use of
-<a href="/pkg/runtime/#FuncForPC"><code>FuncForPC</code></a>,
-because the frame sequence can more accurately describe
-call stacks with inlined function calls.
-</p>
-
-<p>
-The new function
-<a href="/pkg/runtime/#SetCgoTraceback"><code>SetCgoTraceback</code></a>
-facilitates tighter integration between Go and C code executing
-in the same process called using cgo.
-</p>
-
-<p>
-On 32-bit systems, the runtime can now use memory allocated
-by the operating system anywhere in the address space,
-eliminating the
-“memory allocated by OS not in usable range” failure
-common in some environments.
-</p>
-
-<p>
-The runtime can now return unused memory to the operating system on
-all architectures.
-In Go 1.6 and earlier, the runtime could not
-release memory on ARM64, 64-bit PowerPC, or MIPS.
-</p>
-
-<p>
-On Windows, Go programs in Go 1.5 and earlier forced
-the global Windows timer resolution to 1ms at startup
-by calling <code>timeBeginPeriod(1)</code>.
-Changing the global timer resolution caused problems on some systems,
-and testing suggested that the call was not needed for good scheduler performance,
-so Go 1.6 removed the call.
-Go 1.7 brings the call back: under some workloads the call
-is still needed for good scheduler performance.
-</p>
-
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-As always, there are various minor changes and updates to the library,
-made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-in mind.
-</p>
-
-<dl id="bufio"><dt><a href="/pkg/bufio/">bufio</a></dt>
-
-<dd>
-<p>
-In previous releases of Go, if
-<a href="/pkg/bufio/#Reader"><code>Reader</code></a>'s
-<a href="/pkg/bufio/#Reader.Peek"><code>Peek</code></a> method
-were asked for more bytes than fit in the underlying buffer,
-it would return an empty slice and the error <code>ErrBufferFull</code>.
-Now it returns the entire underlying buffer, still accompanied by the error <code>ErrBufferFull</code>.
-</p>
-</dd>
-</dl>
-
-<dl id="bytes"><dt><a href="/pkg/bytes/">bytes</a></dt>
-
-<dd>
-<p>
-The new functions
-<a href="/pkg/bytes/#ContainsAny"><code>ContainsAny</code></a> and
-<a href="/pkg/bytes/#ContainsRune"><code>ContainsRune</code></a>
-have been added for symmetry with
-the <a href="/pkg/strings/"><code>strings</code></a> package.
-</p>
-
-<p>
-In previous releases of Go, if
-<a href="/pkg/bytes/#Reader"><code>Reader</code></a>'s
-<a href="/pkg/bytes/#Reader.Read"><code>Read</code></a> method
-were asked for zero bytes with no data remaining, it would
-return a count of 0 and no error.
-Now it returns a count of 0 and the error
-<a href="/pkg/io/#EOF"><code>io.EOF</code></a>.
-</p>
-
-<p>
-The
-<a href="/pkg/bytes/#Reader"><code>Reader</code></a> type has a new method
-<a href="/pkg/bytes/#Reader.Reset"><code>Reset</code></a> to allow reuse of a <code>Reader</code>.
-</p>
-</dd>
-</dl>
-
-<dl id="compress_flate"><dt><a href="/pkg/compress/flate/">compress/flate</a></dt>
-
-<dd>
-<p>
-There are many performance optimizations throughout the package.
-Decompression speed is improved by about 10%,
-while compression for <code>DefaultCompression</code> is twice as fast.
-</p>
-
-<p>
-In addition to those general improvements,
-the
-<code>BestSpeed</code>
-compressor has been replaced entirely and uses an
-algorithm similar to <a href="https://github.com/google/snappy">Snappy</a>,
-resulting in about a 2.5X speed increase,
-although the output can be 5-10% larger than with the previous algorithm.
-</p>
-
-<p>
-There is also a new compression level
-<code>HuffmanOnly</code>
-that applies Huffman but not Lempel-Ziv encoding.
-<a href="https://blog.klauspost.com/constant-time-gzipzip-compression/">Forgoing Lempel-Ziv encoding</a> means that
-<code>HuffmanOnly</code> runs about 3X faster than the new <code>BestSpeed</code>
-but at the cost of producing compressed outputs that are 20-40% larger than those
-generated by the new <code>BestSpeed</code>.
-</p>
-
-<p>
-It is important to note that both
-<code>BestSpeed</code> and <code>HuffmanOnly</code> produce a compressed output that is
-<a href="https://tools.ietf.org/html/rfc1951">RFC 1951</a> compliant.
-In other words, any valid DEFLATE decompressor will continue to be able to decompress these outputs.
-</p>
-
-<p>
-Lastly, there is a minor change to the decompressor's implementation of
-<a href="/pkg/io/#Reader"><code>io.Reader</code></a>. In previous versions,
-the decompressor deferred reporting
-<a href="/pkg/io/#EOF"><code>io.EOF</code></a> until exactly no more bytes could be read.
-Now, it reports
-<a href="/pkg/io/#EOF"><code>io.EOF</code></a> more eagerly when reading the last set of bytes.
-</p>
-</dd>
-</dl>
-
-<dl id="crypto_tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-
-<dd>
-<p>
-The TLS implementation sends the first few data packets on each connection
-using small record sizes, gradually increasing to the TLS maximum record size.
-This heuristic reduces the amount of data that must be received before
-the first packet can be decrypted, improving communication latency over
-low-bandwidth networks.
-Setting
-<a href="/pkg/crypto/tls/#Config"><code>Config</code></a>'s
-<code>DynamicRecordSizingDisabled</code> field to true
-forces the behavior of Go 1.6 and earlier, where packets are
-as large as possible from the start of the connection.
-</p>
-
-<p>
-The TLS client now has optional, limited support for server-initiated renegotiation,
-enabled by setting the
-<a href="/pkg/crypto/tls/#Config"><code>Config</code></a>'s
-<code>Renegotiation</code> field.
-This is needed for connecting to many Microsoft Azure servers.
-</p>
-
-<p>
-The errors returned by the package now consistently begin with a
-<code>tls:</code> prefix.
-In past releases, some errors used a <code>crypto/tls:</code> prefix,
-some used a <code>tls:</code> prefix, and some had no prefix at all.
-</p>
-
-<p>
-When generating self-signed certificates, the package no longer sets the
-“Authority Key Identifier” field by default.
-</p>
-</dd>
-</dl>
-
-<dl id="crypto_x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-
-<dd>
-<p>
-The new function
-<a href="/pkg/crypto/x509/#SystemCertPool"><code>SystemCertPool</code></a>
-provides access to the entire system certificate pool if available.
-There is also a new associated error type
-<a href="/pkg/crypto/x509/#SystemRootsError"><code>SystemRootsError</code></a>.
-</p>
-</dd>
-</dl>
-
-<dl id="debug_dwarf"><dt><a href="/pkg/debug/dwarf/">debug/dwarf</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/debug/dwarf/#Reader"><code>Reader</code></a> type's new
-<a href="/pkg/debug/dwarf/#Reader.SeekPC"><code>SeekPC</code></a> method and the
-<a href="/pkg/debug/dwarf/#Data"><code>Data</code></a> type's new
-<a href="/pkg/debug/dwarf/#Ranges"><code>Ranges</code></a> method
-help to find the compilation unit to pass to a
-<a href="/pkg/debug/dwarf/#LineReader"><code>LineReader</code></a>
-and to identify the specific function for a given program counter.
-</p>
-</dd>
-</dl>
-
-<dl id="debug_elf"><dt><a href="/pkg/debug/elf/">debug/elf</a></dt>
-
-<dd>
-<p>
-The new
-<a href="/pkg/debug/elf/#R_390"><code>R_390</code></a> relocation type
-and its many predefined constants
-support the S390 port.
-</p>
-</dd>
-</dl>
-
-<dl id="encoding_asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
-
-<dd>
-<p>
-The ASN.1 decoder now rejects non-minimal integer encodings.
-This may cause the package to reject some invalid but formerly accepted ASN.1 data.
-</p>
-</dd>
-</dl>
-
-<dl id="encoding_json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/encoding/json/#Encoder"><code>Encoder</code></a>'s new
-<a href="/pkg/encoding/json/#Encoder.SetIndent"><code>SetIndent</code></a> method
-sets the indentation parameters for JSON encoding,
-like in the top-level
-<a href="/pkg/encoding/json/#Indent"><code>Indent</code></a> function.
-</p>
-
-<p>
-The
-<a href="/pkg/encoding/json/#Encoder"><code>Encoder</code></a>'s new
-<a href="/pkg/encoding/json/#Encoder.SetEscapeHTML"><code>SetEscapeHTML</code></a> method
-controls whether the
-<code>&#x26;</code>, <code>&#x3c;</code>, and <code>&#x3e;</code>
-characters in quoted strings should be escaped as
-<code>\u0026</code>, <code>\u003c</code>, and <code>\u003e</code>,
-respectively.
-As in previous releases, the encoder defaults to applying this escaping,
-to avoid certain problems that can arise when embedding JSON in HTML.
-</p>
-
-<p>
-In earlier versions of Go, this package only supported encoding and decoding
-maps using keys with string types.
-Go 1.7 adds support for maps using keys with integer types:
-the encoding uses a quoted decimal representation as the JSON key.
-Go 1.7 also adds support for encoding maps using non-string keys that implement
-the <code>MarshalText</code>
-(see
-<a href="/pkg/encoding/#TextMarshaler"><code>encoding.TextMarshaler</code></a>)
-method,
-as well as support for decoding maps using non-string keys that implement
-the <code>UnmarshalText</code>
-(see
-<a href="/pkg/encoding/#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>)
-method.
-These methods are ignored for keys with string types in order to preserve
-the encoding and decoding used in earlier versions of Go.
-</p>
-
-<p>
-When encoding a slice of typed bytes,
-<a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>
-now generates an array of elements encoded using
-that byte type's
-<code>MarshalJSON</code>
-or
-<code>MarshalText</code>
-method if present,
-only falling back to the default base64-encoded string data if neither method is available.
-Earlier versions of Go accept both the original base64-encoded string encoding
-and the array encoding (assuming the byte type also implements
-<code>UnmarshalJSON</code>
-or
-<code>UnmarshalText</code>
-as appropriate),
-so this change should be semantically backwards compatible with earlier versions of Go,
-even though it does change the chosen encoding.
-</p>
-</dd>
-</dl>
-
-<dl id="go_build"><dt><a href="/pkg/go/build/">go/build</a></dt>
-
-<dd>
-<p>
-To implement the go command's new support for binary-only packages
-and for Fortran code in cgo-based packages,
-the
-<a href="/pkg/go/build/#Package"><code>Package</code></a> type
-adds new fields <code>BinaryOnly</code>, <code>CgoFFLAGS</code>, and <code>FFiles</code>.
-</p>
-</dd>
-</dl>
-
-<dl id="go_doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
-
-<dd>
-<p>
-To support the corresponding change in <code>go</code> <code>test</code> described above,
-<a href="/pkg/go/doc/#Example"><code>Example</code></a> struct adds an Unordered field
-indicating whether the example may generate its output lines in any order.
-</p>
-</dd>
-</dl>
-
-<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
-
-<dd>
-<p>
-The package adds new constants
-<code>SeekStart</code>, <code>SeekCurrent</code>, and <code>SeekEnd</code>,
-for use with
-<a href="/pkg/io/#Seeker"><code>Seeker</code></a>
-implementations.
-These constants are preferred over <code>os.SEEK_SET</code>, <code>os.SEEK_CUR</code>, and <code>os.SEEK_END</code>,
-but the latter will be preserved for compatibility.
-</p>
-</dd>
-</dl>
-
-<dl id="math_big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/math/big/#Float"><code>Float</code></a> type adds
-<a href="/pkg/math/big/#Float.GobEncode"><code>GobEncode</code></a> and
-<a href="/pkg/math/big/#Float.GobDecode"><code>GobDecode</code></a> methods,
-so that values of type <code>Float</code> can now be encoded and decoded using the
-<a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>
-package.
-</p>
-</dd>
-</dl>
-
-<dl id="math_rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/math/rand/#Read"><code>Read</code></a> function and
-<a href="/pkg/math/rand/#Rand"><code>Rand</code></a>'s
-<a href="/pkg/math/rand/#Rand.Read"><code>Read</code></a> method
-now produce a pseudo-random stream of bytes that is consistent and not
-dependent on the size of the input buffer.
-</p>
-
-<p>
-The documentation clarifies that
-Rand's <a href="/pkg/math/rand/#Rand.Seed"><code>Seed</code></a>
-and <a href="/pkg/math/rand/#Rand.Read"><code>Read</code></a> methods
-are not safe to call concurrently, though the global
-functions <a href="/pkg/math/rand/#Seed"><code>Seed</code></a>
-and <a href="/pkg/math/rand/#Read"><code>Read</code></a> are (and have
-always been) safe.
-</p>
-</dd>
-</dl>
-
-<dl id="mime_multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/mime/multipart/#Writer"><code>Writer</code></a>
-implementation now emits each multipart section's header sorted by key.
-Previously, iteration over a map caused the section header to use a
-non-deterministic order.
-</p>
-</dd>
-</dl>
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-
-<dd>
-<p>
-As part of the introduction of <a href="#context">context</a>, the
-<a href="/pkg/net/#Dialer"><code>Dialer</code></a> type has a new method
-<a href="/pkg/net/#Dialer.DialContext"><code>DialContext</code></a>, like
-<a href="/pkg/net/#Dialer.Dial"><code>Dial</code></a> but adding the
-<a href="/pkg/context/#Context"><code>context.Context</code></a>
-for the dial operation.
-The context is intended to obsolete the <code>Dialer</code>'s
-<code>Cancel</code> and <code>Deadline</code> fields,
-but the implementation continues to respect them,
-for backwards compatibility.
-</p>
-
-<p>
-The
-<a href="/pkg/net/#IP"><code>IP</code></a> type's
-<a href="/pkg/net/#IP.String"><code>String</code></a> method has changed its result for invalid <code>IP</code> addresses.
-In past releases, if an <code>IP</code> byte slice had length other than 0, 4, or 16, <code>String</code>
-returned <code>"?"</code>.
-Go 1.7 adds the hexadecimal encoding of the bytes, as in <code>"?12ab"</code>.
-</p>
-
-<p>
-The pure Go <a href="/pkg/net/#hdr-Name_Resolution">name resolution</a>
-implementation now respects <code>nsswitch.conf</code>'s
-stated preference for the priority of DNS lookups compared to
-local file (that is, <code>/etc/hosts</code>) lookups.
-</p>
-</dd>
-</dl>
-
-<dl id="net_http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-
-<dd>
-<p>
-<a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>'s
-documentation now makes clear that beginning to write the response
-may prevent future reads on the request body.
-For maximal compatibility, implementations are encouraged to
-read the request body completely before writing any part of the response.
-</p>
-
-<p>
-As part of the introduction of <a href="#context">context</a>, the
-<a href="/pkg/net/http/#Request"><code>Request</code></a> has a new methods
-<a href="/pkg/net/http/#Request.Context"><code>Context</code></a>, to retrieve the associated context, and
-<a href="/pkg/net/http/#Request.WithContext"><code>WithContext</code></a>, to construct a copy of <code>Request</code>
-with a modified context.
-</p>
-
-<p>
-In the
-<a href="/pkg/net/http/#Server"><code>Server</code></a> implementation,
-<a href="/pkg/net/http/#Server.Serve"><code>Serve</code></a> records in the request context
-both the underlying <code>*Server</code> using the key <code>ServerContextKey</code>
-and the local address on which the request was received (a
-<a href="/pkg/net/#Addr"><code>Addr</code></a>) using the key <code>LocalAddrContextKey</code>.
-For example, the address on which a request received is
-<code>req.Context().Value(http.LocalAddrContextKey).(net.Addr)</code>.
-</p>
-
-<p>
-The server's <a href="/pkg/net/http/#Server.Serve"><code>Serve</code></a> method
-now only enables HTTP/2 support if the <code>Server.TLSConfig</code> field is <code>nil</code>
-or includes <code>"h2"</code> in its <code>TLSConfig.NextProtos</code>.
-</p>
-
-<p>
-The server implementation now
-pads response codes less than 100 to three digits
-as required by the protocol,
-so that <code>w.WriteHeader(5)</code> uses the HTTP response
-status <code>005</code>, not just <code>5</code>.
-</p>
-
-<p>
-The server implementation now correctly sends only one "Transfer-Encoding" header when "chunked"
-is set explicitly, following <a href="https://tools.ietf.org/html/rfc7230#section-3.3.1">RFC 7230</a>.
-</p>
-
-<p>
-The server implementation is now stricter about rejecting requests with invalid HTTP versions.
-Invalid requests claiming to be HTTP/0.x are now rejected (HTTP/0.9 was never fully supported),
-and plaintext HTTP/2 requests other than the "PRI * HTTP/2.0" upgrade request are now rejected as well.
-The server continues to handle encrypted HTTP/2 requests.
-</p>
-
-<p>
-In the server, a 200 status code is sent back by the timeout handler on an empty
-response body, instead of sending back 0 as the status code.
-</p>
-
-<p>
-In the client, the
-<a href="/pkg/net/http/#Transport"><code>Transport</code></a> implementation passes the request context
-to any dial operation connecting to the remote server.
-If a custom dialer is needed, the new <code>Transport</code> field
-<code>DialContext</code> is preferred over the existing <code>Dial</code> field,
-to allow the transport to supply a context.
-</p>
-
-<p>
-The
-<a href="/pkg/net/http/#Transport"><code>Transport</code></a> also adds fields
-<code>IdleConnTimeout</code>,
-<code>MaxIdleConns</code>,
-and
-<code>MaxResponseHeaderBytes</code>
-to help control client resources consumed
-by idle or chatty servers.
-</p>
-
-<p>
-A
-<a href="/pkg/net/http/#Client"><code>Client</code></a>'s configured <code>CheckRedirect</code> function can now
-return <code>ErrUseLastResponse</code> to indicate that the
-most recent redirect response should be returned as the
-result of the HTTP request.
-That response is now available to the <code>CheckRedirect</code> function
-as <code>req.Response</code>.
-</p>
-
-<p>
-Since Go 1, the default behavior of the HTTP client is
-to request server-side compression
-using the <code>Accept-Encoding</code> request header
-and then to decompress the response body transparently,
-and this behavior is adjustable using the
-<a href="/pkg/net/http/#Transport"><code>Transport</code></a>'s <code>DisableCompression</code> field.
-In Go 1.7, to aid the implementation of HTTP proxies, the
-<a href="/pkg/net/http/#Response"><code>Response</code></a>'s new
-<code>Uncompressed</code> field reports whether
-this transparent decompression took place.
-</p>
-
-<p>
-<a href="/pkg/net/http/#DetectContentType"><code>DetectContentType</code></a>
-adds support for a few new audio and video content types.
-</p>
-</dd>
-</dl>
-
-<dl id="net_http_cgi"><dt><a href="/pkg/net/http/cgi/">net/http/cgi</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/net/http/cgi/#Handler"><code>Handler</code></a>
-adds a new field
-<code>Stderr</code>
-that allows redirection of the child process's
-standard error away from the host process's
-standard error.
-</p>
-</dd>
-</dl>
-
-<dl id="net_http_httptest"><dt><a href="/pkg/net/http/httptest/">net/http/httptest</a></dt>
-
-<dd>
-<p>
-The new function
-<a href="/pkg/net/http/httptest/#NewRequest"><code>NewRequest</code></a>
-prepares a new
-<a href="/pkg/net/http/#Request"><code>http.Request</code></a>
-suitable for passing to an
-<a href="/pkg/net/http/#Handler"><code>http.Handler</code></a> during a test.
-</p>
-
-<p>
-The
-<a href="/pkg/net/http/httptest/#ResponseRecorder"><code>ResponseRecorder</code></a>'s new
-<a href="/pkg/net/http/httptest/#ResponseRecorder.Result"><code>Result</code></a> method
-returns the recorded
-<a href="/pkg/net/http/#Response"><code>http.Response</code></a>.
-Tests that need to check the response's headers or trailers
-should call <code>Result</code> and inspect the response fields
-instead of accessing
-<code>ResponseRecorder</code>'s <code>HeaderMap</code> directly.
-</p>
-</dd>
-</dl>
-
-<dl id="net_http_httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a> implementation now responds with “502 Bad Gateway”
-when it cannot reach a back end; in earlier releases it responded with “500 Internal Server Error.”
-</p>
-
-<p>
-Both
-<a href="/pkg/net/http/httputil/#ClientConn"><code>ClientConn</code></a> and
-<a href="/pkg/net/http/httputil/#ServerConn"><code>ServerConn</code></a> have been documented as deprecated.
-They are low-level, old, and unused by Go's current HTTP stack
-and will no longer be updated.
-Programs should use
-<a href="/pkg/net/http/#Client"><code>http.Client</code></a>,
-<a href="/pkg/net/http/#Transport"><code>http.Transport</code></a>,
-and
-<a href="/pkg/net/http/#Server"><code>http.Server</code></a>
-instead.
-</p>
-</dd>
-</dl>
-
-<dl id="net_http_pprof"><dt><a href="/pkg/net/http/pprof/">net/http/pprof</a></dt>
-
-<dd>
-<p>
-The runtime trace HTTP handler, installed to handle the path <code>/debug/pprof/trace</code>,
-now accepts a fractional number in its <code>seconds</code> query parameter,
-allowing collection of traces for intervals smaller than one second.
-This is especially useful on busy servers.
-</p>
-</dd>
-</dl>
-
-<dl><dt><a href="/pkg/net/mail/">net/mail</a></dt>
-
-<dd>
-<p>
-The address parser now allows unescaped UTF-8 text in addresses
-following <a href="https://tools.ietf.org/html/rfc6532">RFC 6532</a>,
-but it does not apply any normalization to the result.
-For compatibility with older mail parsers,
-the address encoder, namely
-<a href="/pkg/net/mail/#Address"><code>Address</code></a>'s
-<a href="/pkg/net/mail/#Address.String"><code>String</code></a> method,
-continues to escape all UTF-8 text following <a href="https://tools.ietf.org/html/rfc5322">RFC 5322</a>.
-</p>
-
-<p>
-The <a href="/pkg/net/mail/#ParseAddress"><code>ParseAddress</code></a>
-function and
-the <a href="/pkg/net/mail/#AddressParser.Parse"><code>AddressParser.Parse</code></a>
-method are stricter.
-They used to ignore any characters following an e-mail address, but
-will now return an error for anything other than whitespace.
-</p>
-</dd>
-</dl>
-
-<dl id="net_url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/net/url/#URL"><code>URL</code></a>'s
-new <code>ForceQuery</code> field
-records whether the URL must have a query string,
-in order to distinguish URLs without query strings (like <code>/search</code>)
-from URLs with empty query strings (like <code>/search?</code>).
-</p>
-</dd>
-</dl>
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-
-<dd>
-<p>
-<a href="/pkg/os/#IsExist"><code>IsExist</code></a> now returns true for <code>syscall.ENOTEMPTY</code>,
-on systems where that error exists.
-</p>
-
-<p>
-On Windows,
-<a href="/pkg/os/#Remove"><code>Remove</code></a> now removes read-only files when possible,
-making the implementation behave as on
-non-Windows systems.
-</p>
-</dd>
-</dl>
-
-<dl id="os_exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
-
-<dd>
-<p>
-As part of the introduction of <a href="#context">context</a>,
-the new constructor
-<a href="/pkg/os/exec/#CommandContext"><code>CommandContext</code></a>
-is like
-<a href="/pkg/os/exec/#Command"><code>Command</code></a> but includes a context that can be used to cancel the command execution.
-</p>
-</dd>
-</dl>
-
-<dl id="os_user"><dt><a href="/pkg/os/user/">os/user</a></dt>
-
-<dd>
-<p>
-The
-<a href="/pkg/os/user/#Current"><code>Current</code></a>
-function is now implemented even when cgo is not available.
-</p>
-
-<p>
-The new
-<a href="/pkg/os/user/#Group"><code>Group</code></a> type,
-along with the lookup functions
-<a href="/pkg/os/user/#LookupGroup"><code>LookupGroup</code></a> and
-<a href="/pkg/os/user/#LookupGroupId"><code>LookupGroupId</code></a>
-and the new field <code>GroupIds</code> in the <code>User</code> struct,
-provides access to system-specific user group information.
-</p>
-</dd>
-</dl>
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-
-<dd>
-<p>
-Although
-<a href="/pkg/reflect/#Value"><code>Value</code></a>'s
-<a href="/pkg/reflect/#Value.Field"><code>Field</code></a> method has always been documented to panic
-if the given field number <code>i</code> is out of range, it has instead
-silently returned a zero
-<a href="/pkg/reflect/#Value"><code>Value</code></a>.
-Go 1.7 changes the method to behave as documented.
-</p>
-
-<p>
-The new
-<a href="/pkg/reflect/#StructOf"><code>StructOf</code></a>
-function constructs a struct type at run time.
-It completes the set of type constructors, joining
-<a href="/pkg/reflect/#ArrayOf"><code>ArrayOf</code></a>,
-<a href="/pkg/reflect/#ChanOf"><code>ChanOf</code></a>,
-<a href="/pkg/reflect/#FuncOf"><code>FuncOf</code></a>,
-<a href="/pkg/reflect/#MapOf"><code>MapOf</code></a>,
-<a href="/pkg/reflect/#PtrTo"><code>PtrTo</code></a>,
-and
-<a href="/pkg/reflect/#SliceOf"><code>SliceOf</code></a>.
-</p>
-
-<p>
-<a href="/pkg/reflect/#StructTag"><code>StructTag</code></a>'s
-new method
-<a href="/pkg/reflect/#StructTag.Lookup"><code>Lookup</code></a>
-is like
-<a href="/pkg/reflect/#StructTag.Get"><code>Get</code></a>
-but distinguishes the tag not containing the given key
-from the tag associating an empty string with the given key.
-</p>
-
-<p>
-The
-<a href="/pkg/reflect/#Type.Method"><code>Method</code></a> and
-<a href="/pkg/reflect/#Type.NumMethod"><code>NumMethod</code></a>
-methods of
-<a href="/pkg/reflect/#Type"><code>Type</code></a> and
-<a href="/pkg/reflect/#Value"><code>Value</code></a>
-no longer return or count unexported methods.
-</p>
-</dd>
-</dl>
-
-<dl id="strings"><dt><a href="/pkg/strings/">strings</a></dt>
-
-<dd>
-<p>
-In previous releases of Go, if
-<a href="/pkg/strings/#Reader"><code>Reader</code></a>'s
-<a href="/pkg/strings/#Reader.Read"><code>Read</code></a> method
-were asked for zero bytes with no data remaining, it would
-return a count of 0 and no error.
-Now it returns a count of 0 and the error
-<a href="/pkg/io/#EOF"><code>io.EOF</code></a>.
-</p>
-
-<p>
-The
-<a href="/pkg/strings/#Reader"><code>Reader</code></a> type has a new method
-<a href="/pkg/strings/#Reader.Reset"><code>Reset</code></a> to allow reuse of a <code>Reader</code>.
-</p>
-</dd>
-</dl>
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-
-<dd>
-<p>
-<a href="/pkg/time/#Duration"><code>Duration</code></a>'s
-time.Duration.String method now reports the zero duration as <code>"0s"</code>, not <code>"0"</code>.
-<a href="/pkg/time/#ParseDuration"><code>ParseDuration</code></a> continues to accept both forms.
-</p>
-
-<p>
-The method call <code>time.Local.String()</code> now returns <code>"Local"</code> on all systems;
-in earlier releases, it returned an empty string on Windows.
-</p>
-
-<p>
-The time zone database in
-<code>$GOROOT/lib/time</code> has been updated
-to IANA release 2016d.
-This fallback database is only used when the system time zone database
-cannot be found, for example on Windows.
-The Windows time zone abbreviation list has also been updated.
-</p>
-</dd>
-</dl>
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-
-<dd>
-<p>
-On Linux, the
-<a href="/pkg/syscall/#SysProcAttr"><code>SysProcAttr</code></a> struct
-(as used in
-<a href="/pkg/os/exec/#Cmd"><code>os/exec.Cmd</code></a>'s <code>SysProcAttr</code> field)
-has a new <code>Unshareflags</code> field.
-If the field is nonzero, the child process created by
-<a href="/pkg/syscall/#ForkExec"><code>ForkExec</code></a>
-(as used in <code>exec.Cmd</code>'s <code>Run</code> method)
-will call the
-<a href="http://man7.org/linux/man-pages/man2/unshare.2.html"><i>unshare</i>(2)</a>
-system call before executing the new program.
-</p>
-</dd>
-</dl>
-
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-
-<dd>
-<p>
-The <a href="/pkg/unicode/"><code>unicode</code></a> package and associated
-support throughout the system has been upgraded from version 8.0 to
-<a href="http://www.unicode.org/versions/Unicode9.0.0/">Unicode 9.0</a>.
-</p>
-</dd>
-</dl>
diff --git a/_content/doc/go1.8.html b/_content/doc/go1.8.html
deleted file mode 100644
index 7e6dbfa..0000000
--- a/_content/doc/go1.8.html
+++ /dev/null
@@ -1,1668 +0,0 @@
-<!--{
-	"Title": "Go 1.8 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.8</h2>
-
-<p>
-The latest Go release, version 1.8, arrives six months after <a href="go1.7">Go 1.7</a>.
-Most of its changes are in the implementation of the toolchain, runtime, and libraries.
-There are <a href="#language">two minor changes</a> to the language specification.
-As always, the release maintains the Go 1 <a href="/doc/go1compat.html">promise of compatibility</a>.
-We expect almost all Go programs to continue to compile and run as before.
-</p>
-
-<p>
-The release <a href="#ports">adds support for 32-bit MIPS</a>,
-<a href="#compiler">updates the compiler back end</a> to generate more efficient code,
-<a href="#gc">reduces GC pauses</a> by eliminating stop-the-world stack rescanning,
-<a href="#h2push">adds HTTP/2 Push support</a>,
-<a href="#http_shutdown">adds HTTP graceful shutdown</a>,
-<a href="#more_context">adds more context support</a>,
-<a href="#mutex_prof">enables profiling mutexes</a>,
-and <a href="#sort_slice">simplifies sorting slices</a>.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  When explicitly converting a value from one struct type to another,
-  as of Go 1.8 the tags are ignored. Thus two structs that differ
-  only in their tags may be converted from one to the other:
-</p>
-
-<pre>
-func example() {
-	type T1 struct {
-		X int `json:"foo"`
-	}
-	type T2 struct {
-		X int `json:"bar"`
-	}
-	var v1 T1
-	var v2 T2
-	v1 = T1(v2) // now legal
-}
-</pre>
-
-
-<p> <!-- CL 17711 -->
-  The language specification now only requires that implementations
-  support up to 16-bit exponents in floating-point constants.  This does not affect
-  either the “<a href="/cmd/compile/"><code>gc</code></a>” or
-  <code>gccgo</code> compilers, both of
-  which still support 32-bit exponents.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p>
-Go now supports 32-bit MIPS on Linux for both big-endian
-(<code>linux/mips</code>) and little-endian machines
-(<code>linux/mipsle</code>) that implement the MIPS32r1 instruction set with FPU
-or kernel FPU emulation. Note that many common MIPS-based routers lack an FPU and
-have firmware that doesn't enable kernel FPU emulation; Go won't run on such machines.
-</p>
-
-<p>
-On DragonFly BSD, Go now requires DragonFly 4.4.4 or later. <!-- CL 29491, CL 29971 -->
-</p>
-
-<p>
-On OpenBSD, Go now requires OpenBSD 5.9 or later. <!-- CL 34093 -->
-</p>
-
-<p>
-The Plan 9 port's networking support is now much more complete
-and matches the behavior of Unix and Windows with respect to deadlines
-and cancellation. For Plan 9 kernel requirements, see the
-<a href="/wiki/Plan9">Plan 9 wiki page</a>.
-</p>
-
-<p>
-  Go 1.8 now only supports OS X 10.8 or later. This is likely the last
-  Go release to support 10.8. Compiling Go or running
-  binaries on older OS X versions is untested.
-</p>
-
-<p>
-  Go 1.8 will be the last release to support Linux on ARMv5E and ARMv6 processors:
-  Go 1.9 will likely require the ARMv6K (as found in the Raspberry Pi 1) or later.
-  To identify whether a Linux system is ARMv6K or later, run
-  “<code>go</code> <code>tool</code> <code>dist</code> <code>-check-armv6k</code>”
-  (to facilitate testing, it is also possible to just copy the <code>dist</code> command to the
-  system without installing a full copy of Go 1.8)
-  and if the program terminates with output "ARMv6K supported." then the system
-  implements ARMv6K or later.
-  Go on non-Linux ARM systems already requires ARMv6K or later.
-</p>
-
-<p id="zos"><!-- CL 31596, go.dev/issue/17528 -->
-  <code>zos</code> is now a recognized value for <code>GOOS</code>,
-  reserved for the z/OS operating system.
-</p>
-
-<h3 id="known_issues">Known Issues</h3>
-
-<p>
-There are some instabilities on FreeBSD and NetBSD that are known but not understood.
-These can lead to program crashes in rare cases.
-See
-<a href="/issue/15658">issue 15658</a> and
-<a href="/issue/16511">issue 16511</a>.
-Any help in solving these issues would be appreciated.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="cmd_asm">Assembler</h3>
-
-<p>
-For 64-bit x86 systems, the following instructions have been added:
-<code>VBROADCASTSD</code>,
-<code>BROADCASTSS</code>,
-<code>MOVDDUP</code>,
-<code>MOVSHDUP</code>,
-<code>MOVSLDUP</code>,
-<code>VMOVDDUP</code>,
-<code>VMOVSHDUP</code>, and
-<code>VMOVSLDUP</code>.
-</p>
-
-<p>
-For 64-bit PPC systems, the common vector scalar instructions have been
-added:
-<code>LXS</code>,
-<code>LXSDX</code>,
-<code>LXSI</code>,
-<code>LXSIWAX</code>,
-<code>LXSIWZX</code>,
-<code>LXV</code>,
-<code>LXVD2X</code>,
-<code>LXVDSX</code>,
-<code>LXVW4X</code>,
-<code>MFVSR</code>,
-<code>MFVSRD</code>,
-<code>MFVSRWZ</code>,
-<code>MTVSR</code>,
-<code>MTVSRD</code>,
-<code>MTVSRWA</code>,
-<code>MTVSRWZ</code>,
-<code>STXS</code>,
-<code>STXSDX</code>,
-<code>STXSI</code>,
-<code>STXSIWX</code>,
-<code>STXV</code>,
-<code>STXVD2X</code>,
-<code>STXVW4X</code>,
-<code>XSCV</code>,
-<code>XSCVDPSP</code>,
-<code>XSCVDPSPN</code>,
-<code>XSCVDPSXDS</code>,
-<code>XSCVDPSXWS</code>,
-<code>XSCVDPUXDS</code>,
-<code>XSCVDPUXWS</code>,
-<code>XSCVSPDP</code>,
-<code>XSCVSPDPN</code>,
-<code>XSCVSXDDP</code>,
-<code>XSCVSXDSP</code>,
-<code>XSCVUXDDP</code>,
-<code>XSCVUXDSP</code>,
-<code>XSCVX</code>,
-<code>XSCVXP</code>,
-<code>XVCV</code>,
-<code>XVCVDPSP</code>,
-<code>XVCVDPSXDS</code>,
-<code>XVCVDPSXWS</code>,
-<code>XVCVDPUXDS</code>,
-<code>XVCVDPUXWS</code>,
-<code>XVCVSPDP</code>,
-<code>XVCVSPSXDS</code>,
-<code>XVCVSPSXWS</code>,
-<code>XVCVSPUXDS</code>,
-<code>XVCVSPUXWS</code>,
-<code>XVCVSXDDP</code>,
-<code>XVCVSXDSP</code>,
-<code>XVCVSXWDP</code>,
-<code>XVCVSXWSP</code>,
-<code>XVCVUXDDP</code>,
-<code>XVCVUXDSP</code>,
-<code>XVCVUXWDP</code>,
-<code>XVCVUXWSP</code>,
-<code>XVCVX</code>,
-<code>XVCVXP</code>,
-<code>XXLAND</code>,
-<code>XXLANDC</code>,
-<code>XXLANDQ</code>,
-<code>XXLEQV</code>,
-<code>XXLNAND</code>,
-<code>XXLNOR</code>,
-<code>XXLOR</code>,
-<code>XXLORC</code>,
-<code>XXLORQ</code>,
-<code>XXLXOR</code>,
-<code>XXMRG</code>,
-<code>XXMRGHW</code>,
-<code>XXMRGLW</code>,
-<code>XXPERM</code>,
-<code>XXPERMDI</code>,
-<code>XXSEL</code>,
-<code>XXSI</code>,
-<code>XXSLDWI</code>,
-<code>XXSPLT</code>, and
-<code>XXSPLTW</code>.
-</p>
-
-<h3 id="tool_yacc">Yacc</h3>
-
-<p> <!-- CL 27324, CL 27325 -->
-The <code>yacc</code> tool (previously available by running
-“<code>go</code> <code>tool</code> <code>yacc</code>”) has been removed.
-As of Go 1.7 it was no longer used by the Go compiler.
-It has moved to the “tools” repository and is now available at
-<code><a href="https://godoc.org/golang.org/x/tools/cmd/goyacc">golang.org/x/tools/cmd/goyacc</a></code>.
-</p>
-
-<h3 id="tool_fix">Fix</h3>
-
-<p> <!-- CL 28872 -->
-  The <code>fix</code> tool has a new “<code>context</code>”
-  fix to change imports from “<code>golang.org/x/net/context</code>”
-  to “<a href="/pkg/context/"><code>context</code></a>”.
-</p>
-
-<h3 id="tool_pprof">Pprof</h3>
-
-<p> <!-- CL 33157 -->
-  The <code>pprof</code> tool can now profile TLS servers
-  and skip certificate validation by using the “<code>https+insecure</code>”
-  URL scheme.
-</p>
-
-<p> <!-- CL 23781 -->
-  The callgrind output now has instruction-level granularity.
-</p>
-
-<h3 id="tool_trace">Trace</h3>
-
-<p> <!-- CL 23324 -->
-  The <code>trace</code> tool has a new <code>-pprof</code> flag for
-  producing pprof-compatible blocking and latency profiles from an
-  execution trace.
-</p>
-
-<p> <!-- CL 30017, CL 30702 -->
-  Garbage collection events are now shown more clearly in the
-  execution trace viewer. Garbage collection activity is shown on its
-  own row and GC helper goroutines are annotated with their roles.
-</p>
-
-<h3 id="tool_vet">Vet</h3>
-
-<p>Vet is stricter in some ways and looser where it
-  previously caused false positives.</p>
-
-<p>Vet now checks for copying an array of locks,
-  duplicate JSON and XML struct field tags,
-  non-space-separated struct tags,
-  deferred calls to HTTP <code>Response.Body.Close</code>
-  before checking errors, and
-  indexed arguments in <code>Printf</code>.
-  It also improves existing checks.</p>
-</p>
-
-<h3 id="compiler">Compiler Toolchain</h3>
-
-<p>
-Go 1.7 introduced a new compiler back end for 64-bit x86 systems.
-In Go 1.8, that back end has been developed further and is now used for
-all architectures.
-</p>
-
-<p>
-The new back end, based on
-<a href="https://en.wikipedia.org/wiki/Static_single_assignment_form">static single assignment form</a> (SSA),
-generates more compact, more efficient code
-and provides a better platform for optimizations
-such as bounds check elimination.
-The new back end reduces the CPU time required by
-<a href="/test/bench/go1/">our benchmark programs</a> by 20-30%
-on 32-bit ARM systems. For 64-bit x86 systems, which already used the SSA back end in
-Go 1.7, the gains are a more modest 0-10%. Other architectures will likely
-see improvements closer to the 32-bit ARM numbers.
-</p>
-
-<p>
-  The temporary <code>-ssa=0</code> compiler flag introduced in Go 1.7
-  to disable the new back end has been removed in Go 1.8.
-</p>
-
-<p>
-  In addition to enabling the new compiler back end for all systems,
-  Go 1.8 also introduces a new compiler front end. The new compiler
-  front end should not be noticeable to users but is the foundation for
-  future performance work.
-</p>
-
-<p>
-  The compiler and linker have been optimized and run faster in this
-  release than in Go 1.7, although they are still slower than we would
-  like and will continue to be optimized in future releases.
-  Compared to the previous release, Go 1.8 is
-  <a href="https://dave.cheney.net/2016/11/19/go-1-8-toolchain-improvements">about 15% faster</a>.
-</p>
-
-<h3 id="cmd_cgo">Cgo</h3>
-
-<p> <!-- CL 31141 -->
-The Go tool now remembers the value of the <code>CGO_ENABLED</code> environment
-variable set during <code>make.bash</code> and applies it to all future compilations
-by default to fix issue <a href="/issue/12808">#12808</a>.
-When doing native compilation, it is rarely necessary to explicitly set
-the <code>CGO_ENABLED</code> environment variable as <code>make.bash</code>
-will detect the correct setting automatically. The main reason to explicitly
-set the <code>CGO_ENABLED</code> environment variable is when your environment
-supports cgo, but you explicitly do not want cgo support, in which case, set
-<code>CGO_ENABLED=0</code> during <code>make.bash</code> or <code>all.bash</code>.
-</p>
-
-<p> <!-- CL 29991 -->
-The environment variable <code>PKG_CONFIG</code> may now be used to
-set the program to run to handle <code>#cgo</code> <code>pkg-config</code>
-directives.  The default is <code>pkg-config</code>, the program
-always used by earlier releases.  This is intended to make it easier
-to cross-compile
-<a href="/cmd/cgo/">cgo</a> code.
-</p>
-
-<p> <!-- CL 32354 -->
-The <a href="/cmd/cgo/">cgo</a> tool now supports a <code>-srcdir</code>
-option, which is used by the <a href="/cmd/go/">go</a> command.
-</p>
-
-<p> <!-- CL 31768, 31811 -->
-If <a href="/cmd/cgo/">cgo</a> code calls <code>C.malloc</code>, and
-<code>malloc</code> returns <code>NULL</code>, the program will now
-crash with an out of memory error.
-<code>C.malloc</code> will never return <code>nil</code>.
-Unlike most C functions, <code>C.malloc</code> may not be used in a
-two-result form returning an errno value.
-</p>
-
-<p> <!-- CL 33237 -->
-If <a href="/cmd/cgo/">cgo</a> is used to call a C function passing a
-pointer to a C union, and if the C union can contain any pointer
-values, and if <a href="/cmd/cgo/#hdr-Passing_pointers">cgo pointer
-checking</a> is enabled (as it is by default), the union value is now
-checked for Go pointers.
-</p>
-
-<h3 id="gccgo">Gccgo</h3>
-
-<p>
-Due to the alignment of Go's semiannual release schedule with GCC's
-annual release schedule,
-GCC release 6 contains the Go 1.6.1 version of gccgo.
-We expect that the next release, GCC 7, will contain the Go 1.8
-version of gccgo.
-</p>
-
-<h3 id="gopath">Default GOPATH</h3>
-
-<p>
-  The
-  <a href="/cmd/go/#hdr-GOPATH_environment_variable"><code>GOPATH</code>
-  environment variable</a> now has a default value if it
-  is unset. It defaults to
-  <code>$HOME/go</code> on Unix and
-  <code>%USERPROFILE%/go</code> on Windows.
-</p>
-
-<h3 id="go_get">Go get</h3>
-
-<p> <!-- CL 34818 -->
-  The “<code>go</code> <code>get</code>” command now always respects
-  HTTP proxy environment variables, regardless of whether
-  the <code style='white-space:nowrap'>-insecure</code> flag is used. In previous releases, the
-  <code style='white-space:nowrap'>-insecure</code> flag had the side effect of not using proxies.
-</p>
-
-<h3 id="go_bug">Go bug</h3>
-
-<p>
-  The new
-  “<a href="/cmd/go/#hdr-Print_information_for_bug_reports"><code>go</code> <code>bug</code></a>”
-  command starts a bug report on GitHub, prefilled
-  with information about the current system.
-</p>
-
-<h3 id="cmd_doc">Go doc</h3>
-
-<p> <!-- CL 25419 -->
-  The
-  “<a href="/cmd/go/#hdr-Show_documentation_for_package_or_symbol"><code>go</code> <code>doc</code></a>”
-  command now groups constants and variables with their type,
-  following the behavior of
-  <a href="/cmd/godoc/"><code>godoc</code></a>.
-</p>
-
-<p> <!-- CL 25420 -->
-  In order to improve the readability of <code>doc</code>'s
-  output, each summary of the first-level items is guaranteed to
-  occupy a single line.
-</p>
-
-<p> <!-- CL 31852 -->
-  Documentation for a specific method in an interface definition can
-  now be requested, as in
-  “<code>go</code> <code>doc</code> <code>net.Conn.SetDeadline</code>”.
-</p>
-
-<h3 id="plugin">Plugins</h3>
-
-<p>
-  Go now provides early support for plugins with a “<code>plugin</code>”
-  build mode for generating plugins written in Go, and a
-  new <a href="/pkg/plugin/"><code>plugin</code></a> package for
-  loading such plugins at run time. Plugin support is currently only
-  available on Linux. Please report any issues.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<h3 id="liveness">Argument Liveness</h3>
-
-<p>
-  <!-- Issue 15843 --> The garbage collector no longer considers
-  arguments live throughout the entirety of a function. For more
-  information, and for how to force a variable to remain live, see
-  the <a href="/pkg/runtime/#KeepAlive"><code>runtime.KeepAlive</code></a>
-  function added in Go 1.7.
-</p>
-
-<p>
-  <i>Updating:</i>
-  Code that sets a finalizer on an allocated object may need to add
-  calls to <code>runtime.KeepAlive</code> in functions or methods
-  using that object.
-  Read the
-  <a href="/pkg/runtime/#KeepAlive"><code>KeepAlive</code>
-  documentation</a> and its example for more details.
-</p>
-
-<h3 id="mapiter">Concurrent Map Misuse</h3>
-
-<p>
-In Go 1.6, the runtime
-<a href="/doc/go1.6#runtime">added lightweight,
-best-effort detection of concurrent misuse of maps</a>. This release
-improves that detector with support for detecting programs that
-concurrently write to and iterate over a map.
-</p>
-<p>
-As always, if one goroutine is writing to a map, no other goroutine should be
-reading (which includes iterating) 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 the program
-under the
-<a href="https://blog.golang.org/race-detector">race detector</a>,
-which will more reliably identify the race
-and give more detail.
-</p>
-
-<h3 id="memstats">MemStats Documentation</h3>
-
-<p> <!-- CL 28972 -->
-  The <a href="/pkg/runtime/#MemStats"><code>runtime.MemStats</code></a>
-  type has been more thoroughly documented.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-As always, the changes are so general and varied that precise statements
-about performance are difficult to make.
-Most programs should run a bit faster,
-due to speedups in the garbage collector and
-optimizations in the standard library.
-</p>
-
-<p>
-There have been optimizations to implementations in the
-<a href="/pkg/bytes/"><code>bytes</code></a>,
-<a href="/pkg/crypto/aes/"><code>crypto/aes</code></a>,
-<a href="/pkg/crypto/cipher/"><code>crypto/cipher</code></a>,
-<a href="/pkg/crypto/elliptic/"><code>crypto/elliptic</code></a>,
-<a href="/pkg/crypto/sha256/"><code>crypto/sha256</code></a>,
-<a href="/pkg/crypto/sha512/"><code>crypto/sha512</code></a>,
-<a href="/pkg/encoding/asn1/"><code>encoding/asn1</code></a>,
-<a href="/pkg/encoding/csv/"><code>encoding/csv</code></a>,
-<a href="/pkg/encoding/hex/"><code>encoding/hex</code></a>,
-<a href="/pkg/encoding/json/"><code>encoding/json</code></a>,
-<a href="/pkg/hash/crc32/"><code>hash/crc32</code></a>,
-<a href="/pkg/image/color/"><code>image/color</code></a>,
-<a href="/pkg/image/draw/"><code>image/draw</code></a>,
-<a href="/pkg/math/"><code>math</code></a>,
-<a href="/pkg/math/big/"><code>math/big</code></a>,
-<a href="/pkg/reflect/"><code>reflect</code></a>,
-<a href="/pkg/regexp/"><code>regexp</code></a>,
-<a href="/pkg/runtime/"><code>runtime</code></a>,
-<a href="/pkg/strconv/"><code>strconv</code></a>,
-<a href="/pkg/strings/"><code>strings</code></a>,
-<a href="/pkg/syscall/"><code>syscall</code></a>,
-<a href="/pkg/text/template/"><code>text/template</code></a>, and
-<a href="/pkg/unicode/utf8/"><code>unicode/utf8</code></a>
-packages.
-</p>
-
-<h3 id="gc">Garbage Collector</h3>
-
-<p>
-  Garbage collection pauses should be significantly shorter than they
-  were in Go 1.7, usually under 100 microseconds and often as low as
-  10 microseconds.
-  See the
-  <a href="https://github.com/golang/proposal/blob/master/design/17503-eliminate-rescan.md"
-     >document on eliminating stop-the-world stack re-scanning</a>
-  for details.  More work remains for Go 1.9.
-</p>
-
-<h3 id="defer">Defer</h3>
-
-<!-- CL 29656, CL 29656 -->
-<p>
-  The overhead of <a href="/ref/spec/#Defer_statements">deferred
-  function calls</a> has been reduced by about half.
-</p>
-
-<h3 id="cgoperf">Cgo</h3>
-
-<p>The overhead of calls from Go into C has been reduced by about half.</p>
-
-<h2 id="library">Standard library</h2>
-
-<h3 id="examples">Examples</h3>
-
-<p>
-Examples have been added to the documentation across many packages.
-</p>
-
-<h3 id="sort_slice">Sort</h3>
-
-<p>
-The <a href="/pkg/sort/">sort</a> package
-now includes a convenience function
-<a href="/pkg/sort/#Slice"><code>Slice</code></a> to sort a
-slice given a <em>less</em> function.
-
-In many cases this means that writing a new sorter type is not
-necessary.
-</p>
-
-<p>
-Also new are
-<a href="/pkg/sort/#SliceStable"><code>SliceStable</code></a> and
-<a href="/pkg/sort/#SliceIsSorted"><code>SliceIsSorted</code></a>.
-</p>
-
-<h3 id="h2push">HTTP/2 Push</h3>
-
-<p>
-The <a href="/pkg/net/http/">net/http</a> package now includes a
-mechanism to
-send HTTP/2 server pushes from a
-<a href="/pkg/net/http/#Handler"><code>Handler</code></a>.
-Similar to the existing <code>Flusher</code> and <code>Hijacker</code>
-interfaces, an HTTP/2
-<a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>
-now implements the new
-<a href="/pkg/net/http/#Pusher"><code>Pusher</code></a> interface.
-</p>
-
-<h3 id="http_shutdown">HTTP Server Graceful Shutdown</h3>
-
-<p> <!-- CL 32329 -->
-  The HTTP Server now has support for graceful shutdown using the new
-  <a href="/pkg/net/http/#Server.Shutdown"><code>Server.Shutdown</code></a>
-  method and abrupt shutdown using the new
-  <a href="/pkg/net/http/#Server.Close"><code>Server.Close</code></a>
-  method.
-</p>
-
-<h3 id="more_context">More Context Support</h3>
-
-<p>
-  Continuing <a href="/doc/go1.7#context">Go 1.7's adoption</a>
-  of <a href="/pkg/context/#Context"><code>context.Context</code></a>
-  into the standard library, Go 1.8 adds more context support
-  to existing packages:
-</p>
-
-<ul>
-  <li>The new <a href="/pkg/net/http/#Server.Shutdown"><code>Server.Shutdown</code></a>
-    takes a context argument.</li>
-  <li>There have been <a href="#database_sql">significant additions</a> to the
-    <a href="/pkg/database/sql/">database/sql</a> package with context support.</li>
-  <li>All nine of the new <code>Lookup</code> methods on the new
-    <a href="/pkg/net/#Resolver"><code>net.Resolver</code></a> now
-    take a context.</li>
-  </ul>
-
-<h3 id="mutex_prof">Mutex Contention Profiling</h3>
-
-<p>
-  The runtime and tools now support profiling contended mutexes.
-</p>
-
-<p>
-  Most users will want to use the new <code>-mutexprofile</code>
-  flag with “<a href="/cmd/go/#hdr-Description_of_testing_flags"><code>go</code> <code>test</code></a>”,
-  and then use <a href="/cmd/pprof/">pprof</a> on the resultant file.
-</p>
-
-<p>
-  Lower-level support is also available via the new
-  <a href="/pkg/runtime/#MutexProfile"><code>MutexProfile</code></a>
-  and
-  <a href="/pkg/runtime/#SetMutexProfileFraction"><code>SetMutexProfileFraction</code></a>.
-</p>
-
-<p>
-  A known limitation for Go 1.8 is that the profile only reports contention for
-  <a href="/pkg/sync/#Mutex"><code>sync.Mutex</code></a>,
-  not
-  <a href="/pkg/sync/#RWMutex"><code>sync.RWMutex</code></a>.
-</p>
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-As always, there are various minor changes and updates to the library,
-made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-in mind. The following sections list the user visible changes and additions.
-Optimizations and minor bug fixes are not listed.
-</p>
-
-<dl id="archive_tar"><dt><a href="/pkg/archive/tar/">archive/tar</a></dt>
-  <dd>
-
-    <p> <!-- CL 28471, CL 31440, CL 31441, CL 31444, CL 28418, CL 31439 -->
-      The tar implementation corrects many bugs in corner cases of the file format.
-      The <a href="/pkg/archive/tar/#Reader"><code>Reader</code></a>
-      is now able to process tar files in the PAX format with entries larger than 8GB.
-      The <a href="/pkg/archive/tar/#Writer"><code>Writer</code></a>
-      no longer produces invalid tar files in some situations involving long pathnames.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="compress_flate"><dt><a href="/pkg/compress/flate/">compress/flate</a></dt>
-  <dd>
-
-    <p> <!-- CL 31640, CL 31174, CL 32149 -->
-      There have been some minor fixes to the encoder to improve the
-      compression ratio in certain situations. As a result, the exact
-      encoded output of <code>DEFLATE</code> may be different from Go 1.7. Since
-      <code>DEFLATE</code> is the underlying compression of gzip, png, zlib, and zip,
-      those formats may have changed outputs.
-    </p>
-
-    <p> <!-- CL 31174 -->
-      The encoder, when operating in
-      <a href="/pkg/compress/flate/#NoCompression"><code>NoCompression</code></a>
-      mode, now produces a consistent output that is not dependent on
-      the size of the slices passed to the
-      <a href="/pkg/compress/flate/#Writer.Write"><code>Write</code></a>
-      method.
-    </p>
-
-    <p> <!-- CL 28216 -->
-      The decoder, upon encountering an error, now returns any
-      buffered data it had uncompressed along with the error.
-    </p>
-
-  </dd>
-</dl>
-
-
-<dl id="compress_gzip"><dt><a href="/pkg/compress/gzip/">compress/gzip</a></dt>
-  <dd>
-
-    <p>
-      The <a href="/pkg/compress/gzip/#Writer"><code>Writer</code></a>
-      now encodes a zero <code>MTIME</code> field when
-      the <a href="/pkg/compress/gzip/#Header"><code>Header.ModTime</code></a>
-      field is the zero value.
-
-      In previous releases of Go, the <code>Writer</code> would encode
-      a nonsensical value.
-
-      Similarly,
-      the <a href="/pkg/compress/gzip/#Reader"><code>Reader</code></a>
-      now reports a zero encoded <code>MTIME</code> field as a zero
-      <code>Header.ModTime</code>.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="context"><dt><a href="/pkg/context/">context</a></dt>
-  <dd>
-    <p> <!-- CL 30370 -->
-      The <a href="/pkg/context#DeadlineExceeded"><code>DeadlineExceeded</code></a>
-      error now implements
-      <a href="/pkg/net/#Error"><code>net.Error</code></a>
-      and reports true for both the <code>Timeout</code> and
-      <code>Temporary</code> methods.
-    </p>
-  </dd>
-</dl>
-
-<dl id="crypto_tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
-  <dd>
-    <p> <!-- CL 25159, CL 31318 -->
-      The new method
-      <a href="/pkg/crypto/tls/#Conn.CloseWrite"><code>Conn.CloseWrite</code></a>
-      allows TLS connections to be half closed.
-    </p>
-
-    <p> <!-- CL 28075 -->
-      The new method
-      <a href="/pkg/crypto/tls/#Config.Clone"><code>Config.Clone</code></a>
-      clones a TLS configuration.
-    </p>
-
-    <p>
-      <!-- CL 30790 -->
-      The new <a href="/pkg/crypto/tls/#Config.GetConfigForClient"><code>Config.GetConfigForClient</code></a>
-      callback allows selecting a configuration for a client dynamically, based
-      on the client's
-      <a href="/pkg/crypto/tls/#ClientHelloInfo"><code>ClientHelloInfo</code></a>.
-
-      <!-- CL 31391, CL 32119 -->
-      The <a href="/pkg/crypto/tls/#ClientHelloInfo"><code>ClientHelloInfo</code></a>
-      struct now has new
-      fields <code>Conn</code>, <code>SignatureSchemes</code> (using
-      the new
-      type <a href="/kg/crypto/tls/#SignatureScheme"><code>SignatureScheme</code></a>),
-      <code>SupportedProtos</code>, and <code>SupportedVersions</code>.
-    </p>
-
-    <p> <!-- CL 32115 -->
-      The new <a href="/pkg/crypto/tls/#Config.GetClientCertificate"><code>Config.GetClientCertificate</code></a>
-      callback allows selecting a client certificate based on the server's
-      TLS <code>CertificateRequest</code> message, represented by the new
-      <a href="/pkg/crypto/tls/#CertificateRequestInfo"><code>CertificateRequestInfo</code></a>.
-    </p>
-
-    <p> <!-- CL 27434 -->
-      The new
-      <a href="/pkg/crypto/tls/#Config.KeyLogWriter"><code>Config.KeyLogWriter</code></a>
-      allows debugging TLS connections
-      in <a href="https://www.wireshark.org/">WireShark</a> and
-      similar tools.
-    </p>
-
-    <p> <!-- CL 32115 -->
-      The new
-      <a href="/pkg/crypto/tls/#Config.VerifyPeerCertificate"><code>Config.VerifyPeerCertificate</code></a>
-      callback allows additional validation of a peer's presented certificate.
-    </p>
-
-    <p> <!-- CL 18130 -->
-      The <code>crypto/tls</code> package now implements basic
-      countermeasures against CBC padding oracles. There should be
-      no explicit secret-dependent timings, but it does not attempt to
-      normalize memory accesses to prevent cache timing leaks.
-    </p>
-
-    <p>
-      The <code>crypto/tls</code> package now supports
-      X25519 and <!-- CL 30824, CL 30825 -->
-      ChaCha20-Poly1305.  <!-- CL 30957, CL 30958 -->
-      ChaCha20-Poly1305 is now prioritized unless <!-- CL 32871 -->
-      hardware support for AES-GCM is present.
-    </p>
-
-    <p> <!-- CL 27315, CL 35290 -->
-      AES-128-CBC cipher suites with SHA-256 are also
-      now supported, but disabled by default.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="crypto_x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p> <!-- CL 24743 -->
-      PSS signatures are now supported.
-    </p>
-
-    <p> <!-- CL 32644 -->
-      <a href="/pkg/crypto/x509/#UnknownAuthorityError"><code>UnknownAuthorityError</code></a>
-      now has a <code>Cert</code> field, reporting the untrusted
-      certificate.
-    </p>
-
-    <p>
-      Certificate validation is more permissive in a few cases and
-      stricter in a few other cases.
-    <!--
-crypto/x509: allow a leaf certificate to be specified directly as root (CL 27393)
-crypto/x509: check that the issuer name matches the issuer's subject name (CL 23571)
-crypto/x509: don't accept a root that already appears in a chain. (CL 32121)
-crypto/x509: fix name constraints handling (CL 30155)
-crypto/x509: parse all names in an RDN (CL 30810)
-crypto/x509: recognise ISO OID for RSA+SHA1 (CL 27394)
-crypto/x509: require a NULL parameters for RSA public keys (CL 16166, CL 27312)
-crypto/x509: return error for missing SerialNumber (CL 27238)
--->
-    </p>
-
-    <p><!-- CL 30375 -->
-      Root certificates will now also be looked for
-      at <code>/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem</code>
-      on Linux, to support RHEL and CentOS.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="database_sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
-  <dd>
-    <p>
-      The package now supports <code>context.Context</code>. There are new methods
-      ending in <code>Context</code> such as
-      <a href="/pkg/database/sql/#DB.QueryContext"><code>DB.QueryContext</code></a> and
-      <a href="/pkg/database/sql/#DB.PrepareContext"><code>DB.PrepareContext</code></a>
-      that take context arguments. Using the new <code>Context</code> methods ensures that
-      connections are closed and returned to the connection pool when the
-      request is done; enables canceling in-progress queries
-      should the driver support that; and allows the database
-      pool to cancel waiting for the next available connection.
-    </p>
-    <p>
-      The <a href="/pkg/database/sql#IsolationLevel"><code>IsolationLevel</code></a>
-      can now be set when starting a transaction by setting the isolation level
-      on <a href="/pkg/database/sql#TxOptions.Isolation"><code>TxOptions.Isolation</code></a> and passing
-      it to <a href="/pkg/database/sql#DB.BeginTx"><code>DB.BeginTx</code></a>.
-      An error will be returned if an isolation level is selected that the driver
-      does not support. A read-only attribute may also be set on the transaction
-      by setting <a href="/pkg/database/sql/#TxOptions.ReadOnly"><code>TxOptions.ReadOnly</code></a>
-      to true.
-    </p>
-    <p>
-      Queries now expose the SQL column type information for drivers that support it.
-      Rows can return <a href="/pkg/database/sql#Rows.ColumnTypes"><code>ColumnTypes</code></a>
-      which can include SQL type information, column type lengths, and the Go type.
-    </p>
-    <p>
-      A <a href="/pkg/database/sql/#Rows"><code>Rows</code></a>
-      can now represent multiple result sets. After
-      <a href="/pkg/database/sql/#Rows.Next"><code>Rows.Next</code></a> returns false,
-      <a href="/pkg/database/sql/#Rows.NextResultSet"><code>Rows.NextResultSet</code></a>
-      may be called to advance to the next result set. The existing <code>Rows</code>
-      should continue to be used after it advances to the next result set.
-      </p>
-    <p>
-      <a href="/pkg/database/sql/#NamedArg"><code>NamedArg</code></a> may be used
-      as query arguments. The new function <a href="/pkg/database/sql/#Named"><code>Named</code></a>
-      helps create a <a href="/pkg/database/sql/#NamedArg"><code>NamedArg</code></a>
-      more succinctly.
-    <p>
-      If a driver supports the new
-      <a href="/pkg/database/sql/driver/#Pinger"><code>Pinger</code></a>
-      interface, the
-      <a href="/pkg/database/sql/#DB.Ping"><code>DB.Ping</code></a>
-      and
-      <a href="/pkg/database/sql/#DB.PingContext"><code>DB.PingContext</code></a>
-      methods will use that interface to check whether a
-      database connection is still valid.
-    </p>
-    <p>
-      The new <code>Context</code> query methods work for all drivers, but
-      <code>Context</code> cancellation is not responsive unless the driver has been
-      updated to use them. The other features require driver support in
-      <a href="/pkg/database/sql/driver"><code>database/sql/driver</code></a>.
-      Driver authors should review the new interfaces. Users of existing
-      driver should review the driver documentation to see what
-      it supports and any system specific documentation on each feature.
-    </p>
-  </dd>
-</dl>
-
-<dl id="debug_pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
-  <dd>
-    <p> <!-- CL 22720, CL 27212, CL 22181, CL 22332, CL 22336, Issue 15345 -->
-      The package has been extended and is now used by
-      <a href="/cmd/link/">the Go linker</a> to read <code>gcc</code>-generated object files.
-      The new
-      <a href="/pkg/debug/pe/#File.StringTable"><code>File.StringTable</code></a>
-      and
-      <a href="/pkg/debug/pe/#Section.Relocs"><code>Section.Relocs</code></a>
-      fields provide access to the COFF string table and COFF relocations.
-      The new
-      <a href="/pkg/debug/pe/#File.COFFSymbols"><code>File.COFFSymbols</code></a>
-      allows low-level access to the COFF symbol table.
-      </p>
-  </dd>
-</dl>
-
-<dl id="encoding_base64"><dt><a href="/pkg/encoding/base64/">encoding/base64</a></dt>
-  <dd>
-    <p> <!-- CL 24964 -->
-      The new
-      <a href="/pkg/encoding/base64/#Encoding.Strict"><code>Encoding.Strict</code></a>
-      method returns an <code>Encoding</code> that causes the decoder
-      to return an error when the trailing padding bits are not zero.
-    </p>
-  </dd>
-</dl>
-
-<dl id="encoding_binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
-  <dd>
-    <p> <!-- CL 28514 -->
-      <a href="/pkg/encoding/binary/#Read"><code>Read</code></a>
-      and
-      <a href="/pkg/encoding/binary/#Write"><code>Write</code></a>
-      now support booleans.
-    </p>
-  </dd>
-</dl>
-
-<dl id="encoding_json"><dt><a href="/pkg/encoding/json/">encoding/json</a></dt>
-  <dd>
-
-    <p> <!-- CL 18692  -->
-      <a href="/pkg/encoding/json/#UnmarshalTypeError"><code>UnmarshalTypeError</code></a>
-      now includes the struct and field name.
-    </p>
-
-    <p> <!-- CL 31932 -->
-      A nil <a href="/pkg/encoding/json/#Marshaler"><code>Marshaler</code></a>
-      now marshals as a JSON <code>null</code> value.
-    </p>
-
-    <p> <!-- CL 21811 -->
-      A <a href="/pkg/encoding/json/#RawMessage"><code>RawMessage</code></a> value now
-      marshals the same as its pointer type.
-    </p>
-
-    <p> <!-- CL 30371 -->
-      <a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a>
-      encodes floating-point numbers using the same format as in ES6,
-      preferring decimal (not exponential) notation for a wider range of values.
-      In particular, all floating-point integers up to 2<sup>64</sup> format the
-      same as the equivalent <code>int64</code> representation.
-    </p>
-
-    <p> <!-- CL 30944 -->
-      In previous versions of Go, unmarshaling a JSON <code>null</code> into an
-      <a href="/pkg/encoding/json/#Unmarshaler"><code>Unmarshaler</code></a>
-      was considered a no-op; now the <code>Unmarshaler</code>'s
-      <code>UnmarshalJSON</code> method is called with the JSON literal
-      <code>null</code> and can define the semantics of that case.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="encoding_pem"><dt><a href="/pkg/encoding/pem/">encoding/pem</a></dt>
-  <dd>
-    <p> <!-- CL 27391 -->
-      <a href="/pkg/encoding/pem/#Decode"><code>Decode</code></a>
-      is now strict about the format of the ending line.
-    </p>
-  </dd>
-</dl>
-
-<dl id="encoding_xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
-  <dd>
-    <p> <!-- CL 30946 -->
-      <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a>
-      now has wildcard support for collecting all attributes using
-      the new <code>",any,attr"</code> struct tag.
-    </p>
-  </dd>
-</dl>
-
-<dl id="expvar"><dt><a href="/pkg/expvar/">expvar</a></dt>
-  <dd>
-    <p> <!-- CL 30917 -->
-      The new methods
-      <a href="/pkg/expvar/#Int.Value"><code>Int.Value</code></a>,
-      <a href="/pkg/expvar/#String.Value"><code>String.Value</code></a>,
-      <a href="/pkg/expvar/#Float.Value"><code>Float.Value</code></a>, and
-      <a href="/pkg/expvar/#Func.Value"><code>Func.Value</code></a>
-      report the current value of an exported variable.
-    </p>
-
-    <p> <!-- CL 24722 -->
-      The new
-      function <a href="/pkg/expvar/#Handler"><code>Handler</code></a>
-      returns the package's HTTP handler, to enable installing it in
-      non-standard locations.
-      </p>
-  </dd>
-</dl>
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <p><!-- CL 30611 -->
-      <a href="/pkg/fmt/#Scanf"><code>Scanf</code></a>,
-      <a href="/pkg/fmt/#Fscanf"><code>Fscanf</code></a>, and
-      <a href="/pkg/fmt/#Sscanf"><code>Sscanf</code></a> now
-      handle spaces differently and more consistently than
-      previous releases. See the
-      <a href="/pkg/fmt/#hdr-Scanning">scanning documentation</a>
-      for details.
-    </p>
-  </dd>
-</dl>
-
-<dl id="go_doc"><dt><a href="/pkg/go/doc/">go/doc</a></dt>
-  <dd>
-    <p><!-- CL 29870 -->
-      The new <a href="/pkg/go/doc/#IsPredeclared"><code>IsPredeclared</code></a>
-      function reports whether a string is a predeclared identifier.
-    </p>
-  </dd>
-</dl>
-
-<dl id="go_types"><dt><a href="/pkg/go/types/">go/types</a></dt>
-  <dd>
-    <p><!-- CL 30715 -->
-      The new function
-      <a href="/pkg/go/types/#Default"><code>Default</code></a>
-      returns the default "typed" type for an "untyped" type.
-    </p>
-
-    <p><!-- CL 31939 -->
-      The alignment of <code>complex64</code> now matches
-      the <a href="/cmd/compile/">Go compiler</a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="html_template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 14336 -->
-      The package now validates
-      the <code>"type"</code> attribute on
-      a <code>&lt;script&gt;</code> tag.
-    </p>
-  </dd>
-</dl>
-
-<dl id="image_png"><dt><a href="/pkg/image/png/">image/png</a></dt>
-  <dd>
-    <p> <!-- CL 32143, CL 32140 -->
-      <a href="/pkg/image/png/#Decode"><code>Decode</code></a>
-      (and <code>DecodeConfig</code>)
-      now supports True Color and grayscale transparency.
-    </p>
-    <p> <!-- CL 29872 -->
-      <a href="/pkg/image/png/#Encoder"><code>Encoder</code></a>
-      is now faster and creates smaller output
-      when encoding paletted images.
-      </p>
-  </dd>
-</dl>
-
-<dl id="math_big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- CL 30706 -->
-      The new method
-      <a href="/pkg/math/big/#Int.Sqrt"><code>Int.Sqrt</code></a>
-      calculates ⌊√x⌋.
-    </p>
-
-    <p>
-      The new method
-      <a href="/pkg/math/big/#Float.Scan"><code>Float.Scan</code></a>
-      is a support routine for
-      <a href="/pkg/fmt/#Scanner"><code>fmt.Scanner</code></a>.
-    </p>
-
-    <p>
-      <a href="/pkg/math/big/#Int.ModInverse"><code>Int.ModInverse</code></a>
-      now supports negative numbers.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="math_rand"><dt><a href="/pkg/math/rand/">math/rand</a></dt>
-  <dd>
-
-    <p><!-- CL 27253, CL 33456 -->
-      The new <a href="/pkg/math/rand/#Rand.Uint64"><code>Rand.Uint64</code></a>
-      method returns <code>uint64</code> values. The
-      new <a href="/pkg/math/rand/#Source64"><code>Source64</code></a>
-      interface describes sources capable of generating such values
-      directly; otherwise the <code>Rand.Uint64</code> method
-      constructs a <code>uint64</code> from two calls
-      to <a href="/pkg/math/rand/#Source"><code>Source</code></a>'s
-      <code>Int63</code> method.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
-  <dd>
-    <p> <!-- CL 32175 -->
-    <a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>
-    now preserves unnecessary backslash escapes as literals,
-    in order to support MSIE.
-    When MSIE sends a full file path (in “intranet mode”), it does not
-    escape backslashes: “<code>C:\dev\go\foo.txt</code>”, not
-    “<code>C:\\dev\\go\\foo.txt</code>”.
-    If we see an unnecessary backslash escape, we now assume it is from MSIE
-    and intended as a literal backslash.
-    No known MIME generators emit unnecessary backslash escapes
-    for simple token characters like numbers and letters.
-    </p>
-  </dd>
-</dl>
-
-<dl id="mime_quotedprintable"><dt><a href="/pkg/mime/quotedprintable/">mime/quotedprintable</a></dt>
-  <dd>
-
-    <p>
-      The
-      <a href="/pkg/mime/quotedprintable/#Reader"><code>Reader</code></a>'s
-      parsing has been relaxed in two ways to accept
-      more input seen in the wild.
-
-      <!-- CL 32174 -->
-      First, it accepts an equals sign (<code>=</code>) not followed
-      by two hex digits as a literal equal sign.
-
-      <!-- CL 27530 -->
-      Second, it silently ignores a trailing equals sign at the end of
-      an encoded input.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-
-    <p><!-- CL 30164, CL 33473 -->
-      The <a href="/pkg/net/#Conn"><code>Conn</code></a> documentation
-      has been updated to clarify expectations of an interface
-      implementation. Updates in the <code>net/http</code> packages
-      depend on implementations obeying the documentation.
-    </p>
-    <p><i>Updating:</i> implementations of the <code>Conn</code> interface should verify
-      they implement the documented semantics. The
-      <a href="https://godoc.org/golang.org/x/net/nettest">golang.org/x/net/nettest</a>
-      package will exercise a <code>Conn</code> and validate it behaves properly.
-    </p>
-
-    <p><!-- CL 32099 -->
-      The new method
-      <a href="/pkg/net/#UnixListener.SetUnlinkOnClose"><code>UnixListener.SetUnlinkOnClose</code></a>
-      sets whether the underlying socket file should be removed from the file system when
-      the listener is closed.
-    </p>
-
-    <p><!-- CL 29951 -->
-      The new <a href="/pkg/net/#Buffers"><code>Buffers</code></a> type permits
-      writing to the network more efficiently from multiple discontiguous buffers
-      in memory. On certain machines, for certain types of connections,
-      this is optimized into an OS-specific batch write operation (such as <code>writev</code>).
-    </p>
-
-    <p><!-- CL 29440 -->
-      The new <a href="/pkg/net/#Resolver"><code>Resolver</code></a> looks up names and numbers
-      and supports <a href="/pkg/context/#Context"><code>context.Context</code></a>.
-      The <a href="/pkg/net/#Dialer"><code>Dialer</code></a> now has an optional
-      <a href="/pkg/net/#Dialer.Resolver"><code>Resolver</code> field</a>.
-    </p>
-
-    <p><!-- CL 29892 -->
-      <a href="/pkg/net/#Interfaces"><code>Interfaces</code></a> is now supported on Solaris.
-    </p>
-
-    <p><!-- CL 29233, CL 24901 -->
-      The Go DNS resolver now supports <code>resolv.conf</code>'s “<code>rotate</code>”
-      and “<code>option</code> <code>ndots:0</code>” options. The “<code>ndots</code>” option is
-      now respected in the same way as <code>libresolve</code>.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="net_http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-
-    <p>Server changes:</p>
-    <ul>
-      <li>The server now supports graceful shutdown support, <a href="#http_shutdown">mentioned above</a>.</li>
-
-      <li> <!-- CL 32024 -->
-        The <a href="/pkg/net/http/#Server"><code>Server</code></a>
-        adds configuration options
-        <code>ReadHeaderTimeout</code> and <code>IdleTimeout</code>
-        and documents <code>WriteTimeout</code>.
-      </li>
-
-      <li> <!-- CL 32014 -->
-        <a href="/pkg/net/http/#FileServer"><code>FileServer</code></a>
-        and
-        <a href="/pkg/net/http/#ServeContent"><code>ServeContent</code></a>
-        now support HTTP <code>If-Match</code> conditional requests,
-        in addition to the previous <code>If-None-Match</code>
-        support for ETags properly formatted according to RFC 7232, section 2.3.
-      </li>
-    </ul>
-
-    <p>
-      There are several additions to what a server's <code>Handler</code> can do:
-    </p>
-
-    <ul>
-      <li><!-- CL 31173 -->
-        The <a href="/pkg/context/#Context"><code>Context</code></a>
-        returned
-        by <a href="/pkg/net/http/#Request.Context"><code>Request.Context</code></a>
-        is canceled if the underlying <code>net.Conn</code>
-        closes. For instance, if the user closes their browser in the
-        middle of a slow request, the <code>Handler</code> can now
-        detect that the user is gone. This complements the
-        existing <a href="/pkg/net/http/#CloseNotifier"><code>CloseNotifier</code></a>
-        support. This functionality requires that the underlying
-        <a href="/pkg/net/#Conn"><code>net.Conn</code></a> implements
-        <a href="#net">recently clarified interface documentation</a>.
-      </li>
-
-      <li><!-- CL 32479 -->
-        To serve trailers produced after the header has already been written,
-        see the new
-        <a href="/pkg/net/http/#TrailerPrefix"><code>TrailerPrefix</code></a>
-        mechanism.
-      </li>
-
-      <li><!-- CL 33099 -->
-        A <code>Handler</code> can now abort a response by panicking
-        with the error
-        <a href="/pkg/net/http/#ErrAbortHandler"><code>ErrAbortHandler</code></a>.
-      </li>
-
-      <li><!-- CL 30812 -->
-        A <code>Write</code> of zero bytes to a
-        <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter</code></a>
-        is now defined as a
-        way to test whether a <code>ResponseWriter</code> has been hijacked:
-        if so, the <code>Write</code> returns
-        <a href="/pkg/net/http/#ErrHijacked"><code>ErrHijacked</code></a>
-        without printing an error
-        to the server's error log.
-      </li>
-
-    </ul>
-
-    <p>Client &amp; Transport changes:</p>
-    <ul>
-      <li><!-- CL 28930, CL 31435 -->
-        The <a href="/pkg/net/http/#Client"><code>Client</code></a>
-        now copies most request headers on redirect. See
-        <a href="/pkg/net/http/#Client">the documentation</a>
-        on the <code>Client</code> type for details.
-      </li>
-
-      <li><!-- CL 29072 -->
-        The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-        now supports international domain names. Consequently, so do
-        <a href="/pkg/net/http/#Get">Get</a> and other helpers.
-      </li>
-
-      <li><!-- CL 31733, CL 29852 -->
-        The <code>Client</code> now supports 301, 307, and 308 redirects.
-
-        For example, <code>Client.Post</code> now follows 301
-        redirects, converting them to <code>GET</code> requests
-        without bodies, like it did for 302 and 303 redirect responses
-        previously.
-
-        The <code>Client</code> now also follows 307 and 308
-        redirects, preserving the original request method and body, if
-        any. If the redirect requires resending the request body, the
-        request must have the new
-        <a href="/pkg/net/http/#Request"><code>Request.GetBody</code></a>
-        field defined.
-        <a href="/pkg/net/http/#NewRequest"><code>NewRequest</code></a>
-        sets <code>Request.GetBody</code> automatically for common
-        body types.
-      </li>
-
-      <li><!-- CL 32482 -->
-        The <code>Transport</code> now rejects requests for URLs with
-        ports containing non-digit characters.
-      </li>
-
-      <li><!-- CL 27117 -->
-        The <code>Transport</code> will now retry non-idempotent
-        requests if no bytes were written before a network failure
-        and the request has no body.
-      </li>
-
-      <li><!-- CL 32481 -->
-        The
-        new <a href="/pkg/net/http/#Transport"><code>Transport.ProxyConnectHeader</code></a>
-        allows configuration of header values to send to a proxy
-        during a <code>CONNECT</code> request.
-      </li>
-
-      <li> <!-- CL 28077 -->
-        The <a href="/pkg/net/http/#DefaultTransport"><code>DefaultTransport.Dialer</code></a>
-        now enables <code>DualStack</code> ("<a href="https://tools.ietf.org/html/rfc6555">Happy Eyeballs</a>") support,
-        allowing the use of IPv4 as a backup if it looks like IPv6 might be
-        failing.
-      </li>
-
-      <li> <!-- CL 31726 -->
-        The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-        no longer reads a byte of a non-nil
-        <a href="/pkg/net/http/#Request.Body"><code>Request.Body</code></a>
-        when the
-        <a href="/pkg/net/http/#Request.ContentLength"><code>Request.ContentLength</code></a>
-        is zero to determine whether the <code>ContentLength</code>
-        is actually zero or just undefined.
-        To explicitly signal that a body has zero length,
-        either set it to <code>nil</code>, or set it to the new value
-        <a href="/pkg/net/http/#NoBody"><code>NoBody</code></a>.
-        The new <code>NoBody</code> value is intended for use by <code>Request</code>
-        constructor functions; it is used by
-        <a href="/pkg/net/http/#NewRequest"><code>NewRequest</code></a>.
-      </li>
-    </ul>
-
-  </dd>
-</dl>
-
-<dl id="net_http_httptrace"><dt><a href="/pkg/net/http/httptrace/">net/http/httptrace</a></dt>
-  <dd>
-    <p> <!-- CL 30359 -->
-    There is now support for tracing a client request's TLS handshakes with
-    the new
-    <a href="/pkg/net/http/httptrace/#ClientTrace.TLSHandshakeStart"><code>ClientTrace.TLSHandshakeStart</code></a>
-    and
-    <a href="/pkg/net/http/httptrace/#ClientTrace.TLSHandshakeDone"><code>ClientTrace.TLSHandshakeDone</code></a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="net_http_httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-  <dd>
-    <p> <!-- CL 32356 -->
-    The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
-    has a new optional hook,
-    <a href="/pkg/net/http/httputil/#ReverseProxy.ModifyResponse"><code>ModifyResponse</code></a>,
-    for modifying the response from the back end before proxying it to the client.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="net_mail"><dt><a href="/pkg/net/mail/">net/mail</a></dt>
-  <dd>
-
-    <p> <!-- CL 32176 -->
-      Empty quoted strings are once again allowed in the name part of
-      an address. That is, Go 1.4 and earlier accepted
-      <code>""</code> <code>&lt;gopher@example.com&gt;</code>,
-      but Go 1.5 introduced a bug that rejected this address.
-      The address is recognized again.
-    </p>
-
-    <p> <!-- CL 31581 -->
-      The
-      <a href="/pkg/net/mail/#Header.Date"><code>Header.Date</code></a>
-      method has always provided a way to parse
-      the <code>Date:</code> header.
-      A new function
-      <a href="/pkg/net/mail/#ParseDate"><code>ParseDate</code></a>
-      allows parsing dates found in other
-      header lines, such as the <code>Resent-Date:</code> header.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="net_smtp"><dt><a href="/pkg/net/smtp/">net/smtp</a></dt>
-  <dd>
-
-    <p> <!-- CL 33143 -->
-      If an implementation of the
-      <a href="/pkg/net/smtp/#Auth"><code>Auth.Start</code></a>
-      method returns an empty <code>toServer</code> value,
-      the package no longer sends
-      trailing whitespace in the SMTP <code>AUTH</code> command,
-      which some servers rejected.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="net_url"><dt><a href="/pkg/net/url/">net/url</a></dt>
-  <dd>
-
-    <p> <!-- CL 31322 -->
-      The new functions
-      <a href="/pkg/net/url/#PathEscape"><code>PathEscape</code></a>
-      and
-      <a href="/pkg/net/url/#PathUnescape"><code>PathUnescape</code></a>
-      are similar to the query escaping and unescaping functions but
-      for path elements.
-    </p>
-
-    <p> <!-- CL 28933 -->
-      The new methods
-      <a href="/pkg/net/url/#URL.Hostname"><code>URL.Hostname</code></a>
-      and
-      <a href="/pkg/net/url/#URL.Port"><code>URL.Port</code></a>
-      return the hostname and port fields of a URL,
-      correctly handling the case where the port may not be present.
-    </p>
-
-    <p> <!-- CL 28343 -->
-      The existing method
-      <a href="/pkg/net/url/#URL.ResolveReference"><code>URL.ResolveReference</code></a>
-      now properly handles paths with escaped bytes without losing
-      the escaping.
-    </p>
-
-    <p> <!-- CL 31467 -->
-      The <code>URL</code> type now implements
-      <a href="/pkg/encoding/#BinaryMarshaler"><code>encoding.BinaryMarshaler</code></a> and
-      <a href="/pkg/encoding/#BinaryUnmarshaler"><code>encoding.BinaryUnmarshaler</code></a>,
-      making it possible to process URLs in <a href="/pkg/encoding/gob/">gob data</a>.
-    </p>
-
-    <p> <!-- CL 29610, CL 31582 -->
-      Following RFC 3986,
-      <a href="/pkg/net/url/#Parse"><code>Parse</code></a>
-      now rejects URLs like <code>this_that:other/thing</code> instead of
-      interpreting them as relative paths (<code>this_that</code> is not a valid scheme).
-      To force interpretation as a relative path,
-      such URLs should be prefixed with “<code>./</code>”.
-      The <code>URL.String</code> method now inserts this prefix as needed.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p> <!-- CL 16551 -->
-      The new function
-      <a href="/pkg/os/#Executable"><code>Executable</code></a> returns
-      the path name of the running executable.
-    </p>
-
-    <p> <!-- CL 30614 -->
-      An attempt to call a method on
-      an <a href="/pkg/os/#File"><code>os.File</code></a> that has
-      already been closed will now return the new error
-      value <a href="/pkg/os/#ErrClosed"><code>os.ErrClosed</code></a>.
-      Previously it returned a system-specific error such
-      as <code>syscall.EBADF</code>.
-    </p>
-
-    <p> <!-- CL 31358 -->
-      On Unix systems, <a href="/pkg/os/#Rename"><code>os.Rename</code></a>
-      will now return an error when used to rename a directory to an
-      existing empty directory.
-      Previously it would fail when renaming to a non-empty directory
-      but succeed when renaming to an empty directory.
-      This makes the behavior on Unix correspond to that of other systems.
-    </p>
-
-    <p> <!-- CL 32451 -->
-      On Windows, long absolute paths are now transparently converted to
-      extended-length paths (paths that start with “<code>\\?\</code>”).
-      This permits the package to work with files whose path names are
-      longer than 260 characters.
-    </p>
-
-    <p> <!-- CL 29753 -->
-      On Windows, <a href="/pkg/os/#IsExist"><code>os.IsExist</code></a>
-      will now return <code>true</code> for the system
-      error <code>ERROR_DIR_NOT_EMPTY</code>.
-      This roughly corresponds to the existing handling of the Unix
-      error <code>ENOTEMPTY</code>.
-    </p>
-
-    <p> <!-- CL 32152 -->
-      On Plan 9, files that are not served by <code>#M</code> will now
-      have <a href="/pkg/os/#ModeDevice"><code>ModeDevice</code></a> set in
-      the value returned
-      by <a href="/pkg/os/#FileInfo"><code>FileInfo.Mode</code></a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="path_filepath"><dt><a href="/pkg/path/filepath/">path/filepath</a></dt>
-  <dd>
-    <p>
-      A number of bugs and corner cases on Windows were fixed:
-      <a href="/pkg/path/filepath/#Abs"><code>Abs</code></a> now calls <code>Clean</code> as documented,
-      <a href="/pkg/path/filepath/#Glob"><code>Glob</code></a> now matches
-      “<code>\\?\c:\*</code>”,
-      <a href="/pkg/path/filepath/#EvalSymlinks"><code>EvalSymlinks</code></a> now
-      correctly handles “<code>C:.</code>”, and
-      <a href="/pkg/path/filepath/#Clean"><code>Clean</code></a> now properly
-      handles a leading “<code>..</code>” in the path.
-    </p>
-  </dd>
-</dl>
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p> <!-- CL 30088 -->
-      The new function
-      <a href="/pkg/reflect/#Swapper"><code>Swapper</code></a> was
-      added to support <a href="#sortslice"><code>sort.Slice</code></a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
-  <dd>
-    <p> <!-- CL 31210 -->
-      The <a href="/pkg/strconv/#Unquote"><code>Unquote</code></a>
-      function now strips carriage returns (<code>\r</code>) in
-      backquoted raw strings, following the
-      <a href="/ref/spec#String_literals">Go language semantics</a>.
-    </p>
-  </dd>
-</dl>
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p> <!-- CL 25050, CL 25022 -->
-      The <a href="/pkg/syscall/#Getpagesize"><code>Getpagesize</code></a>
-      now returns the system's size, rather than a constant value.
-      Previously it always returned 4KB.
-    </p>
-
-    <p> <!-- CL 31446 -->
-      The signature
-      of <a href="/pkg/syscall/#Utimes"><code>Utimes</code></a> has
-      changed on Solaris to match all the other Unix systems'
-      signature. Portable code should continue to use
-      <a href="/pkg/os/#Chtimes"><code>os.Chtimes</code></a> instead.
-    </p>
-
-    <p> <!-- CL 32319 -->
-      The <code>X__cmsg_data</code> field has been removed from
-      <a href="/pkg/syscall/#Cmsghdr"><code>Cmsghdr</code></a>.
-      </p>
-  </dd>
-</dl>
-
-<dl id="text_template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p> <!-- CL 31462 -->
-      <a href="/pkg/text/template/#Template.Execute"><code>Template.Execute</code></a>
-      can now take a
-      <a href="/pkg/reflect/#Value"><code>reflect.Value</code></a> as its data
-      argument, and
-      <a href="/pkg/text/template/#FuncMap"><code>FuncMap</code></a>
-      functions can also accept and return <code>reflect.Value</code>.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-
-    <p> <!-- CL 20118 --> The new function
-      <a href="/pkg/time/#Until"><code>Until</code></a> complements
-      the analogous <code>Since</code> function.
-    </p>
-
-    <p> <!-- CL 29338 -->
-      <a href="/pkg/time/#ParseDuration"><code>ParseDuration</code></a>
-      now accepts long fractional parts.
-    </p>
-
-    <p> <!-- CL 33429 -->
-      <a href="/pkg/time/#Parse"><code>Parse</code></a>
-      now rejects dates before the start of a month, such as June 0;
-      it already rejected dates beyond the end of the month, such as
-      June 31 and July 32.
-    </p>
-
-    <p> <!-- CL 33029 --> <!-- CL 34816 -->
-      The <code>tzdata</code> database has been updated to version
-      2016j for systems that don't already have a local time zone
-      database.
-    </p>
-
-    <p>
-  </dd>
-</dl>
-
-<dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
-  <dd>
-    <p><!-- CL 29970 -->
-      The new method
-      <a href="/pkg/testing/#T.Name"><code>T.Name</code></a>
-      (and <code>B.Name</code>) returns the name of the current
-      test or benchmark.
-    </p>
-
-    <p><!-- CL 32483 -->
-      The new function
-      <a href="/pkg/testing/#CoverMode"><code>CoverMode</code></a>
-      reports the test coverage mode.
-    </p>
-
-    <p><!-- CL 32615 -->
-      Tests and benchmarks are now marked as failed if the race
-      detector is enabled and a data race occurs during execution.
-      Previously, individual test cases would appear to pass,
-      and only the overall execution of the test binary would fail.
-    </p>
-
-    <p><!-- CL 32455 -->
-      The signature of the
-      <a href="/pkg/testing/#MainStart"><code>MainStart</code></a>
-      function has changed, as allowed by the documentation. It is an
-      internal detail and not part of the Go 1 compatibility promise.
-      If you're not calling <code>MainStart</code> directly but see
-      errors, that likely means you set the
-      normally-empty <code>GOROOT</code> environment variable and it
-      doesn't match the version of your <code>go</code> command's binary.
-    </p>
-
-  </dd>
-</dl>
-
-<dl id="unicode"><dt><a href="/pkg/unicode/">unicode</a></dt>
-  <dd>
-    <p><!-- CL 30935 -->
-      <a href="/pkg/unicode/#SimpleFold"><code>SimpleFold</code></a>
-      now returns its argument unchanged if the provided input was an invalid rune.
-      Previously, the implementation failed with an index bounds check panic.
-    </p>
-  </dd>
-</dl>
diff --git a/_content/doc/go1.9.html b/_content/doc/go1.9.html
deleted file mode 100644
index ae1ac23..0000000
--- a/_content/doc/go1.9.html
+++ /dev/null
@@ -1,1022 +0,0 @@
-<!--{
-	"Title": "Go 1.9 Release Notes"
-}-->
-
-<!--
-NOTE: In this document and others in this directory, the convention is to
-set fixed-width phrases with non-fixed-width spaces, as in
-<code>hello</code> <code>world</code>.
-Do not send CLs removing the interior tags from such phrases.
--->
-
-<style>
-  main ul li { margin: 0.5em 0; }
-</style>
-
-<h2 id="introduction">Introduction to Go 1.9</h2>
-
-<p>
-  The latest Go release, version 1.9, arrives six months
-  after <a href="go1.8">Go 1.8</a> and is the tenth release in
-  the <a href="/doc/devel/release.html">Go 1.x
-  series</a>.
-  There are two <a href="#language">changes to the language</a>:
-  adding support for type aliases and defining when implementations
-  may fuse floating point operations.
-  Most of the changes are in the implementation of the toolchain,
-  runtime, and libraries.
-  As always, the release maintains the Go 1
-  <a href="/doc/go1compat.html">promise of compatibility</a>.
-  We expect almost all Go programs to continue to compile and run as
-  before.
-</p>
-
-<p>
-  The release
-  adds <a href="#monotonic-time">transparent monotonic time support</a>,
-  <a href="#parallel-compile">parallelizes compilation of functions</a> within a package,
-  better supports <a href="#test-helper">test helper functions</a>,
-  includes a new <a href="#math-bits">bit manipulation package</a>,
-  and has a new <a href="#sync-map">concurrent map type</a>.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<p>
-  There are two changes to the language.
-</p>
-<p>
-  Go now supports type aliases to support gradual code repair while
-  moving a type between packages.
-  The <a href="/design/18130-type-alias">type alias
-  design document</a>
-  and <a href="/talks/2016/refactor.article">an
-  article on refactoring</a> cover the problem in detail.
-  In short, a type alias declaration has the form:
-</p>
-
-<pre>
-type T1 = T2
-</pre>
-
-<p>
-  This declaration introduces an alias name <code>T1</code>—an
-  alternate spelling—for the type denoted by <code>T2</code>; that is,
-  both <code>T1</code> and <code>T2</code> denote the same type.
-</p>
-
-<p> <!-- CL 40391 -->
-  A smaller language change is that the
-  <a href="/ref/spec#Floating_point_operators">language specification
-  now states</a> when implementations are allowed to fuse floating
-  point operations together, such as by using an architecture's "fused
-  multiply and add" (FMA) instruction to compute <code>x*y</code>&nbsp;<code>+</code>&nbsp;<code>z</code>
-  without rounding the intermediate result <code>x*y</code>.
-  To force the intermediate rounding, write <code>float64(x*y)</code>&nbsp;<code>+</code>&nbsp;<code>z</code>.
-</p>
-
-<h2 id="ports">Ports</h2>
-
-<p>
-  There are no new supported operating systems or processor
-  architectures in this release.
-</p>
-
-<h3 id="power8">ppc64x requires POWER8</h3>
-
-<p> <!-- CL 36725, CL 36832 -->
-  Both <code>GOARCH=ppc64</code> and <code>GOARCH=ppc64le</code> now
-  require at least POWER8 support. In previous releases,
-  only <code>GOARCH=ppc64le</code> required POWER8 and the big
-  endian <code>ppc64</code> architecture supported older
-  hardware.
-<p>
-
-<h3 id="freebsd">FreeBSD</h3>
-
-<p>
-  Go 1.9 is the last release that will run on FreeBSD 9.3,
-  which is already
-  <a href="https://www.freebsd.org/security/unsupported.html">unsupported by FreeBSD</a>.
-  Go 1.10 will require FreeBSD 10.3+.
-</p>
-
-<h3 id="openbsd">OpenBSD 6.0</h3>
-
-<p> <!-- CL 40331 -->
-  Go 1.9 now enables PT_TLS generation for cgo binaries and thus
-  requires OpenBSD 6.0 or newer. Go 1.9 no longer supports
-  OpenBSD 5.9.
-<p>
-
-<h3 id="known_issues">Known Issues</h3>
-
-<p>
-  There are some instabilities on FreeBSD that are known but not understood.
-  These can lead to program crashes in rare cases.
-  See <a href="/issue/15658">issue 15658</a>.
-  Any help in solving this FreeBSD-specific issue would be appreciated.
-</p>
-
-<p>
-  Go stopped running NetBSD builders during the Go 1.9 development
-  cycle due to NetBSD kernel crashes, up to and including NetBSD 7.1.
-  As Go 1.9 is being released, NetBSD 7.1.1 is being released with a fix.
-  However, at this time we have no NetBSD builders passing our test suite.
-  Any help investigating the
-  <a href="https://github.com/golang/go/labels/OS-NetBSD">various NetBSD issues</a>
-  would be appreciated.
-</p>
-
-<h2 id="tools">Tools</h2>
-
-<h3 id="parallel-compile">Parallel Compilation</h3>
-
-<p>
-  The Go compiler now supports compiling a package's functions in parallel, taking
-  advantage of multiple cores. This is in addition to the <code>go</code> command's
-  existing support for parallel compilation of separate packages.
-  Parallel compilation is on by default, but it can be disabled by setting the
-  environment variable <code>GO19CONCURRENTCOMPILATION</code> to <code>0</code>.
-</p>
-
-<h3 id="vendor-dotdotdot">Vendor matching with ./...</h3>
-
-<p><!-- CL 38745 -->
-  By popular request, <code>./...</code> no longer matches packages
-  in <code>vendor</code> directories in tools accepting package names,
-  such as <code>go</code> <code>test</code>. To match vendor
-  directories, write <code>./vendor/...</code>.
-</p>
-
-<h3 id="goroot">Moved GOROOT</h3>
-
-<p><!-- CL 42533 -->
-  The <a href="/cmd/go/">go tool</a> will now use the path from which it
-  was invoked to attempt to locate the root of the Go install tree.
-  This means that if the entire Go installation is moved to a new
-  location, the go tool should continue to work as usual.
-  This may be overridden by setting <code>GOROOT</code> in the environment,
-  which should only be done in unusual circumstances.
-  Note that this does not affect the result of
-  the <a href="/pkg/runtime/#GOROOT">runtime.GOROOT</a> function, which
-  will continue to report the original installation location;
-  this may be fixed in later releases.
-</p>
-
-<h3 id="compiler">Compiler Toolchain</h3>
-
-<p><!-- CL 37441 -->
-  Complex division is now C99-compatible. This has always been the
-  case in gccgo and is now fixed in the gc toolchain.
-</p>
-
-<p> <!-- CL 36983 -->
-  The linker will now generate DWARF information for cgo executables on Windows.
-</p>
-
-<p> <!-- CL 44210, CL 40095 -->
-  The compiler now includes lexical scopes in the generated DWARF if the
-  <code>-N -l</code> flags are provided, allowing
-  debuggers to hide variables that are not in scope. The <code>.debug_info</code>
-  section is now DWARF version 4.
-</p>
-
-<p> <!-- CL 43855 -->
-  The values of <code>GOARM</code> and <code>GO386</code> now affect a
-  compiled package's build ID, as used by the <code>go</code> tool's
-  dependency caching.
-</p>
-
-<h3 id="asm">Assembler</h3>
-
-<p> <!-- CL 42028 -->
-  The four-operand ARM <code>MULA</code> instruction is now assembled correctly,
-  with the addend register as the third argument and the result
-  register as the fourth and final argument.
-  In previous releases, the two meanings were reversed.
-  The three-operand form, in which the fourth argument is implicitly
-  the same as the third, is unaffected.
-  Code using four-operand <code>MULA</code> instructions
-  will need to be updated, but we believe this form is very rarely used.
-  <code>MULAWT</code> and <code>MULAWB</code> were already
-  using the correct order in all forms and are unchanged.
-</p>
-
-<p> <!-- CL 42990 -->
-  The assembler now supports <code>ADDSUBPS/PD</code>, completing the
-  two missing x86 SSE3 instructions.
-</p>
-
-<h3 id="go-doc">Doc</h3>
-
-<p><!-- CL 36031 -->
-  Long lists of arguments are now truncated. This improves the readability
-  of <code>go</code> <code>doc</code> on some generated code.
-</p>
-
-<p><!-- CL 38438 -->
-  Viewing documentation on struct fields is now supported.
-  For example, <code>go</code> <code>doc</code> <code>http.Client.Jar</code>.
-</p>
-
-<h3 id="go-env-json">Env</h3>
-
-<p> <!-- CL 38757 -->
-  The new <code>go</code> <code>env</code> <code>-json</code> flag
-  enables JSON output, instead of the default OS-specific output
-  format.
-</p>
-
-<h3 id="go-test-list">Test</h3>
-
-<p> <!-- CL 41195 -->
-  The <a href="/cmd/go/#hdr-Description_of_testing_flags"><code>go</code> <code>test</code></a>
-  command accepts a new <code>-list</code> flag, which takes a regular
-  expression as an argument and prints to stdout the name of any
-  tests, benchmarks, or examples that match it, without running them.
-</p>
-
-
-<h3 id="go-tool-pprof">Pprof</h3>
-
-<p> <!-- CL 34192 -->
-  Profiles produced by the <code>runtime/pprof</code> package now
-  include symbol information, so they can be viewed
-  in <code>go</code> <code>tool</code> <code>pprof</code>
-  without the binary that produced the profile.
-</p>
-
-<p> <!-- CL 38343 -->
-  The <code>go</code> <code>tool</code> <code>pprof</code> command now
-  uses the HTTP proxy information defined in the environment, using
-  <a href="/pkg/net/http/#ProxyFromEnvironment"><code>http.ProxyFromEnvironment</code></a>.
-</p>
-
-<h3 id="vet">Vet</h3>
-
-<!-- CL 40112 -->
-<p>
-  The <a href="/cmd/vet/"><code>vet</code> command</a>
-  has been better integrated into the
-  <a href="/cmd/go/"><code>go</code> tool</a>,
-  so <code>go</code> <code>vet</code> now supports all standard build
-  flags while <code>vet</code>'s own flags are now available
-  from <code>go</code> <code>vet</code> as well as
-  from <code>go</code> <code>tool</code> <code>vet</code>.
-</p>
-
-<h3 id="gccgo">Gccgo</h3>
-
-<p>
-Due to the alignment of Go's semiannual release schedule with GCC's
-annual release schedule,
-GCC release 7 contains the Go 1.8.3 version of gccgo.
-We expect that the next release, GCC 8, will contain the Go 1.10
-version of gccgo.
-</p>
-
-<h2 id="runtime">Runtime</h2>
-
-<h3 id="callersframes">Call stacks with inlined frames</h3>
-
-<p>
-  Users of
-  <a href="/pkg/runtime#Callers"><code>runtime.Callers</code></a>
-  should avoid directly inspecting the resulting PC slice and instead use
-  <a href="/pkg/runtime#CallersFrames"><code>runtime.CallersFrames</code></a>
-  to get a complete view of the call stack, or
-  <a href="/pkg/runtime#Caller"><code>runtime.Caller</code></a>
-  to get information about a single caller.
-  This is because an individual element of the PC slice cannot account
-  for inlined frames or other nuances of the call stack.
-</p>
-
-<p>
-  Specifically, code that directly iterates over the PC slice and uses
-  functions such as
-  <a href="/pkg/runtime#FuncForPC"><code>runtime.FuncForPC</code></a>
-  to resolve each PC individually will miss inlined frames.
-  To get a complete view of the stack, such code should instead use
-  <code>CallersFrames</code>.
-  Likewise, code should not assume that the length returned by
-  <code>Callers</code> is any indication of the call depth.
-  It should instead count the number of frames returned by
-  <code>CallersFrames</code>.
-</p>
-
-<p>
-  Code that queries a single caller at a specific depth should use
-  <code>Caller</code> rather than passing a slice of length 1 to
-  <code>Callers</code>.
-</p>
-
-<p>
-  <a href="/pkg/runtime#CallersFrames"><code>runtime.CallersFrames</code></a>
-  has been available since Go 1.7, so code can be updated prior to
-  upgrading to Go 1.9.
-</p>
-
-<h2 id="performance">Performance</h2>
-
-<p>
-  As always, the changes are so general and varied that precise
-  statements about performance are difficult to make.  Most programs
-  should run a bit faster, due to speedups in the garbage collector,
-  better generated code, and optimizations in the core library.
-</p>
-
-<h3 id="gc">Garbage Collector</h3>
-
-<p> <!-- CL 37520 -->
-  Library functions that used to trigger stop-the-world garbage
-  collection now trigger concurrent garbage collection.
-
-  Specifically, <a href="/pkg/runtime/#GC"><code>runtime.GC</code></a>,
-  <a href="/pkg/runtime/debug/#SetGCPercent"><code>debug.SetGCPercent</code></a>,
-  and
-  <a href="/pkg/runtime/debug/#FreeOSMemory"><code>debug.FreeOSMemory</code></a>,
-  now trigger concurrent garbage collection, blocking only the calling
-  goroutine until the garbage collection is done.
-</p>
-
-<p> <!-- CL 34103, CL 39835 -->
-  The
-  <a href="/pkg/runtime/debug/#SetGCPercent"><code>debug.SetGCPercent</code></a>
-  function only triggers a garbage collection if one is immediately
-  necessary because of the new GOGC value.
-  This makes it possible to adjust GOGC on-the-fly.
-</p>
-
-<p> <!-- CL 38732 -->
-  Large object allocation performance is significantly improved in
-  applications using large (&gt;50GB) heaps containing many large
-  objects.
-</p>
-
-<p> <!-- CL 34937 -->
-  The <a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a>
-  function now takes less than 100µs even for very large heaps.
-</p>
-
-<h2 id="library">Core library</h2>
-
-<h3 id="monotonic-time">Transparent Monotonic Time support</h3>
-
-<p> <!-- CL 36255 -->
-  The <a href="/pkg/time/"><code>time</code></a> package now transparently
-  tracks monotonic time in each <a href="/pkg/time/#Time"><code>Time</code></a>
-  value, making computing durations between two <code>Time</code> values
-  a safe operation in the presence of wall clock adjustments.
-  See the <a href="/pkg/time/#hdr-Monotonic_Clocks">package docs</a> and
-  <a href="/design/12914-monotonic">design document</a>
-  for details.
-</p>
-
-<h3 id="math-bits">New bit manipulation package</h3>
-
-<p> <!-- CL 36315 -->
-  Go 1.9 includes a new package,
-  <a href="/pkg/math/bits/"><code>math/bits</code></a>, with optimized
-  implementations for manipulating bits. On most architectures,
-  functions in this package are additionally recognized by the
-  compiler and treated as intrinsics for additional performance.
-</p>
-
-<h3 id="test-helper">Test Helper Functions</h3>
-
-<p> <!-- CL 38796 -->
-  The
-  new <a href="/pkg/testing/#T.Helper"><code>(*T).Helper</code></a>
-  and <a href="/pkg/testing/#B.Helper"><code>(*B).Helper</code></a>
-  methods mark the calling function as a test helper function.  When
-  printing file and line information, that function will be skipped.
-  This permits writing test helper functions while still having useful
-  line numbers for users.
-</p>
-
-<h3 id="sync-map">Concurrent Map</h3>
-
-<p> <!-- CL 36617 -->
-  The new <a href="/pkg/sync/#Map"><code>Map</code></a> type
-  in the <a href="/pkg/sync/"><code>sync</code></a> package
-  is a concurrent map with amortized-constant-time loads, stores, and
-  deletes. It is safe for multiple goroutines to call a <code>Map</code>'s methods
-  concurrently.
-</p>
-
-<h3 id="pprof-labels">Profiler Labels</h3>
-
-<p><!-- CL 34198 -->
-  The <a href="/pkg/runtime/pprof"><code>runtime/pprof</code> package</a>
-  now supports adding labels to <code>pprof</code> profiler records.
-  Labels form a key-value map that is used to distinguish calls of the
-  same function in different contexts when looking at profiles
-  with the <a href="/cmd/pprof/"><code>pprof</code> command</a>.
-  The <code>pprof</code> package's
-  new <a href="/pkg/runtime/pprof/#Do"><code>Do</code> function</a>
-  runs code associated with some provided labels. Other new functions
-  in the package help work with labels.
-</p>
-
-</dl><!-- runtime/pprof -->
-
-
-<h3 id="minor_library_changes">Minor changes to the library</h3>
-
-<p>
-  As always, there are various minor changes and updates to the library,
-  made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
-  in mind.
-</p>
-
-<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
-  <dd>
-    <p><!-- CL 39570 -->
-      The
-      ZIP <a href="/pkg/archive/zip/#Writer"><code>Writer</code></a>
-      now sets the UTF-8 bit in
-      the <a href="/pkg/archive/zip/#FileHeader.Flags"><code>FileHeader.Flags</code></a>
-      when appropriate.
-    </p>
-
-</dl><!-- archive/zip -->
-
-<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
-  <dd>
-    <p><!-- CL 43852 -->
-      On Linux, Go now calls the <code>getrandom</code> system call
-      without the <code>GRND_NONBLOCK</code> flag; it will now block
-      until the kernel has sufficient randomness. On kernels predating
-      the <code>getrandom</code> system call, Go continues to read
-      from <code>/dev/urandom</code>.
-    </p>
-
-</dl><!-- crypto/rand -->
-
-<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
-  <dd>
-    <p><!-- CL 36093 -->
-
-      On Unix systems the environment
-      variables <code>SSL_CERT_FILE</code>
-      and <code>SSL_CERT_DIR</code> can now be used to override the
-      system default locations for the SSL certificate file and SSL
-      certificate files directory, respectively.
-    </p>
-
-    <p>The FreeBSD file <code>/usr/local/etc/ssl/cert.pem</code> is
-      now included in the certificate search path.
-    </p>
-
-    <p><!-- CL 36900 -->
-
-      The package now supports excluded domains in name constraints.
-      In addition to enforcing such constraints,
-      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-      will create certificates with excluded name constraints
-      if the provided template certificate has the new
-      field
-      <a href="/pkg/crypto/x509/#Certificate.ExcludedDNSDomains"><code>ExcludedDNSDomains</code></a>
-      populated.
-    </p>
-
-    <p><!-- CL 36696 -->
-
-    If any SAN extension, including with no DNS names, is present
-    in the certificate, then the Common Name from
-    <a href="/pkg/crypto/x509/#Certificate.Subject"><code>Subject</code></a> is ignored.
-    In previous releases, the code tested only whether DNS-name SANs were
-    present in a certificate.
-    </p>
-
-</dl><!-- crypto/x509 -->
-
-<dl id="database/sql"><dt><a href="/pkg/database/sql/">database/sql</a></dt>
-  <dd>
-    <p><!-- CL 35476 -->
-      The package will now use a cached <a href="/pkg/database/sql/#Stmt"><code>Stmt</code></a> if
-      available in <a href="/pkg/database/sql/#Tx.Stmt"><code>Tx.Stmt</code></a>.
-      This prevents statements from being re-prepared each time
-      <a href="/pkg/database/sql/#Tx.Stmt"><code>Tx.Stmt</code></a> is called.
-    </p>
-
-    <p><!-- CL 38533 -->
-      The package now allows drivers to implement their own argument checkers by implementing
-      <a href="/pkg/database/sql/driver/#NamedValueChecker"><code>driver.NamedValueChecker</code></a>.
-      This also allows drivers to support <code>OUTPUT</code> and <code>INOUT</code> parameter types.
-      <a href="/pkg/database/sql/#Out"><code>Out</code></a> should be used to return output parameters
-      when supported by the driver.
-    </p>
-
-    <p><!-- CL 39031 -->
-      <a href="/pkg/database/sql/#Rows.Scan"><code>Rows.Scan</code></a> can now scan user-defined string types.
-      Previously the package supported scanning into numeric types like <code>type</code> <code>Int</code> <code>int64</code>. It now also supports
-      scanning into string types like <code>type</code> <code>String</code> <code>string</code>.
-    </p>
-
-    <p><!-- CL 40694 -->
-      The new <a href="/pkg/database/sql/#DB.Conn"><code>DB.Conn</code></a> method returns the new
-      <a href="/pkg/database/sql/#Conn"><code>Conn</code></a> type representing an
-      exclusive connection to the database from the connection pool. All queries run on
-      a <a href="/pkg/database/sql/#Conn"><code>Conn</code></a> will use the same underlying
-      connection until <a href="/pkg/database/sql/#Conn.Close"><code>Conn.Close</code></a> is called
-      to return the connection to the connection pool.
-    </p>
-
-</dl><!-- database/sql -->
-
-<dl id="encoding/asn1"><dt><a href="/pkg/encoding/asn1/">encoding/asn1</a></dt>
-  <dd>
-    <p><!-- CL 38660 -->
-	  The new
-	  <a href="/pkg/encoding/asn1/#NullBytes"><code>NullBytes</code></a>
-	  and
-	  <a href="/pkg/encoding/asn1/#NullRawValue"><code>NullRawValue</code></a>
-	  represent the ASN.1 NULL type.
-    </p>
-
-</dl><!-- encoding/asn1 -->
-
-<dl id="encoding/base32"><dt><a href="/pkg/encoding/base32/">encoding/base32</a></dt>
-  <dd>
-    <p><!-- CL 38634 -->
-	  The new <a href="/pkg/encoding/base32/#Encoding.WithPadding">Encoding.WithPadding</a>
-	  method adds support for custom padding characters and disabling padding.
-    </p>
-
-</dl><!-- encoding/base32 -->
-
-<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
-  <dd>
-    <p><!-- CL 41730 -->
-      The new field
-      <a href="/pkg/encoding/csv/#Reader.ReuseRecord"><code>Reader.ReuseRecord</code></a>
-      controls whether calls to
-      <a href="/pkg/encoding/csv/#Reader.Read"><code>Read</code></a>
-      may return a slice sharing the backing array of the previous
-      call's returned slice for improved performance.
-    </p>
-
-</dl><!-- encoding/csv -->
-
-<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
-  <dd>
-    <p><!-- CL 37051 -->
-      The sharp flag ('<code>#</code>') is now supported when printing
-      floating point and complex numbers. It will always print a
-      decimal point
-      for <code>%e</code>, <code>%E</code>, <code>%f</code>, <code>%F</code>, <code>%g</code>
-      and <code>%G</code>; it will not remove trailing zeros
-      for <code>%g</code> and <code>%G</code>.
-    </p>
-
-</dl><!-- fmt -->
-
-<dl id="hash/fnv"><dt><a href="/pkg/hash/fnv/">hash/fnv</a></dt>
-  <dd>
-    <p><!-- CL 38356 -->
-      The package now includes 128-bit FNV-1 and FNV-1a hash support with
-      <a href="/pkg/hash/fnv/#New128"><code>New128</code></a> and
-      <a href="/pkg/hash/fnv/#New128a"><code>New128a</code></a>, respectively.
-    </p>
-
-</dl><!-- hash/fnv -->
-
-<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
-  <dd>
-    <p><!-- CL 37880, CL 40936 -->
-	  The package now reports an error if a predefined escaper (one of
-	  "html", "urlquery" and "js") is found in a pipeline and does not match
-	  what the auto-escaper would have decided on its own.
-	  This avoids certain security or correctness issues.
-	  Now use of one of these escapers is always either a no-op or an error.
-	  (The no-op case eases migration from <a href="/pkg/text/template/">text/template</a>.)
-    </p>
-
-</dl><!-- html/template -->
-
-<dl id="image"><dt><a href="/pkg/image/">image</a></dt>
-  <dd>
-    <p><!-- CL 36734 -->
-	  The <a href="/pkg/image/#Rectangle.Intersect"><code>Rectangle.Intersect</code></a>
-	  method now returns a zero <code>Rectangle</code> when called on
-	  adjacent but non-overlapping rectangles, as documented. In
-	  earlier releases it would incorrectly return an empty but
-	  non-zero <code>Rectangle</code>.
-    </p>
-
-</dl><!-- image -->
-
-<dl id="image/color"><dt><a href="/pkg/image/color/">image/color</a></dt>
-  <dd>
-    <p><!-- CL 36732 -->
-	  The YCbCr to RGBA conversion formula has been tweaked to ensure
-	  that rounding adjustments span the complete [0, 0xffff] RGBA
-	  range.
-    </p>
-
-</dl><!-- image/color -->
-
-<dl id="image/png"><dt><a href="/pkg/image/png/">image/png</a></dt>
-  <dd>
-    <p><!-- CL 34150 -->
-	  The new <a href="/pkg/image/png/#Encoder.BufferPool"><code>Encoder.BufferPool</code></a>
-	  field allows specifying an <a href="/pkg/image/png/#EncoderBufferPool"><code>EncoderBufferPool</code></a>,
-	  that will be used by the encoder to get temporary <code>EncoderBuffer</code>
-	  buffers when encoding a PNG image.
-
-	  The use of a <code>BufferPool</code> reduces the number of
-	  memory allocations performed while encoding multiple images.
-    </p>
-
-    <p><!-- CL 38271 -->
-	  The package now supports the decoding of transparent 8-bit
-	  grayscale ("Gray8") images.
-    </p>
-
-</dl><!-- image/png -->
-
-<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
-  <dd>
-    <p><!-- CL 36487 -->
-      The new
-      <a href="/pkg/math/big/#Int.IsInt64"><code>IsInt64</code></a>
-      and
-      <a href="/pkg/math/big/#Int.IsUint64"><code>IsUint64</code></a>
-      methods report whether an <code>Int</code>
-      may be represented as an <code>int64</code> or <code>uint64</code>
-      value.
-    </p>
-
-</dl><!-- math/big -->
-
-<dl id="mime/multipart"><dt><a href="/pkg/mime/multipart/">mime/multipart</a></dt>
-  <dd>
-    <p><!-- CL 39223 -->
-      The new
-      <a href="/pkg/mime/multipart/#FileHeader.Size"><code>FileHeader.Size</code></a>
-      field describes the size of a file in a multipart message.
-    </p>
-
-</dl><!-- mime/multipart -->
-
-<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
-  <dd>
-    <p><!-- CL 32572 -->
-      The new
-      <a href="/pkg/net/#Resolver.StrictErrors"><code>Resolver.StrictErrors</code></a>
-      provides control over how Go's built-in DNS resolver handles
-      temporary errors during queries composed of multiple sub-queries,
-      such as an A+AAAA address lookup.
-    </p>
-
-    <p><!-- CL 37260 -->
-      The new
-      <a href="/pkg/net/#Resolver.Dial"><code>Resolver.Dial</code></a>
-      allows a <code>Resolver</code> to use a custom dial function.
-    </p>
-
-    <p><!-- CL 40510 -->
-      <a href="/pkg/net/#JoinHostPort"><code>JoinHostPort</code></a> now only places an address in square brackets if the host contains a colon.
-      In previous releases it would also wrap addresses in square brackets if they contained a percent ('<code>%</code>') sign.
-    </p>
-
-    <p><!-- CL 37913 -->
-      The new methods
-      <a href="/pkg/net/#TCPConn.SyscallConn"><code>TCPConn.SyscallConn</code></a>,
-      <a href="/pkg/net/#IPConn.SyscallConn"><code>IPConn.SyscallConn</code></a>,
-      <a href="/pkg/net/#UDPConn.SyscallConn"><code>UDPConn.SyscallConn</code></a>,
-      and
-      <a href="/pkg/net/#UnixConn.SyscallConn"><code>UnixConn.SyscallConn</code></a>
-      provide access to the connections' underlying file descriptors.
-    </p>
-
-    <p><!-- 45088 -->
-      It is now safe to call <a href="/pkg/net/#Dial"><code>Dial</code></a> with the address obtained from
-      <code>(*TCPListener).String()</code> after creating the listener with
-      <code><a href="/pkg/net/#Listen">Listen</a>("tcp", ":0")</code>.
-      Previously it failed on some machines with half-configured IPv6 stacks.
-    </p>
-
-</dl><!-- net -->
-
-<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
-  <dd>
-
-    <p><!-- CL 37328 -->
-      The <a href="/pkg/net/http/#Cookie.String"><code>Cookie.String</code></a> method, used for
-      <code>Cookie</code> and <code>Set-Cookie</code> headers, now encloses values in double quotes
-      if the value contains either a space or a comma.
-    </p>
-
-    <p>Server changes:</p>
-    <ul>
-      <li><!-- CL 38194 -->
-        <a href="/pkg/net/http/#ServeMux"><code>ServeMux</code></a> now ignores ports in the host
-        header when matching handlers. The host is matched unmodified for <code>CONNECT</code> requests.
-      </li>
-
-      <li><!-- CL 44074 -->
-        The new <a href="/pkg/net/http/#Server.ServeTLS"><code>Server.ServeTLS</code></a> method wraps
-        <a href="/pkg/net/http/#Server.Serve"><code>Server.Serve</code></a> with added TLS support.
-      </li>
-
-      <li><!-- CL 34727 -->
-        <a href="/pkg/net/http/#Server.WriteTimeout"><code>Server.WriteTimeout</code></a>
-        now applies to HTTP/2 connections and is enforced per-stream.
-      </li>
-
-      <li><!-- CL 43231 -->
-        HTTP/2 now uses the priority write scheduler by default.
-        Frames are scheduled by following HTTP/2 priorities as described in
-        <a href="https://tools.ietf.org/html/rfc7540#section-5.3">RFC 7540 Section 5.3</a>.
-      </li>
-
-      <li><!-- CL 36483 -->
-        The HTTP handler returned by <a href="/pkg/net/http/#StripPrefix"><code>StripPrefix</code></a>
-        now calls its provided handler with a modified clone of the original <code>*http.Request</code>.
-        Any code storing per-request state in maps keyed by <code>*http.Request</code> should
-        use
-        <a href="/pkg/net/http/#Request.Context"><code>Request.Context</code></a>,
-        <a href="/pkg/net/http/#Request.WithContext"><code>Request.WithContext</code></a>,
-        and
-        <a href="/pkg/context/#WithValue"><code>context.WithValue</code></a> instead.
-      </li>
-
-      <li><!-- CL 35490 -->
-        <a href="/pkg/net/http/#LocalAddrContextKey"><code>LocalAddrContextKey</code></a> now contains
-        the connection's actual network address instead of the interface address used by the listener.
-      </li>
-    </ul>
-
-    <p>Client &amp; Transport changes:</p>
-    <ul>
-      <li><!-- CL 35488 -->
-        The <a href="/pkg/net/http/#Transport"><code>Transport</code></a>
-        now supports making requests via SOCKS5 proxy when the URL returned by
-        <a href="/pkg/net/http/#Transport.Proxy"><code>Transport.Proxy</code></a>
-        has the scheme <code>socks5</code>.
-      </li>
-    </ul>
-
-</dl><!-- net/http -->
-
-<dl id="net/http/fcgi"><dt><a href="/pkg/net/http/fcgi/">net/http/fcgi</a></dt>
-  <dd>
-    <p><!-- CL 40012 -->
-      The new
-      <a href="/pkg/net/http/fcgi/#ProcessEnv"><code>ProcessEnv</code></a>
-      function returns FastCGI environment variables associated with an HTTP request
-      for which there are no appropriate
-      <a href="/pkg/net/http/#Request"><code>http.Request</code></a>
-      fields, such as <code>REMOTE_USER</code>.
-    </p>
-
-</dl><!-- net/http/fcgi -->
-
-<dl id="net/http/httptest"><dt><a href="/pkg/net/http/httptest/">net/http/httptest</a></dt>
-  <dd>
-    <p><!-- CL 34639 -->
-      The new
-      <a href="/pkg/net/http/httptest/#Server.Client"><code>Server.Client</code></a>
-      method returns an HTTP client configured for making requests to the test server.
-    </p>
-
-    <p>
-      The new
-      <a href="/pkg/net/http/httptest/#Server.Certificate"><code>Server.Certificate</code></a>
-      method returns the test server's TLS certificate, if any.
-    </p>
-
-</dl><!-- net/http/httptest -->
-
-<dl id="net/http/httputil"><dt><a href="/pkg/net/http/httputil/">net/http/httputil</a></dt>
-  <dd>
-    <p><!-- CL 43712 -->
-      The <a href="/pkg/net/http/httputil/#ReverseProxy"><code>ReverseProxy</code></a>
-      now proxies all HTTP/2 response trailers, even those not declared in the initial response
-      header. Such undeclared trailers are used by the gRPC protocol.
-    </p>
-
-</dl><!-- net/http/httputil -->
-
-<dl id="os"><dt><a href="/pkg/os/">os</a></dt>
-  <dd>
-    <p><!-- CL 36800 -->
-      The <code>os</code> package now uses the internal runtime poller
-      for file I/O.
-      This reduces the number of threads required for read/write
-      operations on pipes, and it eliminates races when one goroutine
-      closes a file while another is using the file for I/O.
-    </p>
-
-  <dd>
-    <p><!-- CL 37915 -->
-      On Windows,
-      <a href="/pkg/os/#Args"><code>Args</code></a>
-      is now populated without <code>shell32.dll</code>, improving process start-up time by 1-7 ms.
-      </p>
-
-</dl><!-- os -->
-
-<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
-  <dd>
-    <p><!-- CL 37586 -->
-      The <code>os/exec</code> package now prevents child processes from being created with
-      any duplicate environment variables.
-      If <a href="/pkg/os/exec/#Cmd.Env"><code>Cmd.Env</code></a>
-      contains duplicate environment keys, only the last
-      value in the slice for each duplicate key is used.
-    </p>
-
-</dl><!-- os/exec -->
-
-<dl id="os/user"><dt><a href="/pkg/os/user/">os/user</a></dt>
-  <dd>
-    <p><!-- CL 37664 -->
-      <a href="/pkg/os/user/#Lookup"><code>Lookup</code></a> and
-      <a href="/pkg/os/user/#LookupId"><code>LookupId</code></a> now
-      work on Unix systems when <code>CGO_ENABLED=0</code> by reading
-      the <code>/etc/passwd</code> file.
-    </p>
-
-    <p><!-- CL 33713 -->
-      <a href="/pkg/os/user/#LookupGroup"><code>LookupGroup</code></a> and
-      <a href="/pkg/os/user/#LookupGroupId"><code>LookupGroupId</code></a> now
-      work on Unix systems when <code>CGO_ENABLED=0</code> by reading
-      the <code>/etc/group</code> file.
-    </p>
-
-</dl><!-- os/user -->
-
-<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
-  <dd>
-    <p><!-- CL 38335 -->
-      The new
-      <a href="/pkg/reflect/#MakeMapWithSize"><code>MakeMapWithSize</code></a>
-      function creates a map with a capacity hint.
-    </p>
-
-</dl><!-- reflect -->
-
-<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
-  <dd>
-    <p><!-- CL 37233, CL 37726 -->
-      Tracebacks generated by the runtime and recorded in profiles are
-      now accurate in the presence of inlining.
-      To retrieve tracebacks programmatically, applications should use
-      <a href="/pkg/runtime/#CallersFrames"><code>runtime.CallersFrames</code></a>
-      rather than directly iterating over the results of
-      <a href="/pkg/runtime/#Callers"><code>runtime.Callers</code></a>.
-    </p>
-
-    <p><!-- CL 38403 -->
-      On Windows, Go no longer forces the system timer to run at high
-      resolution when the program is idle.
-      This should reduce the impact of Go programs on battery life.
-    </p>
-
-    <p><!-- CL 29341 -->
-      On FreeBSD, <code>GOMAXPROCS</code> and
-      <a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>
-      are now based on the process' CPU mask, rather than the total
-      number of CPUs.
-    </p>
-
-    <p><!-- CL 43641 -->
-      The runtime has preliminary support for Android O.
-    </p>
-
-</dl><!-- runtime -->
-
-<dl id="runtime/debug"><dt><a href="/pkg/runtime/debug/">runtime/debug</a></dt>
-  <dd>
-    <p><!-- CL 34013 -->
-      Calling
-      <a href="/pkg/runtime/debug/#SetGCPercent"><code>SetGCPercent</code></a>
-      with a negative value no longer runs an immediate garbage collection.
-    </p>
-
-</dl><!-- runtime/debug -->
-
-<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
-  <dd>
-    <p><!-- CL 36015 -->
-      The execution trace now displays mark assist events, which
-      indicate when an application goroutine is forced to assist
-      garbage collection because it is allocating too quickly.
-    </p>
-
-    <p><!-- CL 40810 -->
-      "Sweep" events now encompass the entire process of finding free
-      space for an allocation, rather than recording each individual
-      span that is swept.
-      This reduces allocation latency when tracing allocation-heavy
-      programs.
-      The sweep event shows how many bytes were swept and how many
-      were reclaimed.
-    </p>
-
-</dl><!-- runtime/trace -->
-
-<dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
-  <dd>
-    <p><!-- CL 34310 -->
-      <a href="/pkg/sync/#Mutex"><code>Mutex</code></a> is now more fair.
-    </p>
-
-</dl><!-- sync -->
-
-<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
-  <dd>
-    <p><!-- CL 36697 -->
-      The new field
-      <a href="/pkg/syscall/#Credential.NoSetGroups"><code>Credential.NoSetGroups</code></a>
-      controls whether Unix systems make a <code>setgroups</code> system call
-      to set supplementary groups when starting a new process.
-    </p>
-
-    <p><!-- CL 43512 -->
-      The new field
-      <a href="/pkg/syscall/#SysProcAttr.AmbientCaps"><code>SysProcAttr.AmbientCaps</code></a>
-      allows setting ambient capabilities on Linux 4.3+ when creating
-      a new process.
-    </p>
-
-    <p><!-- CL 37439 -->
-      On 64-bit x86 Linux, process creation latency has been optimized with
-      use of <code>CLONE_VFORK</code> and <code>CLONE_VM</code>.
-    </p>
-
-    <p><!-- CL 37913 -->
-      The new
-      <a href="/pkg/syscall/#Conn"><code>Conn</code></a>
-      interface describes some types in the
-      <a href="/pkg/net/"><code>net</code></a>
-      package that can provide access to their underlying file descriptor
-      using the new
-      <a href="/pkg/syscall/#RawConn"><code>RawConn</code></a>
-      interface.
-    </p>
-
-</dl><!-- syscall -->
-
-
-<dl id="testing/quick"><dt><a href="/pkg/testing/quick/">testing/quick</a></dt>
-  <dd>
-    <p><!-- CL 39152 -->
-      The package now chooses values in the full range when
-      generating <code>int64</code> and <code>uint64</code> random
-      numbers; in earlier releases generated values were always
-      limited to the [-2<sup>62</sup>, 2<sup>62</sup>) range.
-    </p>
-
-    <p>
-      In previous releases, using a nil
-      <a href="/pkg/testing/quick/#Config.Rand"><code>Config.Rand</code></a>
-      value caused a fixed deterministic random number generator to be used.
-      It now uses a random number generator seeded with the current time.
-      For the old behavior, set <code>Config.Rand</code> to <code>rand.New(rand.NewSource(0))</code>.
-    </p>
-
-</dl><!-- testing/quick -->
-
-<dl id="text/template"><dt><a href="/pkg/text/template/">text/template</a></dt>
-  <dd>
-    <p><!-- CL 38420 -->
-	  The handling of empty blocks, which was broken by a Go 1.8
-	  change that made the result dependent on the order of templates,
-	  has been fixed, restoring the old Go 1.7 behavior.
-    </p>
-
-</dl><!-- text/template -->
-
-<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
-  <dd>
-    <p><!-- CL 36615 -->
-      The new methods
-      <a href="/pkg/time/#Duration.Round"><code>Duration.Round</code></a>
-      and
-      <a href="/pkg/time/#Duration.Truncate"><code>Duration.Truncate</code></a>
-      handle rounding and truncating durations to multiples of a given duration.
-    </p>
-
-    <p><!-- CL 35710 -->
-      Retrieving the time and sleeping now work correctly under Wine.
-    </p>
-
-    <p>
-      If a <code>Time</code> value has a monotonic clock reading, its
-      string representation (as returned by <code>String</code>) now includes a
-      final field <code>"m=±value"</code>, where <code>value</code> is the
-      monotonic clock reading formatted as a decimal number of seconds.
-    </p>
-
-    <p><!-- CL 44832 -->
-      The included <code>tzdata</code> timezone database has been
-      updated to version 2017b. As always, it is only used if the
-      system does not already have the database available.
-    </p>
-
-</dl><!-- time -->
diff --git a/_content/doc/go1.html b/_content/doc/go1.html
deleted file mode 100644
index e638071..0000000
--- a/_content/doc/go1.html
+++ /dev/null
@@ -1,2038 +0,0 @@
-<!--{
-	"Title": "Go 1 Release Notes",
-	"Template": true
-}-->
-
-<h2 id="introduction">Introduction to Go 1</h2>
-
-<p>
-Go version 1, Go 1 for short, defines a language and a set of core libraries
-that provide a stable foundation for creating reliable products, projects, and
-publications.
-</p>
-
-<p>
-The driving motivation for Go 1 is stability for its users. People should be able to
-write Go programs and expect that they will continue to compile and run without
-change, on a time scale of years, including in production environments such as
-Google App Engine. Similarly, people should be able to write books about Go, be
-able to say which version of Go the book is describing, and have that version
-number still be meaningful much later.
-</p>
-
-<p>
-Code that compiles in Go 1 should, with few exceptions, continue to compile and
-run throughout the lifetime of that version, even as we issue updates and bug
-fixes such as Go version 1.1, 1.2, and so on. Other than critical fixes, changes
-made to the language and library for subsequent releases of Go 1 may
-add functionality but will not break existing Go 1 programs.
-<a href="go1compat.html">The Go 1 compatibility document</a>
-explains the compatibility guidelines in more detail.
-</p>
-
-<p>
-Go 1 is a representation of Go as it used today, not a wholesale rethinking of
-the language. We avoided designing new features and instead focused on cleaning
-up problems and inconsistencies and improving portability. There are a number
-changes to the Go language and packages that we had considered for some time and
-prototyped but not released primarily because they are significant and
-backwards-incompatible. Go 1 was an opportunity to get them out, which is
-helpful for the long term, but also means that Go 1 introduces incompatibilities
-for old programs. Fortunately, the <code>go</code> <code>fix</code> tool can
-automate much of the work needed to bring programs up to the Go 1 standard.
-</p>
-
-<p>
-This document outlines the major changes in Go 1 that will affect programmers
-updating existing code; its reference point is the prior release, r60 (tagged as
-r60.3). It also explains how to update code from r60 to run under Go 1.
-</p>
-
-<h2 id="language">Changes to the language</h2>
-
-<h3 id="append">Append</h3>
-
-<p>
-The <code>append</code> predeclared variadic function makes it easy to grow a slice
-by adding elements to the end.
-A common use is to add bytes to the end of a byte slice when generating output.
-However, <code>append</code> did not provide a way to append a string to a <code>[]byte</code>,
-which is another common case.
-</p>
-
-{{code "/doc/progs/go1.go" `/greeting := ..byte/` `/append.*hello/`}}
-
-<p>
-By analogy with the similar property of <code>copy</code>, Go 1
-permits a string to be appended (byte-wise) directly to a byte
-slice, reducing the friction between strings and byte slices.
-The conversion is no longer necessary:
-</p>
-
-{{code "/doc/progs/go1.go" `/append.*world/`}}
-
-<p>
-<em>Updating</em>:
-This is a new feature, so existing code needs no changes.
-</p>
-
-<h3 id="close">Close</h3>
-
-<p>
-The <code>close</code> predeclared function provides a mechanism
-for a sender to signal that no more values will be sent.
-It is important to the implementation of <code>for</code> <code>range</code>
-loops over channels and is helpful in other situations.
-Partly by design and partly because of race conditions that can occur otherwise,
-it is intended for use only by the goroutine sending on the channel,
-not by the goroutine receiving data.
-However, before Go 1 there was no compile-time checking that <code>close</code>
-was being used correctly.
-</p>
-
-<p>
-To close this gap, at least in part, Go 1 disallows <code>close</code> on receive-only channels.
-Attempting to close such a channel is a compile-time error.
-</p>
-
-<pre>
-    var c chan int
-    var csend chan&lt;- int = c
-    var crecv &lt;-chan int = c
-    close(c)     // legal
-    close(csend) // legal
-    close(crecv) // illegal
-</pre>
-
-<p>
-<em>Updating</em>:
-Existing code that attempts to close a receive-only channel was
-erroneous even before Go 1 and should be fixed.  The compiler will
-now reject such code.
-</p>
-
-<h3 id="literals">Composite literals</h3>
-
-<p>
-In Go 1, a composite literal of array, slice, or map type can elide the
-type specification for the elements' initializers if they are of pointer type.
-All four of the initializations in this example are legal; the last one was illegal before Go 1.
-</p>
-
-{{code "/doc/progs/go1.go" `/type Date struct/` `/STOP/`}}
-
-<p>
-<em>Updating</em>:
-This change has no effect on existing code, but the command
-<code>gofmt</code> <code>-s</code> applied to existing source
-will, among other things, elide explicit element types wherever permitted.
-</p>
-
-
-<h3 id="init">Goroutines during init</h3>
-
-<p>
-The old language defined that <code>go</code> statements executed during initialization created goroutines but that they did not begin to run until initialization of the entire program was complete.
-This introduced clumsiness in many places and, in effect, limited the utility
-of the <code>init</code> construct:
-if it was possible for another package to use the library during initialization, the library
-was forced to avoid goroutines.
-This design was done for reasons of simplicity and safety but,
-as our confidence in the language grew, it seemed unnecessary.
-Running goroutines during initialization is no more complex or unsafe than running them during normal execution.
-</p>
-
-<p>
-In Go 1, code that uses goroutines can be called from
-<code>init</code> routines and global initialization expressions
-without introducing a deadlock.
-</p>
-
-{{code "/doc/progs/go1.go" `/PackageGlobal/` `/^}/`}}
-
-<p>
-<em>Updating</em>:
-This is a new feature, so existing code needs no changes,
-although it's possible that code that depends on goroutines not starting before <code>main</code> will break.
-There was no such code in the standard repository.
-</p>
-
-<h3 id="rune">The rune type</h3>
-
-<p>
-The language spec allows the <code>int</code> type to be 32 or 64 bits wide, but current implementations set <code>int</code> to 32 bits even on 64-bit platforms.
-It would be preferable to have <code>int</code> be 64 bits on 64-bit platforms.
-(There are important consequences for indexing large slices.)
-However, this change would waste space when processing Unicode characters with
-the old language because the <code>int</code> type was also used to hold Unicode code points: each code point would waste an extra 32 bits of storage if <code>int</code> grew from 32 bits to 64.
-</p>
-
-<p>
-To make changing to 64-bit <code>int</code> feasible,
-Go 1 introduces a new basic type, <code>rune</code>, to represent
-individual Unicode code points.
-It is an alias for <code>int32</code>, analogous to <code>byte</code>
-as an alias for <code>uint8</code>.
-</p>
-
-<p>
-Character literals such as <code>'a'</code>, <code>'語'</code>, and <code>'\u0345'</code>
-now have default type <code>rune</code>,
-analogous to <code>1.0</code> having default type <code>float64</code>.
-A variable initialized to a character constant will therefore
-have type <code>rune</code> unless otherwise specified.
-</p>
-
-<p>
-Libraries have been updated to use <code>rune</code> rather than <code>int</code>
-when appropriate. For instance, the functions <code>unicode.ToLower</code> and
-relatives now take and return a <code>rune</code>.
-</p>
-
-{{code "/doc/progs/go1.go" `/STARTRUNE/` `/ENDRUNE/`}}
-
-<p>
-<em>Updating</em>:
-Most source code will be unaffected by this because the type inference from
-<code>:=</code> initializers introduces the new type silently, and it propagates
-from there.
-Some code may get type errors that a trivial conversion will resolve.
-</p>
-
-<h3 id="error">The error type</h3>
-
-<p>
-Go 1 introduces a new built-in type, <code>error</code>, which has the following definition:
-</p>
-
-<pre>
-    type error interface {
-        Error() string
-    }
-</pre>
-
-<p>
-Since the consequences of this type are all in the package library,
-it is discussed <a href="#errors">below</a>.
-</p>
-
-<h3 id="delete">Deleting from maps</h3>
-
-<p>
-In the old language, to delete the entry with key <code>k</code> from map <code>m</code>, one wrote the statement,
-</p>
-
-<pre>
-    m[k] = value, false
-</pre>
-
-<p>
-This syntax was a peculiar special case, the only two-to-one assignment.
-It required passing a value (usually ignored) that is evaluated but discarded,
-plus a boolean that was nearly always the constant <code>false</code>.
-It did the job but was odd and a point of contention.
-</p>
-
-<p>
-In Go 1, that syntax has gone; instead there is a new built-in
-function, <code>delete</code>.  The call
-</p>
-
-{{code "/doc/progs/go1.go" `/delete\(m, k\)/`}}
-
-<p>
-will delete the map entry retrieved by the expression <code>m[k]</code>.
-There is no return value. Deleting a non-existent entry is a no-op.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will convert expressions of the form <code>m[k] = value,
-false</code> into <code>delete(m, k)</code> when it is clear that
-the ignored value can be safely discarded from the program and
-<code>false</code> refers to the predefined boolean constant.
-The fix tool
-will flag other uses of the syntax for inspection by the programmer.
-</p>
-
-<h3 id="iteration">Iterating in maps</h3>
-
-<p>
-The old language specification did not define the order of iteration for maps,
-and in practice it differed across hardware platforms.
-This caused tests that iterated over maps to be fragile and non-portable, with the
-unpleasant property that a test might always pass on one machine but break on another.
-</p>
-
-<p>
-In Go 1, the order in which elements are visited when iterating
-over a map using a <code>for</code> <code>range</code> statement
-is defined to be unpredictable, even if the same loop is run multiple
-times with the same map.
-Code should not assume that the elements are visited in any particular order.
-</p>
-
-<p>
-This change means that code that depends on iteration order is very likely to break early and be fixed long before it becomes a problem.
-Just as important, it allows the map implementation to ensure better map balancing even when programs are using range loops to select an element from a map.
-</p>
-
-{{code "/doc/progs/go1.go" `/Sunday/` `/^	}/`}}
-
-<p>
-<em>Updating</em>:
-This is one change where tools cannot help.  Most existing code
-will be unaffected, but some programs may break or misbehave; we
-recommend manual checking of all range statements over maps to
-verify they do not depend on iteration order. There were a few such
-examples in the standard repository; they have been fixed.
-Note that it was already incorrect to depend on the iteration order, which
-was unspecified. This change codifies the unpredictability.
-</p>
-
-<h3 id="multiple_assignment">Multiple assignment</h3>
-
-<p>
-The language specification has long guaranteed that in assignments
-the right-hand-side expressions are all evaluated before any left-hand-side expressions are assigned.
-To guarantee predictable behavior,
-Go 1 refines the specification further.
-</p>
-
-<p>
-If the left-hand side of the assignment
-statement contains expressions that require evaluation, such as
-function calls or array indexing operations, these will all be done
-using the usual left-to-right rule before any variables are assigned
-their value.  Once everything is evaluated, the actual assignments
-proceed in left-to-right order.
-</p>
-
-<p>
-These examples illustrate the behavior.
-</p>
-
-{{code "/doc/progs/go1.go" `/sa :=/` `/then sc.0. = 2/`}}
-
-<p>
-<em>Updating</em>:
-This is one change where tools cannot help, but breakage is unlikely.
-No code in the standard repository was broken by this change, and code
-that depended on the previous unspecified behavior was already incorrect.
-</p>
-
-<h3 id="shadowing">Returns and shadowed variables</h3>
-
-<p>
-A common mistake is to use <code>return</code> (without arguments) after an assignment to a variable that has the same name as a result variable but is not the same variable.
-This situation is called <em>shadowing</em>: the result variable has been shadowed by another variable with the same name declared in an inner scope.
-</p>
-
-<p>
-In functions with named return values,
-the Go 1 compilers disallow return statements without arguments if any of the named return values is shadowed at the point of the return statement.
-(It isn't part of the specification, because this is one area we are still exploring;
-the situation is analogous to the compilers rejecting functions that do not end with an explicit return statement.)
-</p>
-
-<p>
-This function implicitly returns a shadowed return value and will be rejected by the compiler:
-</p>
-
-<pre>
-    func Bug() (i, j, k int) {
-        for i = 0; i &lt; 5; i++ {
-            for j := 0; j &lt; 5; j++ { // Redeclares j.
-                k += i*j
-                if k > 100 {
-                    return // Rejected: j is shadowed here.
-                }
-            }
-        }
-        return // OK: j is not shadowed here.
-    }
-</pre>
-
-<p>
-<em>Updating</em>:
-Code that shadows return values in this way will be rejected by the compiler and will need to be fixed by hand.
-The few cases that arose in the standard repository were mostly bugs.
-</p>
-
-<h3 id="unexported">Copying structs with unexported fields</h3>
-
-<p>
-The old language did not allow a package to make a copy of a struct value containing unexported fields belonging to a different package.
-There was, however, a required exception for a method receiver;
-also, the implementations of <code>copy</code> and <code>append</code> have never honored the restriction.
-</p>
-
-<p>
-Go 1 will allow packages to copy struct values containing unexported fields from other packages.
-Besides resolving the inconsistency,
-this change admits a new kind of API: a package can return an opaque value without resorting to a pointer or interface.
-The new implementations of <code>time.Time</code> and
-<code>reflect.Value</code> are examples of types taking advantage of this new property.
-</p>
-
-<p>
-As an example, if package <code>p</code> includes the definitions,
-</p>
-
-<pre>
-    type Struct struct {
-        Public int
-        secret int
-    }
-    func NewStruct(a int) Struct {  // Note: not a pointer.
-        return Struct{a, f(a)}
-    }
-    func (s Struct) String() string {
-        return fmt.Sprintf("{%d (secret %d)}", s.Public, s.secret)
-    }
-</pre>
-
-<p>
-a package that imports <code>p</code> can assign and copy values of type
-<code>p.Struct</code> at will.
-Behind the scenes the unexported fields will be assigned and copied just
-as if they were exported,
-but the client code will never be aware of them. The code
-</p>
-
-<pre>
-    import "p"
-
-    myStruct := p.NewStruct(23)
-    copyOfMyStruct := myStruct
-    fmt.Println(myStruct, copyOfMyStruct)
-</pre>
-
-<p>
-will show that the secret field of the struct has been copied to the new value.
-</p>
-
-<p>
-<em>Updating</em>:
-This is a new feature, so existing code needs no changes.
-</p>
-
-<h3 id="equality">Equality</h3>
-
-<p>
-Before Go 1, the language did not define equality on struct and array values.
-This meant,
-among other things, that structs and arrays could not be used as map keys.
-On the other hand, Go did define equality on function and map values.
-Function equality was problematic in the presence of closures
-(when are two closures equal?)
-while map equality compared pointers, not the maps' content, which was usually
-not what the user would want.
-</p>
-
-<p>
-Go 1 addressed these issues.
-First, structs and arrays can be compared for equality and inequality
-(<code>==</code> and <code>!=</code>),
-and therefore be used as map keys,
-provided they are composed from elements for which equality is also defined,
-using element-wise comparison.
-</p>
-
-{{code "/doc/progs/go1.go" `/type Day struct/` `/Printf/`}}
-
-<p>
-Second, Go 1 removes the definition of equality for function values,
-except for comparison with <code>nil</code>.
-Finally, map equality is gone too, also except for comparison with <code>nil</code>.
-</p>
-
-<p>
-Note that equality is still undefined for slices, for which the
-calculation is in general infeasible.  Also note that the ordered
-comparison operators (<code>&lt;</code> <code>&lt;=</code>
-<code>&gt;</code> <code>&gt;=</code>) are still undefined for
-structs and arrays.
-
-<p>
-<em>Updating</em>:
-Struct and array equality is a new feature, so existing code needs no changes.
-Existing code that depends on function or map equality will be
-rejected by the compiler and will need to be fixed by hand.
-Few programs will be affected, but the fix may require some
-redesign.
-</p>
-
-<h2 id="packages">The package hierarchy</h2>
-
-<p>
-Go 1 addresses many deficiencies in the old standard library and
-cleans up a number of packages, making them more internally consistent
-and portable.
-</p>
-
-<p>
-This section describes how the packages have been rearranged in Go 1.
-Some have moved, some have been renamed, some have been deleted.
-New packages are described in later sections.
-</p>
-
-<h3 id="hierarchy">The package hierarchy</h3>
-
-<p>
-Go 1 has a rearranged package hierarchy that groups related items
-into subdirectories. For instance, <code>utf8</code> and
-<code>utf16</code> now occupy subdirectories of <code>unicode</code>.
-Also, <a href="#subrepo">some packages</a> have moved into
-subrepositories of
-<a href="https://code.google.com/p/go"><code>code.google.com/p/go</code></a>
-while <a href="#deleted">others</a> have been deleted outright.
-</p>
-
-<table class="codetable" frame="border" summary="Moved packages">
-<colgroup align="left" width="60%"></colgroup>
-<colgroup align="left" width="40%"></colgroup>
-<tr>
-<th align="left">Old path</th>
-<th align="left">New path</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>asn1</td> <td>encoding/asn1</td></tr>
-<tr><td>csv</td> <td>encoding/csv</td></tr>
-<tr><td>gob</td> <td>encoding/gob</td></tr>
-<tr><td>json</td> <td>encoding/json</td></tr>
-<tr><td>xml</td> <td>encoding/xml</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>exp/template/html</td> <td>html/template</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>big</td> <td>math/big</td></tr>
-<tr><td>cmath</td> <td>math/cmplx</td></tr>
-<tr><td>rand</td> <td>math/rand</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>http</td> <td>net/http</td></tr>
-<tr><td>http/cgi</td> <td>net/http/cgi</td></tr>
-<tr><td>http/fcgi</td> <td>net/http/fcgi</td></tr>
-<tr><td>http/httptest</td> <td>net/http/httptest</td></tr>
-<tr><td>http/pprof</td> <td>net/http/pprof</td></tr>
-<tr><td>mail</td> <td>net/mail</td></tr>
-<tr><td>rpc</td> <td>net/rpc</td></tr>
-<tr><td>rpc/jsonrpc</td> <td>net/rpc/jsonrpc</td></tr>
-<tr><td>smtp</td> <td>net/smtp</td></tr>
-<tr><td>url</td> <td>net/url</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>exec</td> <td>os/exec</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>scanner</td> <td>text/scanner</td></tr>
-<tr><td>tabwriter</td> <td>text/tabwriter</td></tr>
-<tr><td>template</td> <td>text/template</td></tr>
-<tr><td>template/parse</td> <td>text/template/parse</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>utf8</td> <td>unicode/utf8</td></tr>
-<tr><td>utf16</td> <td>unicode/utf16</td></tr>
-</table>
-
-<p>
-Note that the package names for the old <code>cmath</code> and
-<code>exp/template/html</code> packages have changed to <code>cmplx</code>
-and <code>template</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update all imports and package renames for packages that
-remain inside the standard repository.  Programs that import packages
-that are no longer in the standard repository will need to be edited
-by hand.
-</p>
-
-<h3 id="exp">The package tree exp</h3>
-
-<p>
-Because they are not standardized, the packages under the <code>exp</code> directory will not be available in the
-standard Go 1 release distributions, although they will be available in source code form
-in <a href="https://code.google.com/p/go/">the repository</a> for
-developers who wish to use them.
-</p>
-
-<p>
-Several packages have moved under <code>exp</code> at the time of Go 1's release:
-</p>
-
-<ul>
-<li><code>ebnf</code></li>
-<li><code>html</code><sup>&#8224;</sup></li>
-<li><code>go/types</code></li>
-</ul>
-
-<p>
-(<sup>&#8224;</sup>The <code>EscapeString</code> and <code>UnescapeString</code> types remain
-in package <code>html</code>.)
-</p>
-
-<p>
-All these packages are available under the same names, with the prefix <code>exp/</code>: <code>exp/ebnf</code> etc.
-</p>
-
-<p>
-Also, the <code>utf8.String</code> type has been moved to its own package, <code>exp/utf8string</code>.
-</p>
-
-<p>
-Finally, the <code>gotype</code> command now resides in <code>exp/gotype</code>, while
-<code>ebnflint</code> is now in <code>exp/ebnflint</code>.
-If they are installed, they now reside in <code>$GOROOT/bin/tool</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses packages in <code>exp</code> will need to be updated by hand,
-or else compiled from an installation that has <code>exp</code> available.
-The <code>go</code> <code>fix</code> tool or the compiler will complain about such uses.
-</p>
-
-<h3 id="old">The package tree old</h3>
-
-<p>
-Because they are deprecated, the packages under the <code>old</code> directory will not be available in the
-standard Go 1 release distributions, although they will be available in source code form for
-developers who wish to use them.
-</p>
-
-<p>
-The packages in their new locations are:
-</p>
-
-<ul>
-<li><code>old/netchan</code></li>
-</ul>
-
-<p>
-<em>Updating</em>:
-Code that uses packages now in <code>old</code> will need to be updated by hand,
-or else compiled from an installation that has <code>old</code> available.
-The <code>go</code> <code>fix</code> tool will warn about such uses.
-</p>
-
-<h3 id="deleted">Deleted packages</h3>
-
-<p>
-Go 1 deletes several packages outright:
-</p>
-
-<ul>
-<li><code>container/vector</code></li>
-<li><code>exp/datafmt</code></li>
-<li><code>go/typechecker</code></li>
-<li><code>old/regexp</code></li>
-<li><code>old/template</code></li>
-<li><code>try</code></li>
-</ul>
-
-<p>
-and also the command <code>gotry</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses <code>container/vector</code> should be updated to use
-slices directly.  See
-<a href="https://code.google.com/p/go-wiki/wiki/SliceTricks">the Go
-Language Community Wiki</a> for some suggestions.
-Code that uses the other packages (there should be almost zero) will need to be rethought.
-</p>
-
-<h3 id="subrepo">Packages moving to subrepositories</h3>
-
-<p>
-Go 1 has moved a number of packages into other repositories, usually sub-repositories of
-<a href="https://code.google.com/p/go/">the main Go repository</a>.
-This table lists the old and new import paths:
-</p>
-
-<table class="codetable" frame="border" summary="Sub-repositories">
-<colgroup align="left" width="40%"></colgroup>
-<colgroup align="left" width="60%"></colgroup>
-<tr>
-<th align="left">Old</th>
-<th align="left">New</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>crypto/bcrypt</td> <td>code.google.com/p/go.crypto/bcrypt</tr>
-<tr><td>crypto/blowfish</td> <td>code.google.com/p/go.crypto/blowfish</tr>
-<tr><td>crypto/cast5</td> <td>code.google.com/p/go.crypto/cast5</tr>
-<tr><td>crypto/md4</td> <td>code.google.com/p/go.crypto/md4</tr>
-<tr><td>crypto/ocsp</td> <td>code.google.com/p/go.crypto/ocsp</tr>
-<tr><td>crypto/openpgp</td> <td>code.google.com/p/go.crypto/openpgp</tr>
-<tr><td>crypto/openpgp/armor</td> <td>code.google.com/p/go.crypto/openpgp/armor</tr>
-<tr><td>crypto/openpgp/elgamal</td> <td>code.google.com/p/go.crypto/openpgp/elgamal</tr>
-<tr><td>crypto/openpgp/errors</td> <td>code.google.com/p/go.crypto/openpgp/errors</tr>
-<tr><td>crypto/openpgp/packet</td> <td>code.google.com/p/go.crypto/openpgp/packet</tr>
-<tr><td>crypto/openpgp/s2k</td> <td>code.google.com/p/go.crypto/openpgp/s2k</tr>
-<tr><td>crypto/ripemd160</td> <td>code.google.com/p/go.crypto/ripemd160</tr>
-<tr><td>crypto/twofish</td> <td>code.google.com/p/go.crypto/twofish</tr>
-<tr><td>crypto/xtea</td> <td>code.google.com/p/go.crypto/xtea</tr>
-<tr><td>exp/ssh</td> <td>code.google.com/p/go.crypto/ssh</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image/bmp</td> <td>code.google.com/p/go.image/bmp</tr>
-<tr><td>image/tiff</td> <td>code.google.com/p/go.image/tiff</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>net/dict</td> <td>code.google.com/p/go.net/dict</tr>
-<tr><td>net/websocket</td> <td>code.google.com/p/go.net/websocket</tr>
-<tr><td>exp/spdy</td> <td>code.google.com/p/go.net/spdy</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>encoding/git85</td> <td>code.google.com/p/go.codereview/git85</tr>
-<tr><td>patch</td> <td>code.google.com/p/go.codereview/patch</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>exp/wingui</td> <td>code.google.com/p/gowingui</tr>
-</table>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update imports of these packages to use the new import paths.
-Installations that depend on these packages will need to install them using
-a <code>go get</code> command.
-</p>
-
-<h2 id="major">Major changes to the library</h2>
-
-<p>
-This section describes significant changes to the core libraries, the ones that
-affect the most programs.
-</p>
-
-<h3 id="errors">The error type and errors package</h3>
-
-<p>
-The placement of <code>os.Error</code> in package <code>os</code> is mostly historical: errors first came up when implementing package <code>os</code>, and they seemed system-related at the time.
-Since then it has become clear that errors are more fundamental than the operating system.  For example, it would be nice to use <code>Errors</code> in packages that <code>os</code> depends on, like <code>syscall</code>.
-Also, having <code>Error</code> in <code>os</code> introduces many dependencies on <code>os</code> that would otherwise not exist.
-</p>
-
-<p>
-Go 1 solves these problems by introducing a built-in <code>error</code> interface type and a separate <code>errors</code> package (analogous to <code>bytes</code> and <code>strings</code>) that contains utility functions.
-It replaces <code>os.NewError</code> with
-<a href="/pkg/errors/#New"><code>errors.New</code></a>,
-giving errors a more central place in the environment.
-</p>
-
-<p>
-So the widely-used <code>String</code> method does not cause accidental satisfaction
-of the <code>error</code> interface, the <code>error</code> interface uses instead
-the name <code>Error</code> for that method:
-</p>
-
-<pre>
-    type error interface {
-        Error() string
-    }
-</pre>
-
-<p>
-The <code>fmt</code> library automatically invokes <code>Error</code>, as it already
-does for <code>String</code>, for easy printing of error values.
-</p>
-
-{{code "/doc/progs/go1.go" `/START ERROR EXAMPLE/` `/END ERROR EXAMPLE/`}}
-
-<p>
-All standard packages have been updated to use the new interface; the old <code>os.Error</code> is gone.
-</p>
-
-<p>
-A new package, <a href="/pkg/errors/"><code>errors</code></a>, contains the function
-</p>
-
-<pre>
-func New(text string) error
-</pre>
-
-<p>
-to turn a string into an error. It replaces the old <code>os.NewError</code>.
-</p>
-
-{{code "/doc/progs/go1.go" `/ErrSyntax/`}}
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-Code that defines error types with a <code>String</code> method will need to be updated
-by hand to rename the methods to <code>Error</code>.
-</p>
-
-<h3 id="errno">System call errors</h3>
-
-<p>
-The old <code>syscall</code> package, which predated <code>os.Error</code>
-(and just about everything else),
-returned errors as <code>int</code> values.
-In turn, the <code>os</code> package forwarded many of these errors, such
-as <code>EINVAL</code>, but using a different set of errors on each platform.
-This behavior was unpleasant and unportable.
-</p>
-
-<p>
-In Go 1, the
-<a href="/pkg/syscall/"><code>syscall</code></a>
-package instead returns an <code>error</code> for system call errors.
-On Unix, the implementation is done by a
-<a href="/pkg/syscall/#Errno"><code>syscall.Errno</code></a> type
-that satisfies <code>error</code> and replaces the old <code>os.Errno</code>.
-</p>
-
-<p>
-The changes affecting <code>os.EINVAL</code> and relatives are
-described <a href="#os">elsewhere</a>.
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-Regardless, most code should use the <code>os</code> package
-rather than <code>syscall</code> and so will be unaffected.
-</p>
-
-<h3 id="time">Time</h3>
-
-<p>
-Time is always a challenge to support well in a programming language.
-The old Go <code>time</code> package had <code>int64</code> units, no
-real type safety,
-and no distinction between absolute times and durations.
-</p>
-
-<p>
-One of the most sweeping changes in the Go 1 library is therefore a
-complete redesign of the
-<a href="/pkg/time/"><code>time</code></a> package.
-Instead of an integer number of nanoseconds as an <code>int64</code>,
-and a separate <code>*time.Time</code> type to deal with human
-units such as hours and years,
-there are now two fundamental types:
-<a href="/pkg/time/#Time"><code>time.Time</code></a>
-(a value, so the <code>*</code> is gone), which represents a moment in time;
-and <a href="/pkg/time/#Duration"><code>time.Duration</code></a>,
-which represents an interval.
-Both have nanosecond resolution.
-A <code>Time</code> can represent any time into the ancient
-past and remote future, while a <code>Duration</code> can
-span plus or minus only about 290 years.
-There are methods on these types, plus a number of helpful
-predefined constant durations such as <code>time.Second</code>.
-</p>
-
-<p>
-Among the new methods are things like
-<a href="/pkg/time/#Time.Add"><code>Time.Add</code></a>,
-which adds a <code>Duration</code> to a <code>Time</code>, and
-<a href="/pkg/time/#Time.Sub"><code>Time.Sub</code></a>,
-which subtracts two <code>Times</code> to yield a <code>Duration</code>.
-</p>
-
-<p>
-The most important semantic change is that the Unix epoch (Jan 1, 1970) is now
-relevant only for those functions and methods that mention Unix:
-<a href="/pkg/time/#Unix"><code>time.Unix</code></a>
-and the <a href="/pkg/time/#Time.Unix"><code>Unix</code></a>
-and <a href="/pkg/time/#Time.UnixNano"><code>UnixNano</code></a> methods
-of the <code>Time</code> type.
-In particular,
-<a href="/pkg/time/#Now"><code>time.Now</code></a>
-returns a <code>time.Time</code> value rather than, in the old
-API, an integer nanosecond count since the Unix epoch.
-</p>
-
-{{code "/doc/progs/go1.go" `/sleepUntil/` `/^}/`}}
-
-<p>
-The new types, methods, and constants have been propagated through
-all the standard packages that use time, such as <code>os</code> and
-its representation of file time stamps.
-</p>
-
-<p>
-<em>Updating</em>:
-The <code>go</code> <code>fix</code> tool will update many uses of the old <code>time</code> package to use the new
-types and methods, although it does not replace values such as <code>1e9</code>
-representing nanoseconds per second.
-Also, because of type changes in some of the values that arise,
-some of the expressions rewritten by the fix tool may require
-further hand editing; in such cases the rewrite will include
-the correct function or method for the old functionality, but
-may have the wrong type or require further analysis.
-</p>
-
-<h2 id="minor">Minor changes to the library</h2>
-
-<p>
-This section describes smaller changes, such as those to less commonly
-used packages or that affect
-few programs beyond the need to run <code>go</code> <code>fix</code>.
-This category includes packages that are new in Go 1.
-Collectively they improve portability, regularize behavior, and
-make the interfaces more modern and Go-like.
-</p>
-
-<h3 id="archive_zip">The archive/zip package</h3>
-
-<p>
-In Go 1, <a href="/pkg/archive/zip/#Writer"><code>*zip.Writer</code></a> no
-longer has a <code>Write</code> method. Its presence was a mistake.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="bufio">The bufio package</h3>
-
-<p>
-In Go 1, <a href="/pkg/bufio/#NewReaderSize"><code>bufio.NewReaderSize</code></a>
-and
-<a href="/pkg/bufio/#NewWriterSize"><code>bufio.NewWriterSize</code></a>
-functions no longer return an error for invalid sizes.
-If the argument size is too small or invalid, it is adjusted.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update calls that assign the error to _.
-Calls that aren't fixed will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="compress">The compress/flate, compress/gzip and compress/zlib packages</h3>
-
-<p>
-In Go 1, the <code>NewWriterXxx</code> functions in
-<a href="/pkg/compress/flate"><code>compress/flate</code></a>,
-<a href="/pkg/compress/gzip"><code>compress/gzip</code></a> and
-<a href="/pkg/compress/zlib"><code>compress/zlib</code></a>
-all return <code>(*Writer, error)</code> if they take a compression level,
-and <code>*Writer</code> otherwise. Package <code>gzip</code>'s
-<code>Compressor</code> and <code>Decompressor</code> types have been renamed
-to <code>Writer</code> and <code>Reader</code>. Package <code>flate</code>'s
-<code>WrongValueError</code> type has been removed.
-</p>
-
-<p>
-<em>Updating</em>
-Running <code>go</code> <code>fix</code> will update old names and calls that assign the error to _.
-Calls that aren't fixed will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="crypto_aes_des">The crypto/aes and crypto/des packages</h3>
-
-<p>
-In Go 1, the <code>Reset</code> method has been removed. Go does not guarantee
-that memory is not copied and therefore this method was misleading.
-</p>
-
-<p>
-The cipher-specific types <code>*aes.Cipher</code>, <code>*des.Cipher</code>,
-and <code>*des.TripleDESCipher</code> have been removed in favor of
-<code>cipher.Block</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Remove the calls to Reset. Replace uses of the specific cipher types with
-cipher.Block.
-</p>
-
-<h3 id="crypto_elliptic">The crypto/elliptic package</h3>
-
-<p>
-In Go 1, <a href="/pkg/crypto/elliptic/#Curve"><code>elliptic.Curve</code></a>
-has been made an interface to permit alternative implementations. The curve
-parameters have been moved to the
-<a href="/pkg/crypto/elliptic/#CurveParams"><code>elliptic.CurveParams</code></a>
-structure.
-</p>
-
-<p>
-<em>Updating</em>:
-Existing users of <code>*elliptic.Curve</code> will need to change to
-simply <code>elliptic.Curve</code>. Calls to <code>Marshal</code>,
-<code>Unmarshal</code> and <code>GenerateKey</code> are now functions
-in <code>crypto/elliptic</code> that take an <code>elliptic.Curve</code>
-as their first argument.
-</p>
-
-<h3 id="crypto_hmac">The crypto/hmac package</h3>
-
-<p>
-In Go 1, the hash-specific functions, such as <code>hmac.NewMD5</code>, have
-been removed from <code>crypto/hmac</code>. Instead, <code>hmac.New</code> takes
-a function that returns a <code>hash.Hash</code>, such as <code>md5.New</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will perform the needed changes.
-</p>
-
-<h3 id="crypto_x509">The crypto/x509 package</h3>
-
-<p>
-In Go 1, the
-<a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
-function and
-<a href="/pkg/crypto/x509/#Certificate.CreateCRL"><code>CreateCRL</code></a>
-method in <code>crypto/x509</code> have been altered to take an
-<code>interface{}</code> where they previously took a <code>*rsa.PublicKey</code>
-or <code>*rsa.PrivateKey</code>. This will allow other public key algorithms
-to be implemented in the future.
-</p>
-
-<p>
-<em>Updating</em>:
-No changes will be needed.
-</p>
-
-<h3 id="encoding_binary">The encoding/binary package</h3>
-
-<p>
-In Go 1, the <code>binary.TotalSize</code> function has been replaced by
-<a href="/pkg/encoding/binary/#Size"><code>Size</code></a>,
-which takes an <code>interface{}</code> argument rather than
-a <code>reflect.Value</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="encoding_xml">The encoding/xml package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/encoding/xml/"><code>xml</code></a> package
-has been brought closer in design to the other marshaling packages such
-as <a href="/pkg/encoding/gob/"><code>encoding/gob</code></a>.
-</p>
-
-<p>
-The old <code>Parser</code> type is renamed
-<a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> and has a new
-<a href="/pkg/encoding/xml/#Decoder.Decode"><code>Decode</code></a> method. An
-<a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a> type was also introduced.
-</p>
-
-<p>
-The functions <a href="/pkg/encoding/xml/#Marshal"><code>Marshal</code></a>
-and <a href="/pkg/encoding/xml/#Unmarshal"><code>Unmarshal</code></a>
-work with <code>[]byte</code> values now. To work with streams,
-use the new <a href="/pkg/encoding/xml/#Encoder"><code>Encoder</code></a>
-and <a href="/pkg/encoding/xml/#Decoder"><code>Decoder</code></a> types.
-</p>
-
-<p>
-When marshaling or unmarshaling values, the format of supported flags in
-field tags has changed to be closer to the
-<a href="/pkg/encoding/json"><code>json</code></a> package
-(<code>`xml:"name,flag"`</code>). The matching done between field tags, field
-names, and the XML attribute and element names is now case-sensitive.
-The <code>XMLName</code> field tag, if present, must also match the name
-of the XML element being marshaled.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update most uses of the package except for some calls to
-<code>Unmarshal</code>. Special care must be taken with field tags,
-since the fix tool will not update them and if not fixed by hand they will
-misbehave silently in some cases. For example, the old
-<code>"attr"</code> is now written <code>",attr"</code> while plain
-<code>"attr"</code> remains valid but with a different meaning.
-</p>
-
-<h3 id="expvar">The expvar package</h3>
-
-<p>
-In Go 1, the <code>RemoveAll</code> function has been removed.
-The <code>Iter</code> function and Iter method on <code>*Map</code> have
-been replaced by
-<a href="/pkg/expvar/#Do"><code>Do</code></a>
-and
-<a href="/pkg/expvar/#Map.Do"><code>(*Map).Do</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Most code using <code>expvar</code> will not need changing. The rare code that used
-<code>Iter</code> can be updated to pass a closure to <code>Do</code> to achieve the same effect.
-</p>
-
-<h3 id="flag">The flag package</h3>
-
-<p>
-In Go 1, the interface <a href="/pkg/flag/#Value"><code>flag.Value</code></a> has changed slightly.
-The <code>Set</code> method now returns an <code>error</code> instead of
-a <code>bool</code> to indicate success or failure.
-</p>
-
-<p>
-There is also a new kind of flag, <code>Duration</code>, to support argument
-values specifying time intervals.
-Values for such flags must be given units, just as <code>time.Duration</code>
-formats them: <code>10s</code>, <code>1h30m</code>, etc.
-</p>
-
-{{code "/doc/progs/go1.go" `/timeout/`}}
-
-<p>
-<em>Updating</em>:
-Programs that implement their own flags will need minor manual fixes to update their
-<code>Set</code> methods.
-The <code>Duration</code> flag is new and affects no existing code.
-</p>
-
-
-<h3 id="go">The go/* packages</h3>
-
-<p>
-Several packages under <code>go</code> have slightly revised APIs.
-</p>
-
-<p>
-A concrete <code>Mode</code> type was introduced for configuration mode flags
-in the packages
-<a href="/pkg/go/scanner/"><code>go/scanner</code></a>,
-<a href="/pkg/go/parser/"><code>go/parser</code></a>,
-<a href="/pkg/go/printer/"><code>go/printer</code></a>, and
-<a href="/pkg/go/doc/"><code>go/doc</code></a>.
-</p>
-
-<p>
-The modes <code>AllowIllegalChars</code> and <code>InsertSemis</code> have been removed
-from the <a href="/pkg/go/scanner/"><code>go/scanner</code></a> package. They were mostly
-useful for scanning text other then Go source files. Instead, the
-<a href="/pkg/text/scanner/"><code>text/scanner</code></a> package should be used
-for that purpose.
-</p>
-
-<p>
-The <a href="/pkg/go/scanner/#ErrorHandler"><code>ErrorHandler</code></a> provided
-to the scanner's <a href="/pkg/go/scanner/#Scanner.Init"><code>Init</code></a> method is
-now simply a function rather than an interface. The <code>ErrorVector</code> type has
-been removed in favor of the (existing) <a href="/pkg/go/scanner/#ErrorList"><code>ErrorList</code></a>
-type, and the <code>ErrorVector</code> methods have been migrated. Instead of embedding
-an <code>ErrorVector</code> in a client of the scanner, now a client should maintain
-an <code>ErrorList</code>.
-</p>
-
-<p>
-The set of parse functions provided by the <a href="/pkg/go/parser/"><code>go/parser</code></a>
-package has been reduced to the primary parse function
-<a href="/pkg/go/parser/#ParseFile"><code>ParseFile</code></a>, and a couple of
-convenience functions <a href="/pkg/go/parser/#ParseDir"><code>ParseDir</code></a>
-and <a href="/pkg/go/parser/#ParseExpr"><code>ParseExpr</code></a>.
-</p>
-
-<p>
-The <a href="/pkg/go/printer/"><code>go/printer</code></a> package supports an additional
-configuration mode <a href="/pkg/go/printer/#Mode"><code>SourcePos</code></a>;
-if set, the printer will emit <code>//line</code> comments such that the generated
-output contains the original source code position information. The new type
-<a href="/pkg/go/printer/#CommentedNode"><code>CommentedNode</code></a> can be
-used to provide comments associated with an arbitrary
-<a href="/pkg/go/ast/#Node"><code>ast.Node</code></a> (until now only
-<a href="/pkg/go/ast/#File"><code>ast.File</code></a> carried comment information).
-</p>
-
-<p>
-The type names of the <a href="/pkg/go/doc/"><code>go/doc</code></a> package have been
-streamlined by removing the <code>Doc</code> suffix: <code>PackageDoc</code>
-is now <code>Package</code>, <code>ValueDoc</code> is <code>Value</code>, etc.
-Also, all types now consistently have a <code>Name</code> field (or <code>Names</code>,
-in the case of type <code>Value</code>) and <code>Type.Factories</code> has become
-<code>Type.Funcs</code>.
-Instead of calling <code>doc.NewPackageDoc(pkg, importpath)</code>,
-documentation for a package is created with:
-</p>
-
-<pre>
-    doc.New(pkg, importpath, mode)
-</pre>
-
-<p>
-where the new <code>mode</code> parameter specifies the operation mode:
-if set to <a href="/pkg/go/doc/#AllDecls"><code>AllDecls</code></a>, all declarations
-(not just exported ones) are considered.
-The function <code>NewFileDoc</code> was removed, and the function
-<code>CommentText</code> has become the method
-<a href="/pkg/go/ast/#CommentGroup.Text"><code>Text</code></a> of
-<a href="/pkg/go/ast/#CommentGroup"><code>ast.CommentGroup</code></a>.
-</p>
-
-<p>
-In package <a href="/pkg/go/token/"><code>go/token</code></a>, the
-<a href="/pkg/go/token/#FileSet"><code>token.FileSet</code></a> method <code>Files</code>
-(which originally returned a channel of <code>*token.File</code>s) has been replaced
-with the iterator <a href="/pkg/go/token/#FileSet.Iterate"><code>Iterate</code></a> that
-accepts a function argument instead.
-</p>
-
-<p>
-In package <a href="/pkg/go/build/"><code>go/build</code></a>, the API
-has been nearly completely replaced.
-The package still computes Go package information
-but it does not run the build: the <code>Cmd</code> and <code>Script</code>
-types are gone.
-(To build code, use the new
-<a href="/cmd/go/"><code>go</code></a> command instead.)
-The <code>DirInfo</code> type is now named
-<a href="/pkg/go/build/#Package"><code>Package</code></a>.
-<code>FindTree</code> and <code>ScanDir</code> are replaced by
-<a href="/pkg/go/build/#Import"><code>Import</code></a>
-and
-<a href="/pkg/go/build/#ImportDir"><code>ImportDir</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses packages in <code>go</code> will have to be updated by hand; the
-compiler will reject incorrect uses. Templates used in conjunction with any of the
-<code>go/doc</code> types may need manual fixes; the renamed fields will lead
-to run-time errors.
-</p>
-
-<h3 id="hash">The hash package</h3>
-
-<p>
-In Go 1, the definition of <a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> includes
-a new method, <code>BlockSize</code>.  This new method is used primarily in the
-cryptographic libraries.
-</p>
-
-<p>
-The <code>Sum</code> method of the
-<a href="/pkg/hash/#Hash"><code>hash.Hash</code></a> interface now takes a
-<code>[]byte</code> argument, to which the hash value will be appended.
-The previous behavior can be recreated by adding a <code>nil</code> argument to the call.
-</p>
-
-<p>
-<em>Updating</em>:
-Existing implementations of <code>hash.Hash</code> will need to add a
-<code>BlockSize</code> method.  Hashes that process the input one byte at
-a time can implement <code>BlockSize</code> to return 1.
-Running <code>go</code> <code>fix</code> will update calls to the <code>Sum</code> methods of the various
-implementations of <code>hash.Hash</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Since the package's functionality is new, no updating is necessary.
-</p>
-
-<h3 id="http">The http package</h3>
-
-<p>
-In Go 1 the <a href="/pkg/net/http/"><code>http</code></a> package is refactored,
-putting some of the utilities into a
-<a href="/pkg/net/http/httputil/"><code>httputil</code></a> subdirectory.
-These pieces are only rarely needed by HTTP clients.
-The affected items are:
-</p>
-
-<ul>
-<li>ClientConn</li>
-<li>DumpRequest</li>
-<li>DumpRequestOut</li>
-<li>DumpResponse</li>
-<li>NewChunkedReader</li>
-<li>NewChunkedWriter</li>
-<li>NewClientConn</li>
-<li>NewProxyClientConn</li>
-<li>NewServerConn</li>
-<li>NewSingleHostReverseProxy</li>
-<li>ReverseProxy</li>
-<li>ServerConn</li>
-</ul>
-
-<p>
-The <code>Request.RawURL</code> field has been removed; it was a
-historical artifact.
-</p>
-
-<p>
-The <code>Handle</code> and <code>HandleFunc</code>
-functions, and the similarly-named methods of <code>ServeMux</code>,
-now panic if an attempt is made to register the same pattern twice.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update the few programs that are affected except for
-uses of <code>RawURL</code>, which must be fixed by hand.
-</p>
-
-<h3 id="image">The image package</h3>
-
-<p>
-The <a href="/pkg/image/"><code>image</code></a> package has had a number of
-minor changes, rearrangements and renamings.
-</p>
-
-<p>
-Most of the color handling code has been moved into its own package,
-<a href="/pkg/image/color/"><code>image/color</code></a>.
-For the elements that moved, a symmetry arises; for instance,
-each pixel of an
-<a href="/pkg/image/#RGBA"><code>image.RGBA</code></a>
-is a
-<a href="/pkg/image/color/#RGBA"><code>color.RGBA</code></a>.
-</p>
-
-<p>
-The old <code>image/ycbcr</code> package has been folded, with some
-renamings, into the
-<a href="/pkg/image/"><code>image</code></a>
-and
-<a href="/pkg/image/color/"><code>image/color</code></a>
-packages.
-</p>
-
-<p>
-The old <code>image.ColorImage</code> type is still in the <code>image</code>
-package but has been renamed
-<a href="/pkg/image/#Uniform"><code>image.Uniform</code></a>,
-while <code>image.Tiled</code> has been removed.
-</p>
-
-<p>
-This table lists the renamings.
-</p>
-
-<table class="codetable" frame="border" summary="image renames">
-<colgroup align="left" width="50%"></colgroup>
-<colgroup align="left" width="50%"></colgroup>
-<tr>
-<th align="left">Old</th>
-<th align="left">New</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.Color</td> <td>color.Color</td></tr>
-<tr><td>image.ColorModel</td> <td>color.Model</td></tr>
-<tr><td>image.ColorModelFunc</td> <td>color.ModelFunc</td></tr>
-<tr><td>image.PalettedColorModel</td> <td>color.Palette</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.RGBAColor</td> <td>color.RGBA</td></tr>
-<tr><td>image.RGBA64Color</td> <td>color.RGBA64</td></tr>
-<tr><td>image.NRGBAColor</td> <td>color.NRGBA</td></tr>
-<tr><td>image.NRGBA64Color</td> <td>color.NRGBA64</td></tr>
-<tr><td>image.AlphaColor</td> <td>color.Alpha</td></tr>
-<tr><td>image.Alpha16Color</td> <td>color.Alpha16</td></tr>
-<tr><td>image.GrayColor</td> <td>color.Gray</td></tr>
-<tr><td>image.Gray16Color</td> <td>color.Gray16</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.RGBAColorModel</td> <td>color.RGBAModel</td></tr>
-<tr><td>image.RGBA64ColorModel</td> <td>color.RGBA64Model</td></tr>
-<tr><td>image.NRGBAColorModel</td> <td>color.NRGBAModel</td></tr>
-<tr><td>image.NRGBA64ColorModel</td> <td>color.NRGBA64Model</td></tr>
-<tr><td>image.AlphaColorModel</td> <td>color.AlphaModel</td></tr>
-<tr><td>image.Alpha16ColorModel</td> <td>color.Alpha16Model</td></tr>
-<tr><td>image.GrayColorModel</td> <td>color.GrayModel</td></tr>
-<tr><td>image.Gray16ColorModel</td> <td>color.Gray16Model</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>ycbcr.RGBToYCbCr</td> <td>color.RGBToYCbCr</td></tr>
-<tr><td>ycbcr.YCbCrToRGB</td> <td>color.YCbCrToRGB</td></tr>
-<tr><td>ycbcr.YCbCrColorModel</td> <td>color.YCbCrModel</td></tr>
-<tr><td>ycbcr.YCbCrColor</td> <td>color.YCbCr</td></tr>
-<tr><td>ycbcr.YCbCr</td> <td>image.YCbCr</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>ycbcr.SubsampleRatio444</td> <td>image.YCbCrSubsampleRatio444</td></tr>
-<tr><td>ycbcr.SubsampleRatio422</td> <td>image.YCbCrSubsampleRatio422</td></tr>
-<tr><td>ycbcr.SubsampleRatio420</td> <td>image.YCbCrSubsampleRatio420</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>image.ColorImage</td> <td>image.Uniform</td></tr>
-</table>
-
-<p>
-The image package's <code>New</code> functions
-(<a href="/pkg/image/#NewRGBA"><code>NewRGBA</code></a>,
-<a href="/pkg/image/#NewRGBA64"><code>NewRGBA64</code></a>, etc.)
-take an <a href="/pkg/image/#Rectangle"><code>image.Rectangle</code></a> as an argument
-instead of four integers.
-</p>
-
-<p>
-Finally, there are new predefined <code>color.Color</code> variables
-<a href="/pkg/image/color/#Black"><code>color.Black</code></a>,
-<a href="/pkg/image/color/#White"><code>color.White</code></a>,
-<a href="/pkg/image/color/#Opaque"><code>color.Opaque</code></a>
-and
-<a href="/pkg/image/color/#Transparent"><code>color.Transparent</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-</p>
-
-<h3 id="log_syslog">The log/syslog package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/log/syslog/#NewLogger"><code>syslog.NewLogger</code></a>
-function returns an error as well as a <code>log.Logger</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="mime">The mime package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/mime/#FormatMediaType"><code>FormatMediaType</code></a> function
-of the <code>mime</code> package has  been simplified to make it
-consistent with
-<a href="/pkg/mime/#ParseMediaType"><code>ParseMediaType</code></a>.
-It now takes <code>"text/html"</code> rather than <code>"text"</code> and <code>"html"</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-What little code is affected will be caught by the compiler and must be updated by hand.
-</p>
-
-<h3 id="net">The net package</h3>
-
-<p>
-In Go 1, the various <code>SetTimeout</code>,
-<code>SetReadTimeout</code>, and <code>SetWriteTimeout</code> methods
-have been replaced with
-<a href="/pkg/net/#IPConn.SetDeadline"><code>SetDeadline</code></a>,
-<a href="/pkg/net/#IPConn.SetReadDeadline"><code>SetReadDeadline</code></a>, and
-<a href="/pkg/net/#IPConn.SetWriteDeadline"><code>SetWriteDeadline</code></a>,
-respectively.  Rather than taking a timeout value in nanoseconds that
-apply to any activity on the connection, the new methods set an
-absolute deadline (as a <code>time.Time</code> value) after which
-reads and writes will time out and no longer block.
-</p>
-
-<p>
-There are also new functions
-<a href="/pkg/net/#DialTimeout"><code>net.DialTimeout</code></a>
-to simplify timing out dialing a network address and
-<a href="/pkg/net/#ListenMulticastUDP"><code>net.ListenMulticastUDP</code></a>
-to allow multicast UDP to listen concurrently across multiple listeners.
-The <code>net.ListenMulticastUDP</code> function replaces the old
-<code>JoinGroup</code> and <code>LeaveGroup</code> methods.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses the old methods will fail to compile and must be updated by hand.
-The semantic change makes it difficult for the fix tool to update automatically.
-</p>
-
-<h3 id="os">The os package</h3>
-
-<p>
-The <code>Time</code> function has been removed; callers should use
-the <a href="/pkg/time/#Time"><code>Time</code></a> type from the
-<code>time</code> package.
-</p>
-
-<p>
-The <code>Exec</code> function has been removed; callers should use
-<code>Exec</code> from the <code>syscall</code> package, where available.
-</p>
-
-<p>
-The <code>ShellExpand</code> function has been renamed to <a
-href="/pkg/os/#ExpandEnv"><code>ExpandEnv</code></a>.
-</p>
-
-<p>
-The <a href="/pkg/os/#NewFile"><code>NewFile</code></a> function
-now takes a <code>uintptr</code> fd, instead of an <code>int</code>.
-The <a href="/pkg/os/#File.Fd"><code>Fd</code></a> method on files now
-also returns a <code>uintptr</code>.
-</p>
-
-<p>
-There are no longer error constants such as <code>EINVAL</code>
-in the <code>os</code> package, since the set of values varied with
-the underlying operating system. There are new portable functions like
-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>
-to test common error properties, plus a few new error values
-with more Go-like names, such as
-<a href="/pkg/os/#ErrPermission"><code>ErrPermission</code></a>
-and
-<a href="/pkg/os/#ErrNotExist"><code>ErrNotExist</code></a>.
-</p>
-
-<p>
-The <code>Getenverror</code> function has been removed. To distinguish
-between a non-existent environment variable and an empty string,
-use <a href="/pkg/os/#Environ"><code>os.Environ</code></a> or
-<a href="/pkg/syscall/#Getenv"><code>syscall.Getenv</code></a>.
-</p>
-
-
-<p>
-The <a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a> method has
-dropped its option argument and the associated constants are gone
-from the package.
-Also, the function <code>Wait</code> is gone; only the method of
-the <code>Process</code> type persists.
-</p>
-
-<p>
-The <code>Waitmsg</code> type returned by
-<a href="/pkg/os/#Process.Wait"><code>Process.Wait</code></a>
-has been replaced with a more portable
-<a href="/pkg/os/#ProcessState"><code>ProcessState</code></a>
-type with accessor methods to recover information about the
-process.
-Because of changes to <code>Wait</code>, the <code>ProcessState</code>
-value always describes an exited process.
-Portability concerns simplified the interface in other ways, but the values returned by the
-<a href="/pkg/os/#ProcessState.Sys"><code>ProcessState.Sys</code></a> and
-<a href="/pkg/os/#ProcessState.SysUsage"><code>ProcessState.SysUsage</code></a>
-methods can be type-asserted to underlying system-specific data structures such as
-<a href="/pkg/syscall/#WaitStatus"><code>syscall.WaitStatus</code></a> and
-<a href="/pkg/syscall/#Rusage"><code>syscall.Rusage</code></a> on Unix.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will drop a zero argument to <code>Process.Wait</code>.
-All other changes will be caught by the compiler and must be updated by hand.
-</p>
-
-<h4 id="os_fileinfo">The os.FileInfo type</h4>
-
-<p>
-Go 1 redefines the <a href="/pkg/os/#FileInfo"><code>os.FileInfo</code></a> type,
-changing it from a struct to an interface:
-</p>
-
-<pre>
-    type FileInfo interface {
-        Name() string       // base name of the file
-        Size() int64        // length in bytes
-        Mode() FileMode     // file mode bits
-        ModTime() time.Time // modification time
-        IsDir() bool        // abbreviation for Mode().IsDir()
-        Sys() interface{}   // underlying data source (can return nil)
-    }
-</pre>
-
-<p>
-The file mode information has been moved into a subtype called
-<a href="/pkg/os/#FileMode"><code>os.FileMode</code></a>,
-a simple integer type with <code>IsDir</code>, <code>Perm</code>, and <code>String</code>
-methods.
-</p>
-
-<p>
-The system-specific details of file modes and properties such as (on Unix)
-i-number have been removed from <code>FileInfo</code> altogether.
-Instead, each operating system's <code>os</code> package provides an
-implementation of the <code>FileInfo</code> interface, which
-has a <code>Sys</code> method that returns the
-system-specific representation of file metadata.
-For instance, to discover the i-number of a file on a Unix system, unpack
-the <code>FileInfo</code> like this:
-</p>
-
-<pre>
-    fi, err := os.Stat("hello.go")
-    if err != nil {
-        log.Fatal(err)
-    }
-    // Check that it's a Unix file.
-    unixStat, ok := fi.Sys().(*syscall.Stat_t)
-    if !ok {
-        log.Fatal("hello.go: not a Unix file")
-    }
-    fmt.Printf("file i-number: %d\n", unixStat.Ino)
-</pre>
-
-<p>
-Assuming (which is unwise) that <code>"hello.go"</code> is a Unix file,
-the i-number expression could be contracted to
-</p>
-
-<pre>
-    fi.Sys().(*syscall.Stat_t).Ino
-</pre>
-
-<p>
-The vast majority of uses of <code>FileInfo</code> need only the methods
-of the standard interface.
-</p>
-
-<p>
-The <code>os</code> package no longer contains wrappers for the POSIX errors
-such as <code>ENOENT</code>.
-For the few programs that need to verify particular error conditions, there are
-now the boolean functions
-<a href="/pkg/os/#IsExist"><code>IsExist</code></a>,
-<a href="/pkg/os/#IsNotExist"><code>IsNotExist</code></a>
-and
-<a href="/pkg/os/#IsPermission"><code>IsPermission</code></a>.
-</p>
-
-{{code "/doc/progs/go1.go" `/os\.Open/` `/}/`}}
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update code that uses the old equivalent of the current <code>os.FileInfo</code>
-and <code>os.FileMode</code> API.
-Code that needs system-specific file details will need to be updated by hand.
-Code that uses the old POSIX error values from the <code>os</code> package
-will fail to compile and will also need to be updated by hand.
-</p>
-
-<h3 id="os_signal">The os/signal package</h3>
-
-<p>
-The <code>os/signal</code> package in Go 1 replaces the
-<code>Incoming</code> function, which returned a channel
-that received all incoming signals,
-with the selective <code>Notify</code> function, which asks
-for delivery of specific signals on an existing channel.
-</p>
-
-<p>
-<em>Updating</em>:
-Code must be updated by hand.
-A literal translation of
-</p>
-<pre>
-c := signal.Incoming()
-</pre>
-<p>
-is
-</p>
-<pre>
-c := make(chan os.Signal, 1)
-signal.Notify(c) // ask for all signals
-</pre>
-<p>
-but most code should list the specific signals it wants to handle instead:
-</p>
-<pre>
-c := make(chan os.Signal, 1)
-signal.Notify(c, syscall.SIGHUP, syscall.SIGQUIT)
-</pre>
-
-<h3 id="path_filepath">The path/filepath package</h3>
-
-<p>
-In Go 1, the <a href="/pkg/path/filepath/#Walk"><code>Walk</code></a> function of the
-<code>path/filepath</code> package
-has been changed to take a function value of type
-<a href="/pkg/path/filepath/#WalkFunc"><code>WalkFunc</code></a>
-instead of a <code>Visitor</code> interface value.
-<code>WalkFunc</code> unifies the handling of both files and directories.
-</p>
-
-<pre>
-    type WalkFunc func(path string, info os.FileInfo, err error) error
-</pre>
-
-<p>
-The <code>WalkFunc</code> function will be called even for files or directories that could not be opened;
-in such cases the error argument will describe the failure.
-If a directory's contents are to be skipped,
-the function should return the value <a href="/pkg/path/filepath/#pkg-variables"><code>filepath.SkipDir</code></a>
-</p>
-
-{{code "/doc/progs/go1.go" `/STARTWALK/` `/ENDWALK/`}}
-
-<p>
-<em>Updating</em>:
-The change simplifies most code but has subtle consequences, so affected programs
-will need to be updated by hand.
-The compiler will catch code using the old interface.
-</p>
-
-<h3 id="regexp">The regexp package</h3>
-
-<p>
-The <a href="/pkg/regexp/"><code>regexp</code></a> package has been rewritten.
-It has the same interface but the specification of the regular expressions
-it supports has changed from the old "egrep" form to that of
-<a href="https://code.google.com/p/re2/">RE2</a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses the package should have its regular expressions checked by hand.
-</p>
-
-<h3 id="runtime">The runtime package</h3>
-
-<p>
-In Go 1, much of the API exported by package
-<code>runtime</code> has been removed in favor of
-functionality provided by other packages.
-Code using the <code>runtime.Type</code> interface
-or its specific concrete type implementations should
-now use package <a href="/pkg/reflect/"><code>reflect</code></a>.
-Code using <code>runtime.Semacquire</code> or <code>runtime.Semrelease</code>
-should use channels or the abstractions in package <a href="/pkg/sync/"><code>sync</code></a>.
-The <code>runtime.Alloc</code>, <code>runtime.Free</code>,
-and <code>runtime.Lookup</code> functions, an unsafe API created for
-debugging the memory allocator, have no replacement.
-</p>
-
-<p>
-Before, <code>runtime.MemStats</code> was a global variable holding
-statistics about memory allocation, and calls to <code>runtime.UpdateMemStats</code>
-ensured that it was up to date.
-In Go 1, <code>runtime.MemStats</code> is a struct type, and code should use
-<a href="/pkg/runtime/#ReadMemStats"><code>runtime.ReadMemStats</code></a>
-to obtain the current statistics.
-</p>
-
-<p>
-The package adds a new function,
-<a href="/pkg/runtime/#NumCPU"><code>runtime.NumCPU</code></a>, that returns the number of CPUs available
-for parallel execution, as reported by the operating system kernel.
-Its value can inform the setting of <code>GOMAXPROCS</code>.
-The <code>runtime.Cgocalls</code> and <code>runtime.Goroutines</code> functions
-have been renamed to <code>runtime.NumCgoCall</code> and <code>runtime.NumGoroutine</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update code for the function renamings.
-Other code will need to be updated by hand.
-</p>
-
-<h3 id="strconv">The strconv package</h3>
-
-<p>
-In Go 1, the
-<a href="/pkg/strconv/"><code>strconv</code></a>
-package has been significantly reworked to make it more Go-like and less C-like,
-although <code>Atoi</code> lives on (it's similar to
-<code>int(ParseInt(x, 10, 0))</code>, as does
-<code>Itoa(x)</code> (<code>FormatInt(int64(x), 10)</code>).
-There are also new variants of some of the functions that append to byte slices rather than
-return strings, to allow control over allocation.
-</p>
-
-<p>
-This table summarizes the renamings; see the
-<a href="/pkg/strconv/">package documentation</a>
-for full details.
-</p>
-
-<table class="codetable" frame="border" summary="strconv renames">
-<colgroup align="left" width="50%"></colgroup>
-<colgroup align="left" width="50%"></colgroup>
-<tr>
-<th align="left">Old call</th>
-<th align="left">New call</th>
-</tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atob(x)</td> <td>ParseBool(x)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atof32(x)</td> <td>ParseFloat(x, 32)§</td></tr>
-<tr><td>Atof64(x)</td> <td>ParseFloat(x, 64)</td></tr>
-<tr><td>AtofN(x, n)</td> <td>ParseFloat(x, n)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atoi(x)</td> <td>Atoi(x)</td></tr>
-<tr><td>Atoi(x)</td> <td>ParseInt(x, 10, 0)§</td></tr>
-<tr><td>Atoi64(x)</td> <td>ParseInt(x, 10, 64)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Atoui(x)</td> <td>ParseUint(x, 10, 0)§</td></tr>
-<tr><td>Atoui64(x)</td> <td>ParseUint(x, 10, 64)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Btoi64(x, b)</td> <td>ParseInt(x, b, 64)</td></tr>
-<tr><td>Btoui64(x, b)</td> <td>ParseUint(x, b, 64)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Btoa(x)</td> <td>FormatBool(x)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Ftoa32(x, f, p)</td> <td>FormatFloat(float64(x), f, p, 32)</td></tr>
-<tr><td>Ftoa64(x, f, p)</td> <td>FormatFloat(x, f, p, 64)</td></tr>
-<tr><td>FtoaN(x, f, p, n)</td> <td>FormatFloat(x, f, p, n)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Itoa(x)</td> <td>Itoa(x)</td></tr>
-<tr><td>Itoa(x)</td> <td>FormatInt(int64(x), 10)</td></tr>
-<tr><td>Itoa64(x)</td> <td>FormatInt(x, 10)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Itob(x, b)</td> <td>FormatInt(int64(x), b)</td></tr>
-<tr><td>Itob64(x, b)</td> <td>FormatInt(x, b)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Uitoa(x)</td> <td>FormatUint(uint64(x), 10)</td></tr>
-<tr><td>Uitoa64(x)</td> <td>FormatUint(x, 10)</td></tr>
-<tr>
-<td colspan="2"><hr></td>
-</tr>
-<tr><td>Uitob(x, b)</td> <td>FormatUint(uint64(x), b)</td></tr>
-<tr><td>Uitob64(x, b)</td> <td>FormatUint(x, b)</td></tr>
-</table>
-
-<p>
-<em>Updating</em>:
-Running <code>go</code> <code>fix</code> will update almost all code affected by the change.
-<br>
-§ <code>Atoi</code> persists but <code>Atoui</code> and <code>Atof32</code> do not, so
-they may require
-a cast that must be added by hand; the <code>go</code> <code>fix</code> tool will warn about it.
-</p>
-
-
-<h3 id="templates">The template packages</h3>
-
-<p>
-The <code>template</code> and <code>exp/template/html</code> packages have moved to
-<a href="/pkg/text/template/"><code>text/template</code></a> and
-<a href="/pkg/html/template/"><code>html/template</code></a>.
-More significant, the interface to these packages has been simplified.
-The template language is the same, but the concept of "template set" is gone
-and the functions and methods of the packages have changed accordingly,
-often by elimination.
-</p>
-
-<p>
-Instead of sets, a <code>Template</code> object
-may contain multiple named template definitions,
-in effect constructing
-name spaces for template invocation.
-A template can invoke any other template associated with it, but only those
-templates associated with it.
-The simplest way to associate templates is to parse them together, something
-made easier with the new structure of the packages.
-</p>
-
-<p>
-<em>Updating</em>:
-The imports will be updated by fix tool.
-Single-template uses will be otherwise be largely unaffected.
-Code that uses multiple templates in concert will need to be updated by hand.
-The <a href="/pkg/text/template/#pkg-examples">examples</a> in
-the documentation for <code>text/template</code> can provide guidance.
-</p>
-
-<h3 id="testing">The testing package</h3>
-
-<p>
-The testing package has a type, <code>B</code>, passed as an argument to benchmark functions.
-In Go 1, <code>B</code> has new methods, analogous to those of <code>T</code>, enabling
-logging and failure reporting.
-</p>
-
-{{code "/doc/progs/go1.go" `/func.*Benchmark/` `/^}/`}}
-
-<p>
-<em>Updating</em>:
-Existing code is unaffected, although benchmarks that use <code>println</code>
-or <code>panic</code> should be updated to use the new methods.
-</p>
-
-<h3 id="testing_script">The testing/script package</h3>
-
-<p>
-The testing/script package has been deleted. It was a dreg.
-</p>
-
-<p>
-<em>Updating</em>:
-No code is likely to be affected.
-</p>
-
-<h3 id="unsafe">The unsafe package</h3>
-
-<p>
-In Go 1, the functions
-<code>unsafe.Typeof</code>, <code>unsafe.Reflect</code>,
-<code>unsafe.Unreflect</code>, <code>unsafe.New</code>, and
-<code>unsafe.NewArray</code> have been removed;
-they duplicated safer functionality provided by
-package <a href="/pkg/reflect/"><code>reflect</code></a>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code using these functions must be rewritten to use
-package <a href="/pkg/reflect/"><code>reflect</code></a>.
-The changes to <a href="/change/2646dc956207">encoding/gob</a> and the <a href="https://code.google.com/p/goprotobuf/source/detail?r=5340ad310031">protocol buffer library</a>
-may be helpful as examples.
-</p>
-
-<h3 id="url">The url package</h3>
-
-<p>
-In Go 1 several fields from the <a href="/pkg/net/url/#URL"><code>url.URL</code></a> type
-were removed or replaced.
-</p>
-
-<p>
-The <a href="/pkg/net/url/#URL.String"><code>String</code></a> method now
-predictably rebuilds an encoded URL string using all of <code>URL</code>'s
-fields as necessary. The resulting string will also no longer have
-passwords escaped.
-</p>
-
-<p>
-The <code>Raw</code> field has been removed. In most cases the <code>String</code>
-method may be used in its place.
-</p>
-
-<p>
-The old <code>RawUserinfo</code> field is replaced by the <code>User</code>
-field, of type <a href="/pkg/net/url/#Userinfo"><code>*net.Userinfo</code></a>.
-Values of this type may be created using the new <a href="/pkg/net/url/#User"><code>net.User</code></a>
-and <a href="/pkg/net/url/#UserPassword"><code>net.UserPassword</code></a>
-functions. The <code>EscapeUserinfo</code> and <code>UnescapeUserinfo</code>
-functions are also gone.
-</p>
-
-<p>
-The <code>RawAuthority</code> field has been removed. The same information is
-available in the <code>Host</code> and <code>User</code> fields.
-</p>
-
-<p>
-The <code>RawPath</code> field and the <code>EncodedPath</code> method have
-been removed. The path information in rooted URLs (with a slash following the
-schema) is now available only in decoded form in the <code>Path</code> field.
-Occasionally, the encoded data may be required to obtain information that
-was lost in the decoding process. These cases must be handled by accessing
-the data the URL was built from.
-</p>
-
-<p>
-URLs with non-rooted paths, such as <code>"mailto:dev@golang.org?subject=Hi"</code>,
-are also handled differently. The <code>OpaquePath</code> boolean field has been
-removed and a new <code>Opaque</code> string field introduced to hold the encoded
-path for such URLs. In Go 1, the cited URL parses as:
-</p>
-
-<pre>
-    URL{
-        Scheme: "mailto",
-        Opaque: "dev@golang.org",
-        RawQuery: "subject=Hi",
-    }
-</pre>
-
-<p>
-A new <a href="/pkg/net/url/#URL.RequestURI"><code>RequestURI</code></a> method was
-added to <code>URL</code>.
-</p>
-
-<p>
-The <code>ParseWithReference</code> function has been renamed to <code>ParseWithFragment</code>.
-</p>
-
-<p>
-<em>Updating</em>:
-Code that uses the old fields will fail to compile and must be updated by hand.
-The semantic changes make it difficult for the fix tool to update automatically.
-</p>
-
-<h2 id="cmd_go">The go command</h2>
-
-<p>
-Go 1 introduces the <a href="/cmd/go/">go command</a>, a tool for fetching,
-building, and installing Go packages and commands. The <code>go</code> command
-does away with makefiles, instead using Go source code to find dependencies and
-determine build conditions. Most existing Go programs will no longer require
-makefiles to be built.
-</p>
-
-<p>
-See <a href="/doc/code.html">How to Write Go Code</a> for a primer on the
-<code>go</code> command and the <a href="/cmd/go/">go command documentation</a>
-for the full details.
-</p>
-
-<p>
-<em>Updating</em>:
-Projects that depend on the Go project's old makefile-based build
-infrastructure (<code>Make.pkg</code>, <code>Make.cmd</code>, and so on) should
-switch to using the <code>go</code> command for building Go code and, if
-necessary, rewrite their makefiles to perform any auxiliary build tasks.
-</p>
-
-<h2 id="cmd_cgo">The cgo command</h2>
-
-<p>
-In Go 1, the <a href="/cmd/cgo">cgo command</a>
-uses a different <code>_cgo_export.h</code>
-file, which is generated for packages containing <code>//export</code> lines.
-The <code>_cgo_export.h</code> file now begins with the C preamble comment,
-so that exported function definitions can use types defined there.
-This has the effect of compiling the preamble multiple times, so a
-package using <code>//export</code> must not put function definitions
-or variable initializations in the C preamble.
-</p>
-
-<h2 id="releases">Packaged releases</h2>
-
-<p>
-One of the most significant changes associated with Go 1 is the availability
-of prepackaged, downloadable distributions.
-They are available for many combinations of architecture and operating system
-(including Windows) and the list will grow.
-Installation details are described on the
-<a href="/doc/install">Getting Started</a> page, while
-the distributions themselves are listed on the
-<a href="/dl/">downloads page</a>.
