After the big release of Go 1.18, Go continues to develop new features.
Atomic Types in Go 1.19
Pointer are new atomic types under
sync/atomic package. If you are unfamiliar, we could summarize the atomic package that
provides low-level atomic memory primitives useful for implementing synchronization algorithms*.
With these new types, we could use
CompareAndSwap functions. TheAdd function is also could be used for numeric types. These functions simplify the code we have written before Go 1.19, and you can check this new code on Go Playground.
Soft Memory Limit
As you may know, when it comes to tuning memory on Go, you have only one option to set
GOGC(runtime/debug.SetGCPercent). Even though this optimization gives a tradeoff between CPU and memory, it does not respect users’ memory limit
As described in the proposal, we could define a soft memory limit with the
GOMEMLIMIT environment variable or
This new feature could decrease memory limits and define better memory utilization. It could be time to leave behind the memory ballast workaround the twitch team gave us🙏.
New Functions in Golang 1.19
Golang 1.19 has several changes in core libraries.