The Go development team has announced that the 1.18 release of the language is here. According to the team, this release is the biggest change to the language to-date.
“It isn’t a stretch to say that the design for parts of Go 1.18 started over a decade ago when we first released Go,” the Go team wrote in a blog post.
One new addition in Go 1.18 is support for generics, which enables functions and data structures to be represented in a generic way. The support in this release will support many common use cases, and future releases of Go will continue to add support for more complicated situations.
Go 1.18 also fully integrates fuzzing, which inputs random data into a test in order to find vulnerabilities or bugs.
Another new feature in this release is the Go workspace mode that enables developers to more easily work with multiple modules. Go modules are a popular feature leveraged by most Go developers, but the 2021 user survey revealed that a main challenge of working with modules was the difficulty that arose when working with more than one module. The team hopes this new workspace mode will alleviate that burden.
In addition to new features, Go 1.18 has achieved a 20% performance improvement. This is the result of the team expanding the register ABI calling convention that was present in Go 1.17 to new architectures, such as Apple M1, ARM64, and PowerPC64.
“Just to underscore how big this release is, a 20% performance improvement is the fourth most important headline,” the team wrote.