Go programming language just added native support for Apple's Mac M1 Arm chip

Go 1.6 is out with native support for Apple's M1 Macs as well as performance improvements aimed at cutting build times for large software projects.
Written by Liam Tung, Contributing Writer

Golang, the Google-backed open-source project behind Go, has released version 1.16 of the programming language with native support for Apple Mac M1 chips. 

Go or Golang is a top 20 language in RedMonk's language popularity rankings. Go was conceived in Google in 2007 and today is also used at places like Netflix, American Express, Salesforce, IBM, Target, Twitch, Twitter, Uber, Dropbox and others. 

After several months beta testing, a stable release of Go 1.6 is now available for download, the Go project announced on Tuesday. One of the headline additions is native support for Apple's new Arm-based M1 chips in the new MacBook Air, Mac mini, and 13-inch MacBook Pro. 

SEE: Hiring Kit: Python developer (TechRepublic Premium)

Apple and Google have been collaborating to ensure that Go and Go modules work well running Go x86 binaries under Rosetta 2 and running native Go ARM64 binaries. 

Go already supports Linux on 64-bit ARM and Linux on 32-bit ARM for Raspberry Pi, Windows 10 IoT Core on 32-bit ARM, and many other architecture and OS combinations.

Go doesn't support ARM64 Windows 10 systems natively yet. However, the Golang project says it is the next target it would like to support, allowing it to run natively on the Surface Pro X. That may happen in Go 1.7, which should be released around September based on its previous stable release patterns. 

For macOS, Go notes that Go 1.16 is the last release that will run on macOS 10.12 Sierra. Go 1.17 will require macOS 10.13 High Sierra or later.

For the past two years, the Go project has been working on modernizing the Go linker to improve performance and reduce its memory consumption. The project has been attempting to reduce build times, which has become a problem as the scale of software built in Go has grown.   

"For a representative set of large Go programs, linking is 20-25% faster than 1.15 and requires 5-15% less memory on average for linux/amd64, with larger improvements for other architectures and OSes. Most binaries are also smaller as a result of more aggressive symbol pruning," the project said.

SEE: Developer: Rust programming language is being used for bigger projects

There's a new embed package that provides access to files embedded at compile time: package embed provides access to files embedded in the running Go program.

"Now it is easy to bundle supporting data files into your Go programs, making developing with Go even smoother," says the Golang project. Users can check it in the embed package documentation.

Separately, earlier this month the project enabled the "gopls" Go language server in the Go extension for Microsoft's VS Code editor by default; this provides IDE features, such as autocompletion, formatting, and diagnostics to any compatible editor frontend. 

The Go team took over the Go extension for VS Code from Microsoft last year. As part of that switch, Go has been working to make gopls the default language server in the Go extension for VS Code. This brings it in line with the default status of gopls in most plugins for Vim, Emacs, and other editors. 

Editorial standards