_content/doc: remove html release notes

Now that the notes are in Markdown, we don't need the html files.

For golang/go#64169.

Change-Id: I25f0b636ed4101c38966a2b7d97ec5e5e3cb827e
Reviewed-on: https://go-review.googlesource.com/c/website/+/541975
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
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=jstmp