## DRAFT RELEASE NOTES — Introduction to Go 1.19

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.

## Changes to the language

TODO: complete this section

## Ports

TODO: complete this section, or delete if not needed

## Tools

TODO: complete this section, or delete if not needed

### Go command

TODO: complete this section, or delete if not needed

#### New `unix` build constraint

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

## Runtime

TODO: complete this section, or delete if not needed

## Compiler

TODO: complete this section, or delete if not needed

## Linker

TODO: complete this section, or delete if not needed

## Core library

TODO: complete this section

### Minor changes to the library

As always, there are various minor changes and updates to the library, made with the Go 1 promise of compatibility in mind.

TODO: complete this section

image/draw

  `Draw` with the `Src` operator preserves non-premultiplied-alpha colors when destination and source images are both `*image.NRGBA` (or both `*image.NRGBA64`). This reverts a behavior change accidentally introduced by a Go 1.18 library optimization, to match the behavior in Go 1.17 and earlier.

net

  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 `GODEBUG=netdns=cgo` to use the cgo-based resolver should work. Please report any such problems on the issue tracker.

  When a net package function or method returns an "I/O timeout" error, the error will now satisfy `errors.Is(err, context.DeadlineExceeded)`. When a net package function returns an "operation was canceled" error, the error will now satisfy `errors.Is(err, context.Canceled)`. 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.

strconv

  `strconv.Quote` and related functions now quote the rune 007F as `\x7f`, not `\u007f`.