2 "Title": "Go 1.15 Release Notes",
7 NOTE: In this document and others in this directory, the convention is to
8 set fixed-width phrases with non-fixed-width spaces, as in
9 <code>hello</code> <code>world</code>.
10 Do not send CLs removing the interior tags from such phrases.
14 main ul li { margin: 0.5em 0; }
17 <h2 id="introduction">DRAFT RELEASE NOTES — Introduction to Go 1.15</h2>
21 Go 1.15 is not yet released. These are work-in-progress
22 release notes. Go 1.15 is expected to be released in August 2020.
26 <h2 id="language">Changes to the language</h2>
32 <h2 id="ports">Ports</h2>
38 <h2 id="tools">Tools</h2>
44 <h3 id="go-command">Go command</h3>
46 <p><!-- golang.org/issue/37367 -->
47 The <code>GOPROXY</code> environment variable now supports skipping proxies
48 that return errors. Proxy URLs may now be separated with either commas
49 (<code>,</code>) or pipe characters (<code>|</code>). If a proxy URL is
50 followed by a comma, the <code>go</code> command will only try the next proxy
51 in the list after a 404 or 410 HTTP response. If a proxy URL is followed by a
52 pipe character, the <code>go</code> command will try the next proxy in the
53 list after any error. Note that the default value of <code>GOPROXY</code>
54 remains <code>https://proxy.golang.org,direct</code>, which does not fall
55 back to <code>direct</code> in case of errors.
62 <h4 id="go-test"><code>go</code> <code>test</code></h4>
64 <p><!-- https://golang.org/issue/36134 -->
65 Changing the <code>-timeout</code> flag now invalidates cached test results. A
66 cached result for a test run with a long timeout will no longer count as
67 passing when <code>go</code> <code>test</code> is re-invoked with a short one.
70 <h4 id="go-flag-parsing">Flag parsing</h4>
72 <p><!-- https://golang.org/cl/211358 -->
73 Various flag parsing issues in <code>go</code> <code>test</code> and
74 <code>go</code> <code>vet</code> have been fixed. Notably, flags specified
75 in <code>GOFLAGS</code> are handled more consistently, and
76 the <code>-outputdir</code> flag now interprets relative paths relative to the
77 working directory of the <code>go</code> command (rather than the working
78 directory of each individual test).
81 <h2 id="runtime">Runtime</h2>
88 <h2 id="library">Core library</h2>
94 <dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
96 <p><!-- golang.org/issue/28135 -->
97 The <code>testing.T</code> type now has a <code>Deadline</code> method
98 that reports the time at which the test binary will have exceeded its
101 <p><!-- golang.org/issue/34129 -->
102 A <code>TestMain</code> function is no longer required to call
103 <code>os.Exit</code>. If a <code>TestMain</code> function returns,
104 the test binary will call <code>os.Exit</code> with the value returned
105 by <code>m.Run</code>.
108 </dl><!-- testing -->
110 <h3 id="minor_library_changes">Minor changes to the library</h3>
113 As always, there are various minor changes and updates to the library,
114 made with the Go 1 <a href="/doc/go1compat">promise of compatibility</a>
122 <dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
124 <p><!-- CL 221427 -->
125 When the flag package sees <code>-h</code> or <code>-help</code>, and
126 those flags are not defined, the flag package prints a usage message.
127 If the <a href=/pkg/flag/#FlagSet><code>FlagSet</code></a> was created with
128 <a href=/pkg/flag/#ExitOnError><code>ExitOnError</code></a>,
129 <a href=/pkg/flag/#FlagSet.Parse><code>FlagSet.Parse</code></a> would then
130 exit with a status of 2. In this release, the exit status for <code>-h</code>
131 or <code>-help</code> has been changed to 0. In particular, this applies to
132 the default handling of command line flags.
137 <dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
139 <p><!-- CL 207082 -->
140 The new <a href="/pkg/net/url/#URL"><code>URL</code></a>
141 method <a href="/pkg/net/url/#URL.Redacted"><code>Redacted</code></a>
142 returns the URL in string form with any password replaced with <code>xxxxx</code>.
147 <dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
149 <p><!-- CL 221779 -->
150 If <code>panic</code> is invoked with a value whose type is derived from any
151 of: <code>bool</code>, <code>complex64</code>, <code>complex128</code>, <code>float32</code>, <code>float64</code>,
152 <code>int</code>, <code>int8</code>, <code>int16</code>, <code>int32</code>, <code>int64</code>, <code>string</code>,
153 <code>uint</code>, <code>uint8</code>, <code>uint16</code>, <code>uint32</code>, <code>uint64</code>, <code>uintptr</code>,
154 then the value will be printed, instead of just its address.
159 <dl id="sync"><dt><a href="/pkg/sync/">sync</a></dt>
161 <p><!-- CL 205899, golang.org/issue/33762 -->
163 <a href="/pkg/sync/#Map.LoadAndDelete"><code>Map.LoadAndDelete</code></a>
164 atomically deletes a key and returns the previous value if present.
166 <p><!-- CL 205899 -->
168 <a href="/pkg/sync/#Map.Delete"><code>Map.Delete</code></a>
173 <dl id="testing"><dt><a href="/pkg/testing/">testing</a></dt>
175 <p><!-- CL 226877, golang.org/issue/35998 -->
177 <a href="/pkg/testing/#T.TempDir"><code>T.TempDir</code></a> and
178 <a href="/pkg/testing/#B.TempDir"><code>B.TempDir</code></a> and
179 return temporary directories that are automatically cleaned up
180 at the end of the test.
183 </dl><!-- testing -->
185 <dl id="time"><dt><a href="/pkg/time/">time</a></dt>
187 <p><!-- CL 220424, CL 217362, golang.org/issue/33184 -->
189 <a href="/pkg/time/#Ticker.Reset"><code>Ticker.Reset</code></a>
190 supports changing the duration of a ticker.