Go 1.19 improves generics and memory model

Go 1.19, the latest version of Google’s Go (Golang) programming language, is available for production. The update improves recently added generics and launches an improved memory model.
With Go 1.19, released on August 2, generic development focused on fixing subtle issues and critical cases reported by the community as well as improving performance (up to 20% in some generic programs) . Long-sought generic features were added to the language with Go 1.18, which was released in March.
The GB memory modelmeanwhile, now explicitly defines the behavior of the sync/atomic package, providing low-level atomic memory primitives to implement synchronization algorithms. The formal definition of the happens-before relationship has been revised to align with the memory models used by C, C++, Java, JavaScript, Rust, and Swift. Existing programs are not affected. In addition to the memory model update, there are new types in the sync/atomic package, such as atomic.int64 and atomic. Pointer (T)which makes it easier to use atomic values.
Go 1.19 can be downloaded from go.dev for Windows, macOS and Linux. Other features of Go 1.19:
- A soft memory limit has been added to the garbage collector. The limit can be useful for optimizing Go programs to run as efficiently as possible in containers with dedicated amounts of memory.
- Performance and implementation improvements include dynamic coroutine stack sizing to reduce stack copyrights, automatic use of additional file descriptors on most Unix systems, jump tables for large switch instructions on x86-64 and ARM64, and support for debugger-injected function calls on ARM64.
- A small correction was made for typing parameters into method declarations. Existing programs are not affected.
- Documentation comments now support links, lists, and header syntax, to help users write clearer documentation comments, especially in packages with large APIs.
- For security reasons, the os/exec package no longer respects relative paths in PATH searches.
- A new construction constraint,
unix
is satisfied when the targeted operating system is a Unilx type operating system.
Copyright © 2022 IDG Communications, Inc.