首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Go 1.21 发布首个 RC,正式版将在 8 月前推出

出品|开源中国

Go 1.21 首个 RC 已发布。

虽然这是 Go 1.21 的第一个 RC,但它的版本号却是go1.21rc2。因为开发团队在为 RC1 打上 tag 后就发现了一个 bug,所以他们马上基于该版本进行了修复并发布更新。

Go 1.21 主要变化

改进工具链

配置文件引导优化 (PGO) 功能正式 GA

在 1.20 中处于预览阶段的启用配置文件引导优化 (PGO) 功能现已正式 GA。如果主软件包目录中存在名为default.pgo的文件,go命令将使用它来启用 PGO 构建。

Go 开发团队测试了 PGO 对多种 Go 程序的影响,发现性能提高了 2-7%

更多详细信息查看 PGO 文档

gotool同时向前和向后兼容语法

语言变更

添加新的内置函数:min, max和clear

对泛型函数的类型推断进行了多项改进,包括扩展和解释清楚规范中类型推断的描述

在未来版本中,开发团队计划解决 Go 编程中最常见的问题之一:循环变量捕获 (loop variable capture)。Go 1.21 附带了此功能的预览版,目前可以使用环境变量在代码中启用该功能。

点此查看详情

添加新的标准库

log/slog 包:用于结构化日志记录

slices 包:增用于对任何元素类型的切片进行常见操作,这个包比 sort 包更快、更符合人体工程学

maps 包:用于对任何类型 key-value 进行常见操作

cmp 包:用于比较有序值 (ordered values)

优化性能

除了启用 PGO 时的性能改进之外:

Go 编译器本身已经在 1.21 中启用 PGO 进行了重建,因此它构建 Go 程序的速度提高了 2-4%,具体取决于主机架构

由于垃圾收集器的调整,某些应用程序的尾部延迟可能会减少高达 40%

现在使用runtime/trace收集跟踪在 amd64 和 arm64 上产生的 CPU 开销要小得多

支持 WASI

Go 1.21 已实验性支持WebAssembly System Interface (WASI), Preview 1 (GOOS=wasip1,GOARCH=wasm)。

为了方便编写更通用的 WebAssembly (WASM) 代码,编译器还支持从 WASM 主机导入函数的新指令:go:wasmimport

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230625A05POT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券