The latest Go 1.15 release has been announced for general availability. This release comes with lots of changes mainly in the implementation of the toolchain, runtime, and libraries. It also maintains backward compatibility with previous versions.
Go, also known as Golang is a popular, modern programming language that is syntactically similar to C. It comes with memory safety, garbage collection, structural typing, and CSP-style concurrency. The language comes with two major implementations namely Google‘s self-hosting compiler toolchain targeting multiple operating systems, mobile devices, and WebAssembly. The other is gccgo, a GCC frontend.
Some of the main highlights with this release include substantial improvements to the linker, improves allocation for small objects at high core counts, and deprecates X.509 CommonName. GOPROXY now supports skipping proxies that return errors and a new embedded tzdata package has been added.
The language itself has no changes however the Go 1.15 release requires macOS 10.12 Sierra or later. It also drops support for 32-bit binaries on macOS, iOS, iPadOS, watchOS, and tvOS.
There is now added support for OpenBSD 6.7 on GOARCH=arm and GOARCH=arm64. Typical compiled binary sizes are now reduced by around 5% compared to Go 1.14.
The toolchain now mitigates Intel CPU erratum SKX102 on GOARCH=amd64 by aligning functions to 32-byte boundaries and padding jump instructions. While this padding increases binary sizes, this is more than made up for by the binary size improvements mentioned above. A –spectre flag to both the compiler and the assembler, to allow enabling Spectre mitigations.
For more details about the Go 1.15 release and all the major and minor changes please visit the official release notes found here.