The latest update of the Go programming language also introduces an experimental port for WASI, the WebAssembly System Interface. Credit: AlexandreNunes / Shutterstock Go 1.21, the latest update of Google’s Go programming language, is now available as a production release. The new version adds built-in functions—min, max, and clear—and makes profile-guided optimization (PGO) generally available. WebAssembly accommodations also are highlighted. The min and max functions compute the smallest or largest value, respectively, of a fixed number of arguments or ordered types. There must be at least one argument. The clear function takes an argument of map, slice, or type parameter type and deletes or zeroes out all of the elements. Published August 8, Go 1.21 can be downloaded from the project website. The production release follows a release candidate published June 21. Profile-guided optimization, introduced as a preview in Go 1.20 in February, graduates from preview status in the new version. PGO enables the compiler toolchain to do workload-specific and application-specific optimizations based on runtime profile information. So far, PGO has improved performance by 2% to 7% when the impact was measured on a wide set of programs, Go project developers said. The Go compiler has been rebuilt with PGO enabled. Go 1.21 promises additional performance improvements. Tuning the garbage collector could result in some applications seeing as much as a 40% reduction in tail latency, while collecting traces with runtime/trace now incurs a much smaller CPU cost on AMD64 and Arm64 systems. Elsewhere in Go 1.21: An experimental WASI (WebAssembly System Interface) port is being previewed. To help with writing more general WebAssembly code, the compiler also supports a new wasmimport directive for importing functions from the Wasm host. The standard library adds a new log/slog package for structured logging. A new slices package is offered for common operations on slices of any element types. This includes sorting functions that are generally faster and more ergonomic than the sort package. The standard library also adds a new maps package for common operations on maps of any key or element type. A new cmp package includes new utilities for comparing ordered values. The go tool now supports both backward and forward language compatibility. Improvements have been made to type inference for generic functions. The description of type inference has been expanded and clarified in the spec. A future version of Go will address a common “gotcha” with the language: loop variable capture. Go 1.21 previews this capability, which can be enabled in code using an environment variable. Related content feature What is Rust? Safe, fast, and easy software development Unlike most programming languages, Rust doesn't make you choose between speed, safety, and ease of use. Find out how Rust delivers better code with fewer compromises, and a few downsides to consider before learning Rust. By Serdar Yegulalp Nov 20, 2024 11 mins Rust Programming Languages Software Development how-to Kotlin for Java developers: Classes and coroutines Kotlin was designed to bring more flexibility and flow to programming in the JVM. Here's an in-depth look at how Kotlin makes working with classes and objects easier and introduces coroutines to modernize concurrency. By Matthew Tyson Nov 20, 2024 9 mins Java Kotlin Programming Languages analysis Azure AI Foundry tools for changes in AI applications Microsoft’s launch of Azure AI Foundry at Ignite 2024 signals a welcome shift from chatbots to agents and to using AI for business process automation. By Simon Bisson Nov 20, 2024 7 mins Microsoft Azure Generative AI Development Tools news Microsoft unveils imaging APIs for Windows Copilot Runtime Generative AI-backed APIs will allow developers to build image super resolution, image segmentation, object erase, and OCR capabilities into Windows applications. By Paul Krill Nov 19, 2024 2 mins Generative AI APIs Development Libraries and Frameworks Resources Videos