2020-08-12 08:34:15 -06:00
|
|
|
<!--{
|
|
|
|
"Title": "Go 1.16 Release Notes",
|
|
|
|
"Path": "/doc/go1.16"
|
|
|
|
}-->
|
|
|
|
|
|
|
|
<!--
|
|
|
|
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.16</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
<strong>
|
|
|
|
Go 1.16 is not yet released. These are work-in-progress
|
|
|
|
release notes. Go 1.16 is expected to be released in February 2021.
|
|
|
|
</strong>
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="language">Changes to the language</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="ports">Ports</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="tools">Tools</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h3 id="go-command">Go command</h3>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="runtime">Runtime</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="compiler">Compiler</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="linker">Linker</h2>
|
|
|
|
|
|
|
|
<p>
|
2020-08-12 10:59:55 -06:00
|
|
|
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="https://golang.org/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-35% 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.
|
|
|
|
</p>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO: update with final numbers later in the release.
|
2020-08-12 08:34:15 -06:00
|
|
|
</p>
|
|
|
|
|
|
|
|
<h2 id="library">Core library</h2>
|
|
|
|
|
|
|
|
<p>
|
|
|
|
TODO
|
|
|
|
</p>
|
|
|
|
|
2020-08-17 11:10:12 -06:00
|
|
|
<h3 id="unicode"><a href="/pkg/unicode/">unicode</a></h3>
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
2020-08-12 08:34:15 -06:00
|
|
|
<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>
|
2020-05-12 18:39:11 -06:00
|
|
|
|
|
|
|
<p>
|
|
|
|
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>
|