The Google-developed open source programming language, Go is useful for creating Kubernetes, Istio, Docker, and several other cloud-native projects.
While the latest Go update, Go 1.14 released on February 25, brings improvements to the runtime and compiler, it will be the last version to support 32-bit on Apple platforms, according to the release notes.
Also, Go 1.14 brings improvements across the board to Windows and WebAssembly - a low-level programming language for in-browser client-side scripting, which is an offshoot of Mozilla research project.
The Major Changes and Improvements in Go 1.14
Improvements to the Go runtime: with the performance of most use cases of defer boosted to incur nearly no overhead, compared to calling the deferred function directly. The defer can now be used in performance-critical code without overhead issues.
The runtime also makes goroutines asynchronously preemptive, which means loops without function calls will no longer be potentially deadlock to the scheduler or significant delay in garbage collection. This functionality is supported on all platforms except darwin/arm, windows/arm, js/wasm, and plan9/*.
Go 1.14 programs on Linux and MacOS will get more signals than earlier versions: the preemption implementation is that programs using such packages as syscall or golang.org/x/sys/unix will get more slow system calls fail with EINTR errors. As these programs have to handle the errors in a way, likely by looping the system to try again.
Go compiler Improvements: Go 1.14 adds -d=checkptr as an option to compile-time for checking that code is abiding by unsafe.Pointer rules dynamically. And the compiler can now emit machine-readable logs of key optimization using the -json flag, which includes inlining and bounds-check elimination.
The detailed escape analysis diagnostics also now work, and experimental support offered for compiler-inserted instrumentation for fuzzing.
Go 1.14 support for 32-bit Apple platforms
Go 1.14 release will be the last version to support 32-bit binaries on MacOS, and also likely to be the last to support 32-bit on the other Apple platforms like iPadOS, iOS, WatchOS, and tvOS.
For the language change, the embedding of overlapping interfaces is now permitted, with support discontinued for the Google Native Client platform. While the 64-bit architecture of FreeBSD is also supported, and the go command Subversion repos support in module mode.
The go command also has snippets of error messages in plain-text from HTTP servers and module proxies. And binaries on Windows are enabled for system-level memory protection by Data Execution Prevention (DEP).