picture

Go 1.19 is now available and can be obtained by visiting the download page. "Most of its changes are in the toolchain, runtime, and library implementation. As always, this release maintains the Go 1 compatibility promise. We expect nearly all Go programs to continue to compile and run as before." This release includes some tweaks to the memory model, the LoongArch port, improvements to the documentation commenting mechanism, and more.

The specific updates are as follows:

  • Go 1.19 rounds out and improves on Go 1.18. The development team focused generics development for Go 1.19 on addressing some minor issues and corner cases reported by the community, as well as significant performance improvements (up to 20% performance improvements for some generic programs).

  • Documentation comments now support links, lists, and clearer heading syntax. This change helps users write cleaner, easier-to-navigate documentation comments, especially in packages with large APIs. As part of this change, gofmt documentation comments are now reformatted to apply standard formatting to the use of these functions. See the "Go Doc Comments" for all the details.

  • Go's memory model now explicitly defines the behavior of the sync/atomic package. The formal definition of happens-before relationships has been modified to align with the memory models used by C, C++, Java, JavaScript, Rust, and Swift. Existing programs are not affected. As the memory model has been updated, there are also new types in the sync/atomic package, such as atomic.Int64 and atomic.Pointer[T], to make it easier to work with atomic values.

  • For security reasons, the os/exec package no longer respects relative paths in PATH lookups. See the  package documentation for details . The existing use of golang.org/x/sys/execabs can be moved back to os/exec in programs built only with Go 1.19 or later.

  • The garbage collector adds support for soft memory limits, discussed in detail in the new garbage collection guide. This limit is especially useful for optimizing Go programs to run as efficiently as possible in containers with dedicated amounts of memory.

  • The new build constraint unix is ​​satisfied when the target operating system (GOOS) is any Unix-like system. Today, Unix-like refers to all of Go's target operating systems, except js, plan9, windows, and zos.

  • In addition, Go 1.19 includes various performance and implementation improvements, including dynamically adjusting the initial goroutine stack to reduce stack copying, automatic use of additional file descriptors on most Unix systems, use of large switch statements on x86-64 and ARM64 Jump tables, support for debugger injection function calls on ARM64, register ABI support on RISC-V, and  GOARCH=loong64experimental support for Linux running on LoongArch ( ) on the Loongson 64-bit architecture

Did you gain anything after reading this article? Like, share is the biggest support!


picture