Go 1.27 Is Released

database641281 pts0 comments

Go 1.27 is released - The Go Programming Language

The Go Blog

Go 1.27 is released

Nicholas Husin, on behalf of the Go team

19 August 2026

Today the Go team is pleased to release Go 1.27. You can find its binary<br>archives and installers on the download page.

Go 1.27 brings major enhancements across the language, toolchain, runtime, and<br>standard library. Below are some of the key highlights.

Language changes

Go 1.27 introduces three notable updates to the<br>language specification.

First, generic methods are now supported. For example, see<br>math/rand/v2.Rand:

// Prior to Go 1.27, a separate method on Rand had to be added for each type<br>// (unsigned integer methods omitted for brevity).<br>func (r *Rand) Int32N(n int32) int32<br>func (r *Rand) Int64N(n int64) int64<br>func (r *Rand) IntN(n int) int

// Go 1.27 adds a new generic method that works for all integer types.<br>func (r *Rand) N[Int intType](n Int) Int

Second, a key in a struct literal may now be any<br>valid field selector for the struct type, allowing fields<br>in nested or embedded structs to be initialized directly:

type Habitat struct {<br>Burrow string

type Gopher struct {<br>Name string<br>Habitat // Embedded struct.

// Go 1.27 allows using Burrow as a key directly.<br>g := Gopher{<br>Name: "Gopher",<br>Burrow: "Burrow #42",

Finally, function type inference has been generalized to apply in all assignment<br>contexts. Generic functions can now be used without explicit type arguments in<br>composite literals, type conversions, and channel sends:

func GenericFormatter[T any](v T) string {<br>return fmt.Sprintf("value: %v", v)

type IntFormatter func(int) string

// Go 1.27 infers T = int in composite literals, conversions, and channel sends.<br>formatters := []IntFormatter{GenericFormatter}<br>fn := IntFormatter(GenericFormatter)<br>ch := make(chan IntFormatter, 1)<br>ch<br>Tool improvements

go fix includes several new<br>modernizers:<br>atomictypes, embedlit, slicesbackward, and unsafefuncs.

go doc now supports package@version queries such<br>as go doc example.com/pkg@v1.2.3.

go mod tidy now automatically consolidates<br>multiple require blocks in go.mod into a standard direct and indirect<br>two-block structure.

Performance and runtime

Size-specialized memory allocation<br>reduces small object (The goroutineleak profile in<br>runtime/pprof is now generally available, allowing<br>automatic detection of permanently blocked goroutines.

Standard library additions

encoding/json/v2 provides high-level JSON processing<br>with configurable options and stricter defaults, alongside<br>encoding/json/jsontext for low-level streaming. The<br>existing encoding/json package is now backed by the<br>v2 implementation for faster unmarshaling while maintaining backwards<br>compatibility.

crypto/mldsa implements the post-quantum<br>ML-DSA signature scheme (FIPS 204), integrated into<br>crypto/x509 and crypto/tls.

uuid provides native support for generating and<br>parsing UUIDs.

simd and architecture-specific<br>simd/archsimd provide experimental SIMD support.

net/http/httptest adds<br>NewTestServer, providing an<br>in-memory fake network suitable for use with the<br>testing/synctest package.

Please read the Go 1.27 release notes for the complete list of<br>changes and details.

Over the next few weeks, follow-up blog posts will cover some of the topics<br>relevant to Go 1.27 in more detail. Check back later to read those posts.

Thanks to everyone who contributed to this release by writing code, filing bugs,<br>trying out experimental additions, and testing release candidates. As always, if<br>you notice any problems, please file an issue.

We hope you enjoy using Go 1.27!

Previous article: Introducing the pkg.go.dev API

Blog Index

go.dev uses cookies from Google to deliver and enhance the quality of its services and to<br>analyze traffic. Learn more.

Okay

type rand func struct language release

Related Articles