Go 1.21 正式发布
Go 1.21 已正式发布。
该版本大部分变化集中在工具链、运行时和库的实现。与往常一样,该版本保持了 Go 1 的兼容性承诺;事实上,Go 1.21 改进了这一承诺。开发团队希望几乎所有 Go 程序都能像以前一样继续编译和运行。
此外,Go 1.21 对版本编号进行了一个小更改。
过去使用 Go 1.N 来指代整个 Go 语言版本和版本系列,以及该系列中的第一个版本。从 Go 1.21 开始,第一个版本现在是 Go 1.N.0。最新发布的是 Go 1.21 语言及其初始实现 Go 1.21.0 release。
像 go version
这样的工具会将版本号显示为"go1.21.0
"。有关新版本编号的详细信息,请参阅"Go Toolchains"文档中的“Go versions”。
下载地址:https://go.dev/dl/
改进工具链
- 配置文件引导优化 (PGO) 功能正式 GA。
在 1.20 中处于预览阶段的启用配置文件引导优化 (PGO) 功能现已正式 GA。如果主软件包目录中存在名为default.pgo
的文件,go
命令将使用它来启用 PGO 构建。
Profile-guided optimization (PGO) 是计算机编程中的一种编译器优化技术,翻译过来是使用配置文件引导的优化。
PGO 也被称为:
Profile-directed feedback (PDF)
Feedback-directed optimization (FDO)
它的原理是编译器使用程序的运行时 profiling 信息,生成更高质量的代码,从而提高程序的性能。
PGO 作为一项通用的编译器优化技术,不局限于某一门语言。比如 Rust 编译器也在探索使用 PGO,微软则采用 LTO+PGO 来优化 Linux 内核。
在 Go 语言中,最初关于 PGO 的提案是建议向 Go GC 工具链增加对配置文件引导优化 (PGO) 的支持,以便工具链能根据运行时信息执行特定于应用程序和工作负载的优化。
Go 开发团队测试了 PGO 对多种 Go 程序的影响,发现性能提高了 2-7%。
语言变更
- 添加新的内置函数: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
。
延伸阅读

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
开源的 OA 办公系统 — 勾股 OA 4.80.09 发布
勾股 OA 办公系统是一款简单实用的开源的企业办公系统。系统集成了系统设置、人事管理、行政管理、消息管理、企业公告、知识库、审批流程设置、办公审批、日常办公、财务管理、客户管理、合同管理、项目管理、任务管理等功能模块。系统简约,易于功能扩展,方便二次开发,可以用来做日常 OA,CRM,ERP,业务管理等系统。 勾股办公,智在轻松!勾股 OA4.80.09 发布啦,该版本主要更新了如下功能: 🔴更新日志: 1、优化:员工选择组件,支持清空已选数据;2、优化:快速开启Tab的方法,防止重复打开同样的Tab;3、升级:layui框架升级到最新的2.8.12版本;4、优化:附件预览体验优化;5、新增:更新省/市/县数据库文件;6、修复:销售机会归属人筛选bug修复;7、优化:合同的编辑权限优化l8、优化:导出EXCEL组件优化,点击分页后多弹出窗口问题修复,并支持多行合并;9、新增:新增附件管理功能;10、修复:删除公告的bug修复;11、优化:系统左侧菜单跟随效果优化,当Tab切换时,左边的菜单跟随切换;12、新增:文章列表新增展示阅读权限字段;13、已知的其他问题处理完善。 内置模块 配...
- 下一篇
gRPC 1.57.0 发布,跨语言 RPC 框架
gRPC 是可以在任何环境中运行的现代开源高性能 RPC 框架。gRPC 1.57.0 现已发布,包含了一些完善、改进和错误修复;具体更新内容如下: Core [EventEngine] 更改GetDNSResolver为 returnabsl::StatusOr<std::unique_ptr<DNSResolver>>。(#33744) [deps] 删除 libuv 依赖项。(#33748) [ssl] 修复 SSL stack以处理长度超过 BIO 缓冲区大小的大型 handshake messages。(#33638) [BoringSSL] 更新 third_party/boringssl-with-bazel。(#33690) [ruby] 实验性 client side fork支持。(#33430) [core] 添加通道参数以在流上设置 DSCP。(#28322) [xDS LB] xDS pick first支持。(#33540) [EventEngine] 简化EventEngine::DNSResolverAPI。(#33459) [i...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19