February 4, 2023


For computer aficionados

Go language revises memory model

Go 1.19, an update of the Google-designed programming language thanks in August, introduces a revised memory design and new types that make it a lot easier to use atomic values.

Now in a preview stage, Go 1.19 can be downloaded from go.dev. The release is even now thought of unstable at this issue.

With Go 1.19, the language’s memory design has been revised to align Go with the memory product made use of by C, C++, Java, JavaScript, and Swift, according to launch notes. Go 1.19 also features new forms in the sync/atomic offer that make it less difficult to use atomic values this kind of as atomic.int64 and atomic.Pointer(T).

The Go memory design specifies situations under which reads of a variable in 1 goroutine can be assured to observe values made by writes to the identical variable in a distinct goroutine. Go only gives sequentially regular atomics, not any of a lot more calm sorts available in other languages.

Go 1.19 also introduces a “small” adjust to the language, consisting of a correction to the scope of variety parameters in process declarations. Current packages are unaffected. Go 1.19 follows the momentous launch in March of Go 1.18, which highlighted long-sought generics capabilities. 

Other new functions and enhancements in Go 1.19:

  • The runtime now contains support for a smooth memory limit. The limit features the Go heap and other memory managed by the runtime and excludes exterior memory resources this kind of as mappings of the binary, memory managed in other languages, and memory held by the OS on behalf of the Go plan. Also, the runtime now schedules less GC worker routines on idle OS threads when the application is idle ample to force a periodic GC cycle.
  • The compiler now uses a soar table to carry out huge integer and string switch statements. Effectiveness improvements for the switch statement change but can be on the buy of 20% faster.
  • The release supports links, lists, and clearer headings in doc responses.
  • The create constraint, unix, is now recognized in //go:create lines.
  • Assistance is added for the Loongson 64-little bit architecture LoongArch on Linux.

Copyright © 2022 IDG Communications, Inc.