<!--{
        "Title": "Go 1.15 Release Notes",
        "Path":  "/doc/go1.15"
}-->

<!--
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">DRAFT RELEASE NOTES — Introduction to Go 1.15</h2>

<p>
  <strong>
    Go 1.15 is not yet released. These are work-in-progress
    release notes. Go 1.15 is expected to be released in August 2020.
  </strong>
</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 now 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 1.15 now generates Windows ASLR executables when -buildmode=pie
  cmd/link flag is provided. Go command uses -buildmode=pie by default
  on 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> <!-- golang.org/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="riscv">RISC-V</h3>

<p>
TODO
</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="https://golang.org/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 explictly 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 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 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 232862 -->
  Go now retries system calls that return <code>EINTR</code>. This
  became more common in Go 1.14 with the addition of asynchronous
  preemption, but is now handled transparently.
</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>
TODO
</p>

<h2 id="compiler">Compiler</h2>

<p><!-- https://golang.org/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(…,
  uintptr(uintptr(ptr)), …)</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 222661 -->
  TODO: -spectre flags
</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 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="https://golang.org/s/better-linker">modernize the Go
  linker</a>, meaning that there will be additional linker
  improvements expected in future releases. 
</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>

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

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

<p>
TODO
</p>

<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
  <dd>
    <p><!-- CL 222637 -->
      TODO: <a href="https://golang.org/cl/222637">https://golang.org/cl/222637</a>: copy some consts from cmd/link/internal/ld
    </p>
  </dd>
</dl><!-- debug/pe -->

<dl id="crypto/rsa"><dt><a href="/pkg/crypto/rsa/">crypto/rsa</a></dt>
  <dd>
    <p><!-- CL 226203 -->
      VerifyPKCS1v15 now rejects invalid short signatures with missing leading zeroes.
    </p>
  </dd>
</dl><!-- crypto/rsa -->

<dl id="crypto/tls"><dt><a href="/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 permits using a context to both connect and handshake with a TLS server.
    </p>
  </dd>
</dl>

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 205237 -->
      TODO: <a href="https://golang.org/cl/205237">https://golang.org/cl/205237</a>: load roots from colon separated SSL_CERT_DIR in loadSystemRoots
    </p>
  </dd>
</dl><!-- crypto/x509 -->

<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
  <dd>
    <p><!-- CL 203417 -->
      TODO: <a href="https://golang.org/cl/203417">https://golang.org/cl/203417</a>: fix reserved namespace check to be case-insensitive
    </p>
  </dd>
</dl><!-- encoding/xml -->

<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
  <dd>
    <p><!-- CL 221427 -->
      When the flag package sees <code>-h</code> or <code>-help</code>, and
      those flags are not defined, the flag package 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 -->
      TODO: <a href="https://golang.org/cl/215001">https://golang.org/cl/215001</a>: do not remove trailing zeros for %g and %G with #(sharp) flag
    </p>
  </dd>
</dl><!-- fmt -->

<dl id="io/ioutil"><dt><a href="/pkg/io/ioutil/">io/ioutil</a></dt>
  <dd>
    <p><!-- CL 212597 -->
      TODO: <a href="https://golang.org/cl/212597">https://golang.org/cl/212597</a>: reject path separators in TempDir, TempFile pattern
    </p>
  </dd>
</dl><!-- io/ioutil -->

<dl id="math/big"><dt><a href="/pkg/math/big/">math/big</a></dt>
  <dd>
    <p><!-- CL 230397 -->
      TODO: <a href="https://golang.org/cl/230397">https://golang.org/cl/230397</a>: add (*Int).FillBytes
    </p>
  </dd>
</dl><!-- math/big -->

<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 -->
      TODO: <a href="https://golang.org/cl/231418">https://golang.org/cl/231418</a>: only support &#34;chunked&#34; in inbound Transfer-Encoding headers
    </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 -->
      TODO: <a href="https://golang.org/cl/224897">https://golang.org/cl/224897</a>: make Switching Protocol requests (e.g. Websockets) cancelable
    </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>
  </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 reflect 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 -->
      TODO: <a href="https://golang.org/cl/187919">https://golang.org/cl/187919</a>: add (*Regexp).SubexpIndex
    </p>
  </dd>
</dl><!-- regexp -->

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <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 -->
      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 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>

    <p><!-- CL 216401 -->
      Converting small integer values 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>
  </dd>
</dl>

<dl id="pkg-runtime-pprof"><dt><a href="/pkg/runtime/pprof">runtime/pprof</a></dt>
  <dd>
    <p><!-- CL 189318 -->
      The goroutine profile 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 -->
      TODO: <a href="https://golang.org/cl/216617">https://golang.org/cl/216617</a>: add ParseComplex and FormatComplex
    </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>
</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 now possible to call system calls that return floating
      point values on windows/amd64.
      TODO: Point to (write?) documentation on how to do this.
    </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> and
       return temporary directories that are automatically cleaned up
       at the end of the test.
    </p>
  </dd>
</dl><!-- testing -->

<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 -->
      TODO: <a href="https://golang.org/cl/227878">https://golang.org/cl/227878</a>: quote original value in errors returned by ParseDuration
    </p>
  </dd>
</dl><!-- time -->
