<!--{
	"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>
  TODO: complete this section
</p>
<h2 id="ports">Ports</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="tools">Tools</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h3 id="go-command">Go command</h3>
<p>
  TODO: complete this section.
</p>

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

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

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

<h2 id="runtime">Runtime</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="compiler">Compiler</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="linker">Linker</h2>
<p>
  TODO: complete this section, or delete if not needed
</p>
<h2 id="library">Core library</h2>
<p>
  TODO: complete this section
</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: complete this section
</p>

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

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

<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><!-- 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 cancelation or timeout causes a net
      package function or method to return an error, while preserving
      backward compatibility for error messages.
    </p>
  </dd>
</dl><!-- net -->

<dl id="os/exec"><dt><a href="/pkg/os/exec/">os/exec</a></dt>
  <dd><!-- https://go.dev/issue/50599 -->
    <p>
      An <code>exec.Cmd</code> with a non-empty <code>Dir</code> and a
      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 <code>(*exec.Cmd).Environ</code> reports the
      environment that would be used to run the command, including the
      aforementioned <code>PWD</code> variable.
    </p>
  </dd>
</dl> <!-- os/exec -->

<dl id="runtime"><dt><a href="/pkg/runtime/">runtime</a></dt>
  <dd>
    <p><!-- https://go.dev/issue/51461 -->
      The <code>GOROOT</code> 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="strconv"><dt><a href="/pkg/strconv/">strconv</a></dt>
  <dd>
    <p><!-- CL 397255 -->
      <a href="/pkg/strconv/#strconv.Quote"><code>strconv.Quote</code></a>
      and related functions now quote the rune 007F as <code>\x7f</code>,
      not <code>\u007f</code>.
    </p>
  </dd>
</dl><!-- strconv -->
