1.1.2

Latest release in branch 1.1
Released 12 years ago (August 13, 2013)

Software Go
Branch 1.1
Status
End of life
End of life June 19, 2014
First official release version 1.1
First official release date 12 years ago (May 13, 2013)
Release notes https://go.dev/doc/go1.1
Source code https://github.com/golang/go/tree/go1.1.2
Documentation https://go.dev/doc/
Go 1.1 Releases View full list

What Is New in Go 1.1

Go 1.1 delivers significant performance improvements and new language features while maintaining full compatibility with Go 1. The focus is on making Go faster and more efficient for production systems.

Category Key Changes
Performance Garbage collector, scheduler, and compiler optimizations
Language Method values, return requirements, and int size changes
Standard Library New packages, net/http timeouts, and testing enhancements
Tools Go command changes and cross-compilation fixes

What performance improvements were made in Go 1.1?

The garbage collector and scheduler got major optimizations. The GC is now more parallel, reducing pause times by 30-50% in typical cases. This makes Go much more suitable for low-latency applications.

The compiler generates better code across all architectures. Basic operations like interface method calls and channel operations are significantly faster. In practice, most programs will see a noticeable speedup without any code changes.

What new language features were introduced?

Method values are now supported, allowing you to reference a method as a first-class value. This enables patterns common in other languages where methods can be passed around like functions.

var f func() = obj.Method  // Now valid in 1.1

The return statement requirements were relaxed. You can now omit explicit returns in functions that have named result parameters and a final terminating statement like panic or for loop.

How did the standard library improve?

Several new packages were added including go/format for formatting Go source and net/http/httptest for HTTP testing. The testing package gained better benchmarking support and parallel test execution.

Critical timeout support was added to net/http. You can now set timeouts for reading request headers and bodies, preventing resource exhaustion from slow clients. This matters because it helps build more robust web servers.

What tooling changes should developers know about?

The go command got smarter about cross-compilation. It now properly handles cgo files during cross-builds instead of silently ignoring them. This fixes a common source of confusion when building for different platforms.

Build constraints gained more flexibility with the "// +build" directive. You can now use multiple lines of build constraints and they combine with OR logic between lines and AND logic within each line.

FAQ

Does Go 1.1 break compatibility with Go 1 programs?
No, Go 1.1 maintains full compatibility with the Go 1 specification. All valid Go 1 programs should work unchanged in Go 1.1.

What's the most impactful change for web servers?
The HTTP timeout support is huge. Before 1.1, slow clients could tie up connections indefinitely. Now you can set ReadHeaderTimeout and ReadTimeout to automatically close stale connections.

How much faster is the garbage collector?
Benchmarks show 30-50% reduction in pause times. The collector now does more work in parallel with your program, making it feel much smoother under load.

Can I use method values with interfaces?
Yes, method values work with both concrete types and interface types. This enables new patterns for callback registration and event handling.

Did the int type size change affect my code?
Only if you made assumptions about int being exactly 32-bit. The language spec now explicitly says int size is implementation-dependent, though it's still 32-bit on most 32-bit systems.

Releases In Branch 1.1

Version Release date
1.1.2 12 years ago
(August 13, 2013)
1.1.1 12 years ago
(June 13, 2013)
1.1 12 years ago
(May 13, 2013)
1.1rc3 12 years ago
(May 08, 2013)
1.1rc2 12 years ago
(May 07, 2013)