https://go.dev/blog/go1.21rc Go * Why Go arrow_drop_down + Case Studies Common problems companies solve with Go + Use Cases Stories about how and why companies use Go + Security How Go can help keep you secure by default * Learn * Docs arrow_drop_down + Effective Go Tips for writing clear, performant, and idiomatic Go code + Go User Manual A complete introduction to building software with Go + Standard library Reference documentation for Go's standard library + Release Notes Learn what's new in each Go release * Packages * Community arrow_drop_down + Recorded Talks Videos from prior events + Meetups open_in_new Meet other local Go developers + Conferences open_in_new Learn and network with Go developers from around the world + Go blog The Go project's official blog. + Go project Get help and stay informed from Go + Get connected [google-gro] [github] [twitter] [reddit] [slack] [stack-over] Go. * Why Go navigate_next navigate_beforeWhy Go + Case Studies + Use Cases + Security * Learn * Docs navigate_next navigate_beforeDocs + Effective Go + Go User Manual + Standard library + Release Notes * Packages * Community navigate_next navigate_beforeCommunity + Recorded Talks + Meetups open_in_new + Conferences open_in_new + Go blog + Go project + Get connected [google-gro] [github] [twitter] [reddit] [slack] [stack-over] The Go Blog Go 1.21 Release Candidate Eli Bendersky, on behalf of the Go team 21 June 2023 The Go 1.21 first Release Candidate (RC) is available today on the download page! Go 1.21 is packed with new features and improvements. Getting the RC (release candidate) allows you to experiment with it early, try it on your workloads, and report any issues before the final release (scheduled for August). Here are some notable changes and features in Go 1.21; for the full list, refer to the full release notes. (Please note that the first RC for Go 1.21 is called go1.21rc2 because a bug was found and fixed after tagging go1.21rc1) Tool improvements * The Profile Guided Optimization (PGO) feature we announced for preview in 1.20 is now generally available! If a file named default.pgo is present in the main package's directory, the go command will use it to enable a PGO build. See the PGO documentation for more details. We've measured the impact of PGO on a wide set of Go programs and see performance improvements of 2-7%. * The go tool now supports backward and forward language compatibility. Language changes * New built-in functions: min, max and clear. * Several improvements to type inference for generic functions. The description of type inference in the spec has been expanded and clarified. * In a future version of Go we're planning to address one of the most common gotchas of Go programming: loop variable capture. Go 1.21 comes with a preview of this feature that you can enable in your code using an environment variable. See this LoopvarExperiment wiki page for more details. Standard library additions * New log/slog package for structured logging. * New slices package for common operations on slices of any element type. This includes sorting functions that are generally faster and more ergonomic than the sort package. * New maps package for common operations on maps of any key or element type. * New cmp package with new utilities for comparing ordered values. Improved performance In addition to the performance improvements when enabling PGO: * The Go compiler itself has been rebuilt with PGO enabled for 1.21, and as a result it builds Go programs 2-4% faster, depending on the host architecture. * Due to tuning of the garbage collector, some applications may see up to a 40% reduction in tail latency. * Collecting traces with runtime/trace now incurs a substantially smaller CPU cost on amd64 and arm64. A new port to WASI Go 1.21 adds an experimental port for WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1, GOARCH=wasm). To facilitate writing more general WebAssembly (WASM) code, the compiler also supports a new directive for importing functions from the WASM host: go:wasmimport. Please download the Go 1.21 RC and try it! If you notice any problems, please file an issue. Previous article: Go Developer Survey 2023 Q1 Results Blog Index Why Go Use Cases Case Studies Get Started Playground Tour Stack Overflow Help Packages Standard Library About Go Packages About Download Blog Issue Tracker Release Notes Brand Guidelines Code of Conduct Connect Twitter GitHub Slack r/golang Meetup Golang Weekly The Go Gopher * Copyright * Terms of Service * Privacy Policy * Report an Issue * System theme Dark theme Light theme Google logo go.dev uses cookies from Google to deliver and enhance the quality of its services and to analyze traffic. Learn more. Okay