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%

更多详细信息查看 PGO 文档

语言变更

  • 添加新的内置函数: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://www.oschina.net/news/252970/go-1-21-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。