<!--{
        "Title": "Go 1.12 Release Notes",
        "Path":  "/doc/go1.12",
        "Template": true
}-->

<!--
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>
  ul li { margin: 0.5em 0; }
</style>

<h2 id="introduction">DRAFT RELEASE NOTES - Introduction to Go 1.12</h2>

<p>
  <strong>
    Go 1.12 is not yet released. These are work-in-progress
    release notes. Go 1.12 is expected to be released in February 2019.
  </strong>
</p>

<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>

<p>
  There is a <a href="https://golang.org/issue/27993"><strong>known issue</strong> in
  the garbage collector</a> that can cause rare crashes. It is being investigated.
  Please <a href="https://golang.org/issue/new">report</a> any issues you encounter.
</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+.
</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.
</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 install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
go vet -vettool=$(which shadow)
</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="https://golang.org/cmd/cgo/#hdr-Special_cases">cgo documentation</a>
	for more information.
</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, and
  <code>go</code> <code>mod</code> <code>tidy</code> sets it 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 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 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 help section of the ABI
  design document.
  <!-- TODO(austin): Link to the design doc. -->
</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.
</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>

<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 135395 -->
  On Linux, the Go runtime now releases memory back to the operating
  system only when the OS is under memory pressure. This is more
  efficient, but means a process's RSS (resident set size) won't
  decrease unless the OS is running out of memory.
</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>

<h2 id="library">Core library</h2>

<h3 id="tls_1_3">TLS 1.3</h3>

<p>
  Go 1.12 adds support in the <code>crypto/tls</code> package for TLS 1.3 as
  specified in <a href="https://www.rfc-editor.org/info/rfc8446">RFC 8446</a>.

  Programs that did not set an explicit <code>MaxVersion</code> in
  <a href="/pkg/crypto/tls/#Config"><code>Config</code></a> will automatically negotiate
  TLS 1.3 if available. 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.
</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 optimized assembly implementations. 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 now not 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="lib/time"><dt><a href="/pkg/lib/time/">lib/time</a></dt>
  <dd>
    <p><!-- CL 151299 -->
    The time zone database in <code>$GOROOT/lib/time/zoneinfo.zip</code> has been updated to version 2018g. Note that this ZIP file is only used if a time zone database is not provided by the operating system.
    </p>

</dl><!-- lib/time -->

<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/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>

</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 though 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>

</dl><!-- text/template -->

<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 -->
