Stable Release in branch 1.12
1.12.17
Released 12 Feb 2020
(6 years ago)
SoftwareGo
Version1.12
Status
End of life
Initial release1.12
25 Feb 2019
(7 years ago)
Latest release1.12.17
12 Feb 2020
(6 years ago)
End of life25 Feb 2020
(Ended 6 years ago)
Release noteshttps://go.dev/doc/go1.12
Source codehttps://github.com/golang/go/tree/go1.12.17
Documentationhttps://go.dev/doc/
Go 1.12 ReleasesView full list

What Is New in Go 1.12

Category Key Changes
Runtime More aggressive memory return to OS, TLS 1.3 support
Toolchain Go modules enabled by default, improved vet tool
Standard Library New debug/trace features, os.Executable(), testing improvements
Platform Support Windows ARM32, FreeBSD 12.0+, macOS 10.12+ requirement

How does Go 1.12 handle memory management differently?

The runtime now returns memory to the operating system more aggressively. This happens when the application is idle, reducing overall memory footprint for long-running services.

In practice, this means your deployed applications will consume less memory during periods of low activity. The scavenger works in the background without impacting application performance.

What's the status of Go modules in 1.12?

Go modules are now enabled by default when outside GOPATH. This version solidifies the module system that was introduced in 1.11, making it the recommended dependency management solution.

The go command automatically handles version selection and dependency resolution. You'll find module support more stable and predictable for production use.

What debugging improvements arrived with 1.12?

The debug/trace package gained new capabilities for analyzing goroutine execution. You can now track why goroutines are blocked and visualize scheduling patterns.

This matters because it gives developers deeper insight into concurrency issues. The new os.Executable() function also provides a reliable way to get the executable path.

Does Go 1.12 include security enhancements?

TLS 1.3 support was added to the crypto/tls package, bringing modern encryption protocols to Go applications. This provides better performance and stronger security defaults.

The implementation follows the final TLS 1.3 specification and works alongside existing TLS 1.2 support. You can enable it through standard tls.Config settings.

What platform changes should developers note?

Windows ARM32 port became officially supported, expanding Go's cross-platform capabilities. FreeBSD 12.0 or newer is now required, and macOS needs 10.12 Sierra or later.

These changes ensure better compatibility with modern operating systems while dropping support for older versions that lack necessary features.

FAQ

Should I expect memory usage changes when upgrading to Go 1.12?
Yes - applications may show lower memory usage during idle periods due to the more aggressive memory scavenging. Active workloads should see minimal impact.

Is TLS 1.3 enabled by default in Go 1.12?
No - you need to explicitly enable it by setting the MaxVersion field in your tls.Config to VersionTLS13. The implementation is complete but opt-in.

What happens to my GOPATH-based projects in 1.12?
They continue to work exactly as before. Module mode only activates automatically when outside GOPATH or when a go.mod file is present.

Can I use the new debug/trace features in production?
Yes - the tracing overhead is minimal and designed for production use. The new goroutine analysis helps identify blocking operations in live systems.

Does Go 1.12 break compatibility with older macOS versions?
Yes - macOS 10.11 El Capitan and earlier are no longer supported. You'll need macOS 10.12 Sierra or newer to compile and run Go 1.12 programs.

Releases In Branch 1.12

VersionRelease date
1.12.1712 Feb 2020
(6 years ago)
1.12.1627 Jan 2020
(6 years ago)
1.12.1509 Jan 2020
(6 years ago)
1.12.1404 Dec 2019
(6 years ago)
1.12.1331 Oct 2019
(6 years ago)
1.12.1217 Oct 2019
(6 years ago)
1.12.1117 Oct 2019
(6 years ago)
1.12.1025 Sep 2019
(6 years ago)
1.12.915 Aug 2019
(6 years ago)
1.12.813 Aug 2019
(6 years ago)
1.12.708 Jul 2019
(7 years ago)
1.12.611 Jun 2019
(7 years ago)
1.12.506 May 2019
(7 years ago)
1.12.411 Apr 2019
(7 years ago)
1.12.308 Apr 2019
(7 years ago)
1.12.205 Apr 2019
(7 years ago)
1.12.114 Mar 2019
(7 years ago)
1.1225 Feb 2019
(7 years ago)
1.12rc111 Feb 2019
(7 years ago)
1.12beta210 Jan 2019
(7 years ago)
1.12beta118 Dec 2018
(7 years ago)