Go 1.19 is expected to be released in August 2022, and the beta version of Go 1.19 is now available. Here are the main changes in GO 1.19.

Changes to the language

There are only minor changes to the language, with minor corrections to the scope of type parameters in method declarations. Existing programs are not affected.

Memory Model

The Go memory model has been modified to be consistent with the memory model used by C, C++, Java, JavaScript, Rust, and Swift.

Porting

Go 1.19 supports LoongArch, a 64-bit architecture for DragonCore on Linux.

The new unix* build constraint

The build constraint unix can now be identified in the /go:build line, and is satisfied if the target OS is a Unix or Unix-like system.

Run

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, excluding external memory sources such as mappings of binaries themselves, memory managed in other languages, and memory held by the operating system on behalf of Go programs.

Compiler

  • The compiler now uses jump tables for large integer and string switch statements. switch statements have varying performance improvements, about 20% faster.
  • The riscv64 port now supports passing function arguments and results using registers, and benchmarks show a performance improvement of 10% or more. the Go compiler now requires this -p=importpath flag to build linkable target files.

Assembler

As with the compiler, the assembler now requires the -p=importpath flag to build linkable target files.

Linker

On ELF platforms, the linker now emits compressed DWARF sections in the standard gABI format, rather than the traditional .zdebug format.

The rest can be seen in the go1.19 documentation, where some of the changes have not yet been implemented and may have been removed in the official release.

Reference