Go 1.18 is now generally available as a production release, with the much-anticipated generics features.
Go is an open-source programming language aimed at being simple, reliable, and efficient. It was originally designed at Google in 2007. What made Go popular is the fact that it is a general-purpose language directed at creating backends.
Go 1.18 arrives seven months after Go 1.17. It’s a big update, with improvements to the language, toolchain implementation, runtime, and libraries.
Go 1.18, which is available for download from go.dev as of March 15, adds support for generic code utilizing parameterized types. Generics have been dubbed the most significant enhancement to the Go programming language since its 2012 introduction. It was also Go programmers’ most-requested feature.
Additional support for some of the more sophisticated general use cases will be included in subsequent editions.
Go 1.18 is the first major language to include fuzzing as part of its standard toolchain. Fuzzing, like generics, has been in development for a long time and is now available in the Go ecosystem.
For those of you unaware, fuzzing is the process of running random data against your test in order to uncover vulnerabilities or inputs that cause it to crash. This fuzzing guide might assist you in getting started with this new capability.
Go 1.18 includes a new workspace mode that makes working with many modules a breeze. With multi-module workspaces, you can tell the Go command that you’re writing code in multiple modules at the same time and easily build and run code in those modules.
Last but not least, the expansion of Go 1.17’s register ABI calling convention to Apple M1, ARM64, and PowerPC64 architectures has resulted in up to a 20% increase in CPU speed in Go 1.18.