Golang 1.16, the latest stable release of the language, is available in Fedora 34. Compared to Golang 1.15, there are a number of changes, including, among others:

  • Module-aware mode is enabled by default, further consolidating Golang’s move towards modules being the preferred dependency management system.

  • The go install command has been updated, adding the ability to build by version suffixes. It is now recommended that one use go install for building and installing Golang packages when using modules.

  • Published modules can now be flagged as 'retracted' using the retract flag in go.mod. This does not remove a published version, but it will be ignored for users wanting the latest version of a module. Dependencies for a retracted module are preserved, but there is a warning for those who specifically wish to use the retracted package (dependencies will not break as a result of using retract).

  • Static files and file trees can now be part of an executable using the embed package.

  • The Golang runtime is improved, with memory allocation on Linux now reacting quicker to system memory demand.

  • The runtime/metrics package allows for better monitoring of the Golang runtime.

  • The linker has been further improved compared to v1.15 and is significantly quicker, uses less memory, and usually creates smaller executables.

  • The io package has been updated, including adding of the io/fs package for interface with the file system, as well as deprecation of io/ioutil. Functionality of io/ioutil has been moved to other packages (io and os).

  • The GOVCS environment variable has been introduced to allow users to specify which version control system can be trusted and used to download source code.

For further details, see the Golang 1.16 release notes.