<!--{
        "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 TODO.
  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>

<h3 id="freebsd">FreeBSD</h3>

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

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

<h3 id="windows">Windows</h3>

<p>
  TODO: status of ARM32 port?
</p>

<h3 id="aix">AIX</h3>

<p>
  TODO: status of AIX port?
</p>

<h3 id="hurd">Hurd</h3>

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

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

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

<h3 id="godoc">Godoc</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>

<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 147218: https://golang.org/cl/147218: cmd/asm: rename R18 to R18_PLATFORM on ARM64 -->
<!-- CL 116275: https://golang.org/cl/116275: cmd/compile: avoid string allocations when map key is struct or array literal -->
<!-- CL 142717: https://golang.org/cl/142717: cmd/compile: remove obsolete "safe" mode -->
<!-- CL 146058: https://golang.org/cl/146058: It is invalid to convert a nil unsafe.Pointer to uintptr and back, with arithmetic.: cmd/compile: assume unsafe pointer arithmetic generates non-nil results -->
<!-- CL 141977: https://golang.org/cl/141977: cmd/doc: add -all flag to print all documentation for package -->
<!-- CL 146898: https://golang.org/cl/146898: cmd/link, runtime: add initial cgo support for ppc64 -->
<!-- CL 60790: https://golang.org/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.: cmd/trace: add minimum mutator utilization (MMU) plot -->
<!-- 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 -->
      TODO: <a href="https://golang.org/cl/149297">https://golang.org/cl/149297</a>: make Reader.Peek invalidate Unreads
    </p>

</dl><!-- bufio -->

<dl id="build"><dt><a href="/pkg/build/">build</a></dt>
  <dd>
    <p><!-- CL 61511 -->
      TODO: <a href="https://golang.org/cl/61511">https://golang.org/cl/61511</a>: support frame-pointer for arm64
    </p>

</dl><!-- build -->

<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="cmd,runtime"><dt><a href="/pkg/cmd,runtime/">cmd,runtime</a></dt>
  <dd>
    <p><!-- CL 138675 -->
      TODO: <a href="https://golang.org/cl/138675">https://golang.org/cl/138675</a>: enable race detector on arm64
    </p>

</dl><!-- cmd,runtime -->

<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
  <dd>
    <p><!-- CL 120055 -->
      TODO: <a href="https://golang.org/cl/120055">https://golang.org/cl/120055</a>: use the new getrandom syscall on FreeBSD
    </p>

    <p><!-- CL 139419 -->
      TODO: <a href="https://golang.org/cl/139419">https://golang.org/cl/139419</a>: warn to stderr if blocked 60+ sec on first Reader.Read call
    </p>

</dl><!-- crypto/rand -->

<dl id="crypto/rc4"><dt><a href="/pkg/crypto/rc4/">crypto/rc4</a></dt>
  <dd>
    <p><!-- CL 130397 -->
      TODO: <a href="https://golang.org/cl/130397">https://golang.org/cl/130397</a>: remove assembler implementations
    </p>

</dl><!-- crypto/rc4 -->

<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 occassionally 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="internal/cpu"><dt><a href="/pkg/internal/cpu/">internal/cpu</a></dt>
  <dd>
    <p><!-- CL 149578 -->
      TODO: <a href="https://golang.org/cl/149578">https://golang.org/cl/149578</a>: move GODEBUGCPU options into GODEBUG
    </p>

</dl><!-- internal/cpu -->

<dl id="internal/poll"><dt><a href="/pkg/internal/poll/">internal/poll</a></dt>
  <dd>
    <p><!-- CL 130676 -->
      TODO: <a href="https://golang.org/cl/130676">https://golang.org/cl/130676</a>: use F_FULLFSYNC fcntl for FD.Fsync on OS X
    </p>

</dl><!-- internal/poll -->

<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>int</code>, <code>int32</code>, and <code>int64</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>

</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 statment, 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 139783 -->
      TODO: <a href="https://golang.org/cl/139783">https://golang.org/cl/139783</a>: add DeepEqual test
    </p>

    <p><!-- CL 139784 -->
      TODO: <a href="https://golang.org/cl/139784">https://golang.org/cl/139784</a>: add partial Deprecation comment to Copy
    </p>

</dl><!-- regexp -->

<dl id="runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- CL 135395 -->
      TODO: <a href="https://golang.org/cl/135395">https://golang.org/cl/135395</a>: use MADV_FREE on Linux if available
    </p>

</dl><!-- runtime -->

<dl id="runtime/debug"><dt><a href="/pkg/runtime/debug/">runtime/debug</a></dt>
  <dd>
    <p><!-- CL 144220 -->
      TODO: <a href="https://golang.org/cl/144220">https://golang.org/cl/144220</a>: add API to read module info in binary
    </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 125456 -->
      TODO: <a href="https://golang.org/cl/125456">https://golang.org/cl/125456</a>: implement Unix Socket for Windows
    </p>

    <p><!-- CL 138595 -->
      TODO: <a href="https://golang.org/cl/138595">https://golang.org/cl/138595</a>: FreeBSD 12 ino64 support
    </p>

    <p><!-- CL 141639 -->
      TODO: <a href="https://golang.org/cl/141639">https://golang.org/cl/141639</a>: implement syscalls on Darwin using libSystem
    </p>

    <p><!-- CL 147117 -->
      TODO: <a href="https://golang.org/cl/147117">https://golang.org/cl/147117</a>: add Syscall18 on Windows
    </p>

</dl><!-- syscall -->

<dl id="syscall/js"><dt><a href="/pkg/syscall/js/">syscall/js</a></dt>
  <dd>
    <p><!-- CL 141644 -->
      TODO: <a href="https://golang.org/cl/141644">https://golang.org/cl/141644</a>: add Wrapper interface to support external Value wrapper types
    </p>

    <p><!-- CL 143137 -->
      TODO: <a href="https://golang.org/cl/143137">https://golang.org/cl/143137</a>: make zero js.Value represent &#34;undefined&#34;
    </p>

    <p><!-- CL 144384 -->
      TODO: <a href="https://golang.org/cl/144384">https://golang.org/cl/144384</a>: add the Value.Truthy method
    </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 -->

