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.