前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go 1.21 发布了!

Go 1.21 发布了!

作者头像
孟斯特
发布2023-10-16 19:50:48
3550
发布2023-10-16 19:50:48
举报
文章被收录于专栏:code人生

原文在这里[1]。

由Eli Bendersky, on behalf of the Go team 发布于 8 August 2023

Go团队今天非常高兴地发布了Go 1.21版本,你可以通过访问下载页面[2]来获取。

Go 1.21充满了新功能和改进。以下是一些值得注意的变化;完整的列表,请参阅发布说明[3]。

工具改进

•我们在1.20版本预览[4]的基于配置文件的优化(PGO)特性现在已经可以广泛使用了!如果在主包的目录中存在名为default.pgo的文件,go命令将使用它来启用PGO构建。更多详情请查看PGO文档[5]。我们已经在一系列Go程序上测量了PGO的影响,看到了2-7%的性能提升。•go工具现在支持向后[6]和向前[7]的语言兼容性。

语言变化

•新的内置函数:min,max[8]和clear[9]。•对泛型函数的类型推断进行了多项改进。规范中对类型推断[10]的描述已经被扩展和明确化。•在Go的未来版本中,我们计划解决Go编程中最常见的问题之一:循环变量捕获[11]。Go 1.21带来了这个特性的预览,你可以在你的代码中使用环境变量来启用它。更多详情请查看LoopvarExperiment wiki[12]页面。

标准库添加

•新的log/slog[13]包,用于结构化日志。•新的slices[14]包,用于对任何元素类型的切片进行常见操作。这包括比sort[15]包更快、更符合人体工程学的排序函数。•新的maps[16]包,用于对任何键或元素类型的映射进行常见操作。•新的cmp[17]包,带有新的有序值比较工具。

性能改进

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

•Go编译器本身已经在1.21版本中启用了PGO,因此它构建Go程序的速度提高了2-4%,具体取决于主机架构。•由于对垃圾收集器的调优,一些应用可能会看到尾部延迟降低了高达40%。•使用runtime/trace收集跟踪现在在amd64和arm64上的CPU成本大大降低。

新的WASI端口:

•Go 1.21添加了一个实验性的WebAssembly系统接口(WASI)[18]的端口,预览1(GOOS=wasip1,GOARCH=wasm)。•为了便于编写更通用的WebAssembly(Wasm)代码,编译器还支持了一个新的用于从Wasm主机导入函数的指令:go:wasmimport


感谢所有通过编写代码、提交错误、分享反馈和测试发布候选版本的人对这个版本的贡献。你们的努力帮助确保Go 1.21尽可能稳定。如果你发现任何问题,请提交一个问题[19]。

享受Go 1.21吧!

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)[20]进行许可,使用时请注明出处。 author: mengbin[21] blog: mengbin[22] github: mengbin92[23] cnblogs: 恋水无意[24]

References

[1] 这里: https://go.dev/blog/go1.21 [2] 下载页面: https://go.dev/dl/ [3] 发布说明: https://go.dev/doc/go1.21 [4] 1.20版本预览: https://go.dev/blog/pgo-preview [5] PGO文档: https://go.dev/doc/pgo [6] 向后: https://go.dev/doc/godebug [7] 向前: https://go.dev/doc/toolchain [8] min,max: https://go.dev/ref/spec#Min_and_max [9] clear: https://go.dev/ref/spec#Clear [10] 类型推断: https://go.dev/ref/spec#Type_inference [11] 循环变量捕获: https://go.dev/wiki/CommonMistakes [12] LoopvarExperiment wiki: https://go.dev/wiki/LoopvarExperiment [13] log/slog: https://go.dev/pkg/log/slog [14] slices: https://go.dev/pkg/slices [15] sort: https://go.dev/pkg/sort [16] maps: https://go.dev/pkg/maps [17] cmp: https://go.dev/pkg/cmp [18] WebAssembly系统接口(WASI): https://wasi.dev/ [19] 提交一个问题: https://go.dev/issue/new [20] 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0): https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh [21] mengbin: mengbin1992@outlook.com [22] mengbin: https://mengbin.top [23] mengbin92: https://mengbin92.github.io/ [24] 恋水无意: https://www.cnblogs.com/lianshuiwuyi/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孟斯特 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具改进
  • 语言变化
  • 标准库添加
  • 性能改进
  • 新的WASI端口:
    • References
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档