<!--{
	"Title": "Go 1.19 Release Notes",
	"Path":  "/doc/go1.19"
}-->
<!--
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.19</h2>
<p>
  <strong>
    Go 1.19 is not yet released. These are work-in-progress
    release notes. Go 1.19 is expected to be released in August 2022.
  </strong>
</p>

<h2 id="language">Changes to the language</h2>

<p><!-- https://go.dev/issue/52038 -->
  There is only one small change to the language,
  a <a href="https://github.com/golang/go/issues/52038">very small correction</a>
  to the <a href="/ref/spec#Declarations_and_scope">scope of type parameters in method declarations</a>.
  Existing programs are unaffected.
</p>

<h2 id="mem">Memory Model</h2>

<p><!-- https://go.dev/issue/50859 -->
  The <a href="/ref/mem">Go memory model</a> has been revised to align Go with
  the memory model used by C, C++, Java, JavaScript, Rust, and Swift.
  Go only provides sequentially consistent atomics, not any of the more relaxed forms found in other languages.
  Along with the memory model update,
  Go 1.19 introduces <a href="#atomic_types">new types in the <code>sync/atomic</code> package</a>
  that make it easier to use atomic values, such as
  <a href="/pkg/sync/atomic/#Int64">atomic.Int64</a>
  and
  <a href="/pkg/sync/atomic/#Pointer">atomic.Pointer[T]</a>.
</p>

<h2 id="ports">Ports</h2>

<h3 id="loong64">Loongson 64-bit</h3>
<p><!-- https://go.dev/issue/46229 -->
  Go 1.19 adds support for the Loongson 64-bit architecture LoongArch
  on Linux (<code>GOOS=linux</code>, <code>GOARCH=loong64</code>).
</p>

<h3 id="riscv64">RISC-V</h3>
<p><!-- CL 402374 -->
  The <code>riscv64</code> port now supports passing function arguments
  and result using registers. Benchmarking shows typical performance
  improvements of 10% or more on <code>riscv64</code>.
</p>

<h2 id="tools">Tools</h2>

<h3 id="go-doc">Doc Comments</h3>

<p><!-- https://go.dev/issue/51082 --><!-- CL 384265, CL 397276, CL 397278, CL 397279, CL 397281, CL 397284 -->
Go 1.19 adds support for links, lists, and clearer headings in doc comments.
As part of this change, <a href="/cmd/gofmt"><code>gofmt</code></a>
now reformats doc comments to make their rendered meaning clearer.
See “<a href="/doc/comment">Go Doc Comments</a>”
for syntax details and descriptions of common mistakes now highlighted by <code>gofmt</code>.
As another part of this change, the new package <a href="/pkg/go/doc/comment">go/doc/comment</a>
provides parsing and reformatting of doc comments
as well as support for rendering them to HTML, Markdown, and text.
</p>

<h3 id="go-unix">New <code>unix</code> build constraint</h3>

<p><!-- CL 389934 --><!-- https://go.dev/issue/20322 --><!-- https://go.dev/issue/51572 -->
  The build constraint <code>unix</code> is now recognized
  in <code>//go:build</code> lines. The constraint is satisfied
  if the target operating system, also known as <code>GOOS</code>, is
  a Unix or Unix-like system. For the 1.19 release it is satisfied
  if <code>GOOS</code> is one of
  <code>aix</code>, <code>android</code>, <code>darwin</code>,
  <code>dragonfly</code>, <code>freebsd</code>, <code>hurd</code>,
  <code>illumos</code>, <code>ios</code>, <code>linux</code>,
  <code>netbsd</code>, <code>openbsd</code>, or <code>solaris</code>.
  In future releases the <code>unix</code> constraint may match
  additional newly supported operating systems.
</p>

<h3 id="go-command">Go command</h3>

<!-- https://go.dev/issue/51461 -->
<p>
  The <code>-trimpath</code> flag, if set, is now included in the build settings
  stamped into Go binaries by <code>go</code> <code>build</code>, and can be
  examined using
  <a href="https://pkg.go.dev/cmd/go#hdr-Print_Go_version"><code>go</code> <code>version</code> <code>-m</code></a>
  or <a href="https://pkg.go.dev/runtime/debug#ReadBuildInfo"><code>debug.ReadBuildInfo</code></a>.
</p>
<p>
  <code>go</code> <code>generate</code> now sets the <code>GOROOT</code>
  environment variable explicitly in the generator's environment, so that
  generators can locate the correct <code>GOROOT</code> even if built
  with <code>-trimpath</code>.
</p>

<p><!-- CL 404134 -->
  <code>go</code> <code>test</code> and <code>go</code> <code>generate</code> now place
  <code>GOROOT/bin</code> at the beginning of the <code>PATH</code> used for the
  subprocess, so tests and generators that execute the <code>go</code> command
  will resolve it to same <code>GOROOT</code>.
</p>

<p><!-- CL 398058 -->
  <code>go</code> <code>env</code> now quotes entries that contain spaces in
  the <code>CGO_CFLAGS</code>, <code>CGO_CPPFLAGS</code>, <code>CGO_CXXFLAGS</code>, <code>CGO_FFLAGS</code>, <code>CGO_LDFLAGS</code>,
  and <code>GOGCCFLAGS</code> variables it reports.
</p>

<p><!-- CL 410821 -->
  The <code>go</code> command now caches information necessary to load some modules,
  which should result in a speed-up of some <code>go</code> <code>list</code> invocations.
</p>

<h3 id="vet">Vet</h3>

<p><!-- https://go.dev/issue/47528 -->
  The <code>vet</code> checker “errorsas” now reports when
  <a href="/pkg/errors/#As"><code>errors.As</code></a> is called
  with a second argument of type <code>*error</code>,
  a common mistake.
</p>

<h2 id="runtime">Runtime</h2>

<p><!-- https://go.dev/issue/48409 --><!-- CL 397018 -->
  The runtime now includes support for a soft memory limit. This memory limit
  includes the Go heap and all other memory managed by the runtime, and
  excludes external memory sources such as mappings of the binary itself,
  memory managed in other languages, and memory held by the operating system on
  behalf of the Go program. This limit may be managed via
  <a href="/pkg/runtime/debug/#SetMemoryLimit"><code>runtime/debug.SetMemoryLimit</code></a>
  or the equivalent
  <a href="/pkg/runtime/#hdr-Environment_Variables"><code>GOMEMLIMIT</code></a>
  environment variable. The limit works in conjunction with
  <a href="/pkg/runtime/debug/#SetGCPercent"><code>runtime/debug.SetGCPercent</code></a>
  / <a href="/pkg/runtime/#hdr-Environment_Variables"><code>GOGC</code></a>,
  and will be respected even if <code>GOGC=off</code>, allowing Go programs to
  always make maximal use of their memory limit, improving resource efficiency
  in some cases. See <a href="/doc/gc-guide">the GC guide</a> for
  a detailed guide explaining the soft memory limit in more detail, as well as
  a variety of common use-cases and scenarios. Please note that small memory
  limits, on the order of tens of megabytes or less, are less likely to be
  respected due to external latency factors, such as OS scheduling. See
  <a href="https://go.dev/issue/52433">issue 52433</a> for more details. Larger
  memory limits, on the order of hundreds of megabytes or more, are stable and
  production-ready.
</p>

<p><!-- CL 353989 -->
  In order to limit the effects of GC thrashing when the program's live heap
  size approaches the soft memory limit, the Go runtime also attempts to limit
  total GC CPU utilization to 50%, excluding idle time, choosing to use more
  memory over preventing application progress. In practice, we expect this limit
  to only play a role in exceptional cases, and the new
  <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">runtime metric</a>
  <code>/gc/limiter/last-enabled:gc-cycle</code> reports when this last
  occurred.
</p>

<p><!-- https://go.dev/issue/44163 -->
  The runtime now schedules many fewer GC worker goroutines on idle operating
  system threads when the application is idle enough to force a periodic GC
  cycle.
</p>

<p><!-- https://go.dev/issue/18138 --><!-- CL 345889 -->
  The runtime will now allocate initial goroutine stacks based on the historic
  average stack usage of goroutines. This avoids some of the early stack growth
  and copying needed in the average case in exchange for at most 2x wasted
  space on below-average goroutines.
</p>

<p><!-- https://go.dev/issue/46279 --><!-- CL 393354 --><!-- CL 392415 -->
  On Unix operating systems, Go programs that import package
  <a href="/pkg/os/">os</a> now automatically increase the open file limit
  (<code>RLIMIT_NOFILE</code>) to the maximum allowed value;
  that is, they change the soft limit to match the hard limit.
  This corrects artificially low limits set on some systems for compatibility with very old C programs using the
  <a href="https://en.wikipedia.org/wiki/Select_(Unix)"><i>select</i></a> system call.
  Go programs are not helped by that limit, and instead even simple programs like <code>gofmt</code>
  often ran out of file descriptors on such systems when processing many files in parallel.
  One impact of this change is that Go programs that in turn execute very old C programs in child processes
  may run those programs with too high a limit.
  This can be corrected by setting the hard limit before invoking the Go program.
</p>

<p><!-- https://go.dev/issue/51485 --><!-- CL 390421 -->
  Unrecoverable fatal errors (such as concurrent map writes, or unlock of
  unlocked mutexes) now print a simpler traceback excluding runtime metadata
  (equivalent to a fatal panic) unless <code>GOTRACEBACK=system</code> or
  <code>crash</code>. Runtime-internal fatal error tracebacks always include
  full metadata regardless of the value of <code>GOTRACEBACK</code>
</p>

<p><!-- https://go.dev/issue/50614 --><!-- CL 395754 -->
  Support for debugger-injected function calls has been added on ARM64,
  enabling users to call functions from their binary in an interactive
  debugging session when using a debugger that is updated to make use of this
  functionality.
</p>

<p><!-- https://go.dev/issue/44853 -->
  The <a href="/doc/go1.18#go-build-asan">address sanitizer support added in Go 1.18</a>
  now handles function arguments and global variables more precisely.
</p>

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

<p><!-- https://go.dev/issue/5496 --><!-- CL 357330, 395714, 403979 -->
  The compiler now uses
  a <a href="https://en.wikipedia.org/wiki/Branch_table">jump
  table</a> to implement large integer and string switch statements.
  Performance improvements for the switch statement vary but can be
  on the order of 20% faster.
  (<code>GOARCH=amd64</code> and <code>GOARCH=arm64</code> only)
</p>
<p><!-- CL 391014 -->
  The Go compiler now requires the <code>-p=importpath</code> flag to
  build a linkable object file. This is already supplied by
  the <code>go</code> command and by Bazel. Any other build systems
  that invoke the Go compiler directly will need to make sure they
  pass this flag as well.
</p>

<h2 id="assembler">Assembler</h2>
<p><!-- CL 404298 -->
  Like the compiler, the assembler now requires the
  <code>-p=importpath</code> flag to build a linkable object file.
  This is already supplied by the <code>go</code> command. Any other
  build systems that invoke the Go assembler directly will need to
  make sure they pass this flag as well.
</p>

<h2 id="linker">Linker</h2>
<p><!-- https://go.dev/issue/50796, CL 380755 -->
  On ELF platforms, the linker now emits compressed DWARF sections in
  the standard gABI format (<code>SHF_COMPRESSED</code>), instead of
  the legacy <code>.zdebug</code> format.
</p>

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

<h3 id="atomic_types">New atomic types</h3>

<p><!-- https://go.dev/issue/50860 --><!-- CL 381317 -->
  The <a href="/pkg/sync/atomic/"><code>sync/atomic</code></a> package defines new atomic types
  <a href="/pkg/sync/atomic/#Bool"><code>Bool</code></a>,
  <a href="/pkg/sync/atomic/#Int32"><code>Int32</code></a>,
  <a href="/pkg/sync/atomic/#Int64"><code>Int64</code></a>,
  <a href="/pkg/sync/atomic/#Uint32"><code>Uint32</code></a>,
  <a href="/pkg/sync/atomic/#Uint64"><code>Uint64</code></a>,
  <a href="/pkg/sync/atomic/#Uintptr"><code>Uintptr</code></a>, and
  <a href="/pkg/sync/atomic/#Pointer"><code>Pointer</code></a>.
  These types hide the underlying values so that all accesses are forced to use
  the atomic APIs.
  <a href="/pkg/sync/atomic/#Pointer"><code>Pointer</code></a> also avoids
  the need to convert to
  <a href="/pkg/unsafe/#Pointer"><code>unsafe.Pointer</code></a> at call sites.
  <a href="/pkg/sync/atomic/#Int64"><code>Int64</code></a> and
  <a href="/pkg/sync/atomic/#Uint64"><code>Uint64</code></a> are
  automatically aligned to 64-bit boundaries in structs and allocated data,
  even on 32-bit systems.
</p>

<h3 id="os-exec-path">PATH lookups</h3>

<p><!-- https://go.dev/issue/43724 -->
  <!-- CL 381374 --><!-- CL 403274 -->
  <a href="/pkg/os/exec/#Command"><code>Command</code></a> and
  <a href="/pkg/os/exec/#LookPath"><code>LookPath</code></a> no longer
  allow results from a PATH search to be found relative to the current directory.
  This removes a <a href="/blog/path-security">common source of security problems</a>
  but may also break existing programs that depend on using, say, <code>exec.Command("prog")</code>
  to run a binary named <code>prog</code> (or, on Windows, <code>prog.exe</code>) in the current directory.
  See the <a href="/pkg/os/exec/"><code>os/exec</code></a> package documentation for
  information about how best to update such programs.
</p>

<p><!-- https://go.dev/issue/43947 -->
  On Windows, <code>Command</code> and <code>LookPath</code> now respect the
  <a href="https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-needcurrentdirectoryforexepatha"><code>NoDefaultCurrentDirectoryInExePath</code></a>
  environment variable, making it possible to disable
  the default implicit search of “<code>.</code>” in PATH lookups on Windows systems.
</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.
  There are also various performance improvements, not enumerated here.
</p>

<dl id="archive/zip"><dt><a href="/pkg/archive/zip/">archive/zip</a></dt>
  <dd>
    <p><!-- CL 387976 -->
      <a href="/pkg/archive/zip/#Reader"><code>Reader</code></a>
      now ignores non-ZIP data at the start of a ZIP file, matching most other implementations.
      This is necessary to read some Java JAR files, among other uses.
    </p>
  </dd>
</dl><!-- archive/zip -->

<dl id="crypto/rand"><dt><a href="/pkg/crypto/rand/">crypto/rand</a></dt>
  <dd>
    <p><!-- CL 370894 --><!-- CL 390038 -->
      <a href="/pkg/crypto/rand/#Read"><code>Read</code></a> no longer buffers
      random data obtained from the operating system between calls.
    </p>

    <p><!-- CL 375215 -->
      On Plan 9, <code>Read</code> has been reimplemented, replacing the ANSI
      X9.31 algorithm with fast key erasure.
    </p>
  </dd>
</dl><!-- crypto/rand -->

<dl id="crypto/tls"><dt><a href="/pkg/crypto/tls/">crypto/tls</a></dt>
  <dd>
    <p><!-- CL 400974 --><!-- https://go.dev/issue/45428 -->
      The <code>tls10default</code> <code>GODEBUG</code> option has been
      removed. It is still possible to enable TLS 1.0 client-side by setting
      <a href="/pkg/crypto/tls#Config.MinVersion"><code>Config.MinVersion</code></a>.
    </p>

    <p><!-- CL 384894 -->
      The TLS server and client now reject duplicate extensions in TLS
      handshakes, as required by RFC 5246, Section 7.4.1.4 and RFC 8446, Section
      4.2.
    </p>
  </dd>
</dl><!-- crypto/tls -->

<dl id="crypto/x509"><dt><a href="/pkg/crypto/x509/">crypto/x509</a></dt>
  <dd>
    <p><!-- CL 285872 -->
      <a href="/pkg/crypto/x509/#CreateCertificate"><code>CreateCertificate</code></a>
      no longer supports creating certificates with <code>SignatureAlgorithm</code>
      set to <code>MD5WithRSA</code>.
    </p>

    <p><!-- CL 400494 -->
      <code>CreateCertificate</code> no longer accepts negative serial numbers.
    </p>

    <p><!-- CL 383215 -->
      <a href="/pkg/crypto/x509/#ParseCertificate"><code>ParseCertificate</code></a>
      and <a href="/pkg/crypto/x509/#ParseCertificateRequest"><code>ParseCertificateRequest</code></a>
      now reject certificates and CSRs which contain duplicate extensions.
    </p>

    <p><!-- https://go.dev/issue/46057 --><!-- https://go.dev/issue/35044 --><!-- CL 398237 --><!-- CL 400175 --><!-- CL 388915 -->
      The new <a href="/pkg/crypto/x509/#CertPool.Clone"><code>CertPool.Clone</code></a>
      and <a href="/pkg/crypto/x509/#CertPool.Equal"><code>CertPool.Equal</code></a>
      methods allow cloning a <code>CertPool</code> and checking the equality of two
      <code>CertPool</code>s respectively.
    </p>

    <p><!-- https://go.dev/issue/50674 --><!-- CL 390834 -->
      The new function <a href="/pkg/crypto/x509/#ParseRevocationList"><code>ParseRevocationList</code></a>
      provides a faster, safer to use CRL parser which returns a
      <a href="/pkg/crypto/x509/#RevocationList"><code>RevocationList</code></a>.
      To support this addition, <code>RevocationList</code> adds new fields
      <code>RawIssuer</code>, <code>Signature</code>,
      <code>AuthorityKeyId</code>, and <code>Extensions</code>.

      The new method <a href="/pkg/crypto/x509/#RevocationList.CheckSignatureFrom"><code>RevocationList.CheckSignatureFrom</code></a>
      checks that the signature on a CRL is a valid signature from a
      <a href="/pkg/crypto/x509/#Certificate"><code>Certificate</code></a>.

      With the new CRL functionality, the existing functions
      <a href="/pkg/crypto/x509/#ParseCRL"><code>ParseCRL</code></a> and
      <a href="/pkg/crypto/x509/#ParseDERCRL"><code>ParseDERCRL</code></a> are deprecated.
      Additionally the method <a href="/pkg/crypto/x509#Certificate.CheckCRLSignature"><code>Certificate.CheckCRLSignature</code></a>
      is deprecated.
    </p>

    <p><!-- CL 389555 -->
      When building paths, <a href="/pkg/crypto/x509/#Certificate.Verify"><code>Certificate.Verify</code></a>
      now considers certificates to be equal when the subjects, public keys, and SANs
      are all equal. Before, it required byte-for-byte equality.
    </p>
  </dd>
</dl><!-- crypto/x509 -->

<dl id="crypto/x509/pkix"><dt><a href="/pkg/crypto/x509/pkix">crypto/x509/pkix</a></dt>
  <dd>
    <p><!-- CL 390834 -->
      The types <a href="/pkg/crypto/x509/pkix#CertificateList"><code>CertificateList</code></a> and
      <a href="/pkg/crypto/x509/pkix#TBSCertificateList"><code>TBSCertificateList</code></a>
      have been deprecated. The new <a href="#crypto/x509"><code>crypto/x509</code> CRL functionality</a>
      should be used instead.
    </p>
  </dd>
</dl><!-- crypto/x509/pkix -->

<dl id="debug"><dt><a href="/pkg/debug/">debug</a></dt>
  <dd>
    <p><!-- CL 396735 -->
      The new <code>EM_LONGARCH</code> and <code>R_LARCH_*</code> constants
      support the loong64 port.
    </p>
  </dd>
</dl><!-- debug -->

<dl id="debug/pe"><dt><a href="/pkg/debug/pe/">debug/pe</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51868 --><!-- CL 394534 -->
      The new <a href="/pkg/debug/pe/#File.COFFSymbolReadSectionDefAux"><code>File.COFFSymbolReadSectionDefAux</code></a>
      method, which returns a <a href="/pkg/debug/pe/#COFFSymbolAuxFormat5"><code>COFFSymbolAuxFormat5</code></a>,
      provides access to COMDAT information in PE file sections.
      These are supported by new <code>IMAGE_COMDAT_*</code> and <code>IMAGE_SCN_*</code> constants.
    </p>
  </dd>
</dl><!-- debug/pe -->

<dl id="encoding/binary"><dt><a href="/pkg/encoding/binary/">encoding/binary</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/50601 --><!-- CL 386017 --><!-- CL 389636 -->
      The new interface
      <a href="/pkg/encoding/binary/#AppendByteOrder"><code>AppendByteOrder</code></a>
      provides efficient methods for appending a <code>uint16</code>, <code>uint32</code>, or <code>uint64</code>
      to a byte slice.
      <a href="/pkg/encoding/binary/#BigEndian"><code>BigEndian</code></a> and
      <a href="/pkg/encoding/binary/#LittleEndian"><code>LittleEndian</code></a> now implement this interface.
    </p>
    <p><!-- https://go.dev/issue/51644 --><!-- CL 400176 -->
      Similarly, the new functions
      <a href="/pkg/encoding/binary/#AppendUvarint"><code>AppendUvarint</code></a> and
      <a href="/pkg/encoding/binary/#AppendVarint"><code>AppendVarint</code></a>
      are efficient appending versions of
      <a href="/pkg/encoding/binary/#PutUvarint"><code>PutUvarint</code></a> and
      <a href="/pkg/encoding/binary/#PutVarint"><code>PutVarint</code></a>.
    </p>
  </dd>
</dl><!-- encoding/binary -->

<dl id="encoding/csv"><dt><a href="/pkg/encoding/csv/">encoding/csv</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/43401 --><!-- CL 405675 -->
      The new method
      <a href="/pkg/encoding/csv/#Reader.InputOffset"><code>Reader.InputOffset</code></a>
      reports the reader's current input position as a byte offset,
      analogous to <code>encoding/json</code>'s
      <a href="/pkg/encoding/json/#Decoder.InputOffset"><code>Decoder.InputOffset</code></a>.
    </p>
  </dd>
</dl><!-- encoding/csv -->

<dl id="encoding/xml"><dt><a href="/pkg/encoding/xml/">encoding/xml</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/45628 --><!-- CL 311270 -->
      The new method
      <a href="/pkg/encoding/xml/#Decoder.InputPos"><code>Decoder.InputPos</code></a>
      reports the reader's current input position as a line and column,
      analogous to <code>encoding/csv</code>'s
      <a href="/pkg/encoding/csv/#Decoder.FieldPos"><code>Decoder.FieldPos</code></a>.
    </p>
  </dd>
</dl><!-- encoding/xml -->

<dl id="flag"><dt><a href="/pkg/flag/">flag</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/45754 --><!-- CL 313329 -->
      The new function
      <a href="/pkg/flag/#TextVar"><code>TextVar</code></a>
      defines a flag with a value implementing
      <a href="/pkg/encoding/#TextUnmarshaler"><code>encoding.TextUnmarshaler</code></a>,
      allowing command-line flag variables to have types such as
      <a href="/pkg/math/big/#Int"><code>big.Int</code></a>,
      <a href="/pkg/net/netip/#Addr"><code>netip.Addr</code></a>, and
      <a href="/pkg/time/#Time"><code>time.Time</code></a>.
    </p>
  </dd>
</dl><!-- flag -->

<dl id="fmt"><dt><a href="/pkg/fmt/">fmt</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/47579 --><!-- CL 406177 -->
      The new functions
      <a href="/pkg/fmt/#Append"><code>Append</code></a>,
      <a href="/pkg/fmt/#Appendf"><code>Appendf</code></a>, and
      <a href="/pkg/fmt/#Appendln"><code>Appendln</code></a>
      append formatted data to byte slices.
    </p>
  </dd>
</dl><!-- fmt -->

<dl id="go/parser"><dt><a href="/pkg/go/parser/">go/parser</a></dt>
  <dd>
    <p><!-- CL 403696 -->
      The parser now recognizes <code>~x</code> as a unary expression with operator
      <a href="/pkg/go/token#TILDE">token.TILDE</a>,
      allowing better error recovery when a type constraint such as <code>~int</code> is used in an incorrect context.
    </p>
  </dd>
</dl><!-- go/parser -->

<dl id="go/types"><dt><a href="/pkg/go/types/">go/types</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51682 --><!-- CL 395535 -->
      The new methods <a href="/pkg/go/types/#Func.Origin"><code>Func.Origin</code></a>
      and <a href="/pkg/go/types/#Var.Origin"><code>Var.Origin</code></a> return the
      corresponding <a href="/pkg/go/types/#Object"><code>Object</code></a> of the
      generic type for synthetic <a href="/pkg/go/types/#Func"><code>Func</code></a>
      and <a href="/pkg/go/types/#Var"><code>Var</code></a> objects created during type
      instantiation.
    </p>
    <p><!-- https://go.dev/issue/52728 --><!-- CL 404885 -->
      It is no longer possible to produce an infinite number of distinct-but-identical
      <a href="/pkg/go/types/#Named"><code>Named</code></a> type instantiations via
      recursive calls to
      <a href="/pkg/go/types/#Named.Underlying"><code>Named.Underlying</code></a> or
      <a href="/pkg/go/types/#Named.Method"><code>Named.Method</code></a>.
    </p>
  </dd>
</dl><!-- go/types -->


<dl id="hash/maphash"><dt><a href="/pkg/hash/maphash/">hash/maphash</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/42710 --><!-- CL 392494 -->
      The new functions
      <a href="/pkg/hash/maphash/#Bytes"><code>Bytes</code></a>
      and
      <a href="/pkg/hash/maphash/#String"><code>String</code></a>
      provide an efficient way hash a single byte slice or string.
      They are equivalent to using the more general
      <a href="/pkg/hash/maphash/#Hash"><code>Hash</code></a>
      with a single write, but they avoid setup overhead for small inputs.
    </p>
  </dd>
</dl><!-- hash/maphash -->

<dl id="html/template"><dt><a href="/pkg/html/template/">html/template</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/46121 --><!-- CL 389156 -->
      The type <a href="/pkg/html/template/#FuncMap"><code>FuncMap</code></a>
      is now an alias for
      <code>text/template</code>'s <a href="/pkg/text/template/#FuncMap"><code>FuncMap</code></a>
      instead of its own named type.
      This allows writing code that operates on a <code>FuncMap</code> from either setting.
    </p>
  </dd>
</dl><!-- html/template -->

<dl id="image/draw"><dt><a href="/pkg/image/draw/">image/draw</a></dt>
  <dd>
    <p><!-- CL 396795 -->
      <a href="/pkg/image/draw/#Draw"><code>Draw</code></a> with the
      <a href="/pkg/image/draw/#Src"><code>Src</code></a> operator preserves
      non-premultiplied-alpha colors when destination and source images are
      both <a href="/pkg/image/#NRGBA"><code>image.NRGBA</code></a>
      or both <a href="/pkg/image/#NRGBA64"><code>image.NRGBA64</code></a>.
      This reverts a behavior change accidentally introduced by a Go 1.18
      library optimization; the code now matches the behavior in Go 1.17 and earlier.
    </p>
  </dd>
</dl><!-- image/draw -->

<dl id="io"><dt><a href="/pkg/io/">io</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51566 --><!-- CL 400236 -->
      <a href="/pkg/io/#NopCloser"><code>NopCloser</code></a>'s result now implements
      <a href="/pkg/io/#WriterTo"><code>WriterTo</code></a>
      whenever its input does.
    </p>

    <p><!-- https://go.dev/issue/50842 -->
      <a href="/pkg/io/#MultiReader"><code>MultiReader</code></a>'s result now implements
      <a href="/pkg/io/#WriterTo"><code>WriterTo</code></a> unconditionally.
      If any underlying reader does not implement <code>WriterTo</code>,
      it is simulated appropriately.
    </p>
  </dd>
</dl><!-- io -->

<dl id="mime"><dt><a href="/pkg/mime/">mime</a></dt>
  <dd>
    <p><!-- CL 406894 -->
      On Windows only, the mime package now ignores a registry entry
      recording that the extension <code>.js</code> should have MIME
      type <code>text/plain</code>. This is a common unintentional
      misconfiguration on Windows systems. The effect is
      that <code>.js</code> will have the default MIME
      type <code>text/javascript; charset=utf-8</code>.
      Applications that expect <code>text/plain</code> on Windows must
      now explicitly call
      <a href="/pkg/mime/#AddExtensionType"><code>AddExtensionType</code></a>.
    </p>
  </dd>
</dl>

<dl id="net"><dt><a href="/pkg/net/">net</a></dt>
  <dd>
    <p><!-- CL 386016 -->
      The pure Go resolver will now use EDNS(0) to include a suggested
      maximum reply packet length, permitting reply packets to contain
      up to 1232 bytes (the previous maximum was 512).
      In the unlikely event that this causes problems with a local DNS
      resolver, setting the environment variable
      <code>GODEBUG=netdns=cgo</code> to use the cgo-based resolver
      should work.
      Please report any such problems on <a href="/issue/new">the
      issue tracker</a>.
    </p>

    <p><!-- https://go.dev/issue/51428 --><!-- CL 396877 -->
      When a net package function or method returns an "I/O timeout"
      error, the error will now satisfy <code>errors.Is(err,
      context.DeadlineExceeded)</code>.  When a net package function
      returns an "operation was canceled" error, the error will now
      satisfy <code>errors.Is(err, context.Canceled)</code>.
      These changes are intended to make it easier for code to test
      for cases in which a context cancellation or timeout causes a net
      package function or method to return an error, while preserving
      backward compatibility for error messages.
    </p>

    <p><!-- https://go.dev/issue/33097 --><!-- CL 400654 -->
      <a href="/pkg/net/#Resolver.PreferGo"><code>Resolver.PreferGo</code></a>
      is now implemented on Windows and Plan 9. It previously only worked on Unix
      platforms. Combined with
      <a href="/pkg/net/#Dialer.Resolver"><code>Dialer.Resolver</code></a> and
      <a href="/pkg/net/#Resolver.Dial"><code>Resolver.Dial</code></a>, it's now
      possible to write portable programs and be in control of all DNS name lookups
      when dialing.
    </p>

    <p>
      The <code>net</code> package now has initial support for the <code>netgo</code>
      build tag on Windows. When used, the package uses the Go DNS client (as used
      by <code>Resolver.PreferGo</code>) instead of asking Windows for
      DNS results. The upstream DNS server it discovers from Windows
      may not yet be correct with complex system network configurations, however.
    </p>
  </dd>
</dl><!-- net -->

<dl id="net/http"><dt><a href="/pkg/net/http/">net/http</a></dt>
  <dd>
    <p><!-- CL 269997 -->
      <a href="/pkg/net/http/#ResponseWriter"><code>ResponseWriter.WriteHeader</code></a>
      now supports sending user-defined 1xx informational headers.
    </p>

    <p><!-- CL 361397 -->
      The <code>io.ReadCloser</code> returned by
      <a href="/pkg/net/http/#MaxBytesReader"><code>MaxBytesReader</code></a>
      will now return the defined error type
      <a href="/pkg/net/http/#MaxBytesError"><code>MaxBytesError</code></a>
      when its read limit is exceeded.
    </p>

    <p><!-- CL 375354 -->
      The HTTP client will handle a 3xx response without a
      <code>Location</code> header by returning it to the caller,
      rather than treating it as an error.
    </p>
  </dd>
</dl><!-- net/http -->

<dl id="net/url"><dt><a href="/pkg/net/url/">net/url</a></dt>
  <dd>
    <p><!-- CL 374654 -->
      The new
      <a href="/pkg/net/url/#JoinPath"><code>JoinPath</code></a>
      function and
      <a href="/pkg/net/url/#URL.JoinPath"><code>URL.JoinPath</code></a>
      method create a new <code>URL</code> by joining a list of path
      elements.
    </p>
    <p><!-- https://go.dev/issue/46059 -->
      The <code>URL</code> type now distinguishes between URLs with no
      authority and URLs with an empty authority. For example,
      <code>http:///path</code> has an empty authority (host),
      while <code>http:/path</code> has none.
    </p>
    <p>
      The new <a href="/pkg/net/url/#URL"><code>URL</code></a> field
      <code>OmitHost</code> is set to <code>true</code> when a
      <code>URL</code> has an empty authority.
    </p>

  </dd>
</dl><!-- net/url -->

<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/50599 --><!-- CL 401340 -->
      A <a href="/pkg/os/exec/#Cmd"><code>Cmd</code></a> with a non-empty <code>Dir</code> field
      and nil <code>Env</code> now implicitly sets the <code>PWD</code> environment
      variable for the subprocess to match <code>Dir</code>.
    </p>
    <p>
      The new method <a href="/pkg/os/exec/#Cmd.Environ"><code>Cmd.Environ</code></a> reports the
      environment that would be used to run the command, including the
      implicitly set <code>PWD</code> variable.
    </p>
  </dd>
</dl> <!-- os/exec -->

<dl id="reflect"><dt><a href="/pkg/reflect/">reflect</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/47066 --><!-- CL 357331 -->
      The method <a href="/pkg/reflect/#Value.Bytes"><code>Value.Bytes</code></a>
      now accepts addressable arrays in addition to slices.
    </p>
    <p><!-- CL 400954 -->
      The methods <a href="/pkg/reflect/#Value.Len"><code>Value.Len</code></a>
      and <a href="/pkg/reflect/#Value.Cap"><code>Value.Cap</code></a>
      now successfully operate on a pointer to an array and return the length of that array,
      to match what the <a href="/ref/spec#Length_and_capacity">builtin
      <code>len</code> and <code>cap</code> functions do</a>.
    </p>
  </dd>
</dl><!-- reflect -->

<dl id="regexp/syntax"><dt><a href="/pkg/regexp/syntax/">regexp/syntax</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51684 --><!-- CL 401076 -->
      Go 1.18 release candidate 1, Go 1.17.8, and Go 1.16.15 included a security fix
      to the regular expression parser, making it reject very deeply nested expressions.
      Because Go patch releases do not introduce new API,
      the parser returned <a href="/pkg/regexp/syntax/#ErrInternalError"><code>syntax.ErrInternalError</code></a> in this case.
      Go 1.19 adds a more specific error, <a href="/pkg/regexp/syntax/#ErrNestingDepth"><code>syntax.ErrNestingDepth</code></a>,
      which the parser now returns instead.
    </p>
  </dd>
</dl><!-- regexp -->

<dl id="pkg-runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51461 -->
      The <a href="/pkg/runtime/#GOROOT"><code>GOROOT</code></a> function now returns the empty string
      (instead of <code>"go"</code>) when the binary was built with
      the <code>-trimpath</code> flag set and the <code>GOROOT</code>
      variable is not set in the process environment.
    </p>
  </dd>
</dl><!-- runtime -->

<dl id="runtime/metrics"><dt><a href="/pkg/runtime/metrics/">runtime/metrics</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/47216 --><!-- CL 404305 -->
    The new <code>/sched/gomaxprocs:threads</code>
    <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">metric</a> reports
    the current
    <a href="/pkg/runtime/#GOMAXPROCS"><code>runtime.GOMAXPROCS</code></a>
    value.
    </p>

    <p><!-- https://go.dev/issue/47216 --><!-- CL 404306 -->
    The new <code>/cgo/go-to-c-calls:calls</code>
    <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">metric</a>
    reports the total number of calls made from Go to C. This metric is
    identical to the
    <a href="/pkg/runtime/#NumCgoCall"><code>runtime.NumCgoCall</code></a>
    function.
    </p>

    <p><!-- https://go.dev/issue/48409 --><!-- CL 403614 -->
    The new <code>/gc/limiter/last-enabled:gc-cycle</code>
    <a href="/pkg/runtime/metrics/#hdr-Supported_metrics">metric</a>
    reports the last GC cycle when the GC CPU limiter was enabled. See the
    <a href="#runtime">runtime notes</a> for details about the GC CPU limiter.
    </p>
  </dd>
</dl><!-- runtime/metrics -->

<dl id="runtime/pprof"><dt><a href="/pkg/runtime/pprof/">runtime/pprof</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/33250 --><!-- CL 387415 -->
      Stop-the-world pause times have been significantly reduced when
      collecting goroutine profiles, reducing the overall latency impact to the
      application.
    </p>

    <p><!-- CL 391434 -->
      <code>MaxRSS</code> is now reported in heap profiles for all Unix
      operating systems (it was previously only reported for
      <code>GOOS=android</code>, <code>darwin</code>, <code>ios</code>, and
      <code>linux</code>).
    </p>
  </dd>
</dl><!-- runtime/pprof -->

<dl id="runtime/race"><dt><a href="/pkg/runtime/race/">runtime/race</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/49761 --><!-- CL 333529 -->
      The race detector has been upgraded to use thread sanitizer
      version v3 on all supported platforms
      except <code>windows/amd64</code>
      and <code>openbsd/amd64</code>, which remain on v2.
      Compared to v2, it is now typically 1.5x to 2x faster, uses half
      as much memory, and it supports an unlimited number of
      goroutines.
      On Linux, the race detector now requires at least glibc version 2.17.
    </p>

    <p><!-- CL 336549 -->
      The race detector is now supported on <code>GOARCH=s390x</code>.
    </p>

    <p><!-- https://go.dev/issue/52090 -->
      Race detector support for <code>openbsd/amd64</code> has been
      removed from thread sanitizer upstream, so it is unlikely to
      ever be updated from v2.
    </p>
  </dd>
</dl><!-- runtime/race -->

<dl id="runtime/trace"><dt><a href="/pkg/runtime/trace/">runtime/trace</a></dt>
  <dd>
    <p><!-- CL 400795 -->
      When tracing and the
      <a href="/pkg/runtime/pprof#StartCPUProfile">CPU profiler</a> are
      enabled simultaneously, the execution trace includes CPU profile
      samples as instantaneous events.
    </p>
  </dd>
</dl><!-- runtime/trace -->

<dl id="sort"><dt><a href="/pkg/sort/">sort</a></dt>
  <dd>
    <p><!-- CL 371574 -->
      The sorting algorithm has been rewritten to use
      <a href="https://arxiv.org/pdf/2106.05123.pdf">pattern-defeating quicksort</a>, which
      is faster for several common scenarios.
    </p>
    <p><!-- https://go.dev/issue/50340 --><!-- CL 396514 -->
      The new function
      <a href="/pkg/sort/#Find">Find</a>
      is like
      <a href="/pkg/sort/#Search">Search</a>
      but often easier to use: it returns an additional boolean reporting whether an equal value was found.
    </p>
  </dd>
</dl><!-- sort -->

<dl id="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
  <dd>
    <p><!-- CL 397255 -->
      <a href="/pkg/strconv/#Quote"><code>Quote</code></a>
      and related functions now quote the rune U+007F as <code>\x7f</code>,
      not <code>\u007f</code>,
      for consistency with other ASCII values.
    </p>
  </dd>
</dl><!-- strconv -->

<dl id="syscall"><dt><a href="/pkg/syscall/">syscall</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51192 --><!-- CL 385796 -->
      On PowerPC (<code>GOARCH=ppc64</code>, <code>ppc64le</code>),
      <a href="/pkg/syscall/#Syscall"><code>Syscall</code></a>,
      <a href="/pkg/syscall/#Syscall6"><code>Syscall6</code></a>,
      <a href="/pkg/syscall/#RawSyscall"><code>RawSyscall</code></a>, and
      <a href="/pkg/syscall/#RawSyscall6"><code>RawSyscall6</code></a>
      now always return 0 for return value <code>r2</code> instead of an
      undefined value.
    </p>

    <p><!-- CL 391434 -->
      On AIX and Solaris, <code>Getrusage</code> is now defined.
    </p>
  </dd>
</dl><!-- syscall -->

<dl id="time"><dt><a href="/pkg/time/">time</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51414 --><!-- CL 393515 -->
      The new method
      <a href="/pkg/time/#Duration.Abs"><code>Duration.Abs</code></a>
      provides a convenient and safe way to take the absolute value of a duration,
      converting −2⁶³ to 2⁶³−1.
      (This boundary case can happen as the result of subtracting a recent time from the zero time.)
    </p>
    <p><!-- https://go.dev/issue/50062 --><!-- CL 405374 -->
      The new method
      <a href="/pkg/time/#Time.ZoneBounds"><code>Time.ZoneBounds</code></a>
      returns the start and end times of the time zone in effect at a given time.
      It can be used in a loop to enumerate all the known time zone transitions at a given location.
    </p>
  </dd>
</dl><!-- time -->

<!-- Silence these false positives from x/build/cmd/relnote: -->
<!-- CL 382460 -->
<!-- CL 384154 -->
<!-- CL 384554 -->
<!-- CL 392134 -->
<!-- CL 392414 -->
<!-- CL 396215 -->
<!-- CL 403058 -->
<!-- CL 410133 -->
<!-- https://go.dev/issue/27837 -->
<!-- https://go.dev/issue/38340 -->
<!-- https://go.dev/issue/42516 -->
<!-- https://go.dev/issue/45713 -->
<!-- https://go.dev/issue/46654 -->
<!-- https://go.dev/issue/48257 -->
<!-- https://go.dev/issue/50447 -->
<!-- https://go.dev/issue/50720 -->
<!-- https://go.dev/issue/50792 -->
<!-- https://go.dev/issue/51115 -->
<!-- https://go.dev/issue/51447 -->
