Go 1.21.0 发布

shiguang2023 · · 1865 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

今天,Go 团队非常兴奋地发布了 Go 1.21 版本,你可以通过访问下载页面获取它。 Go 1.21 包括了大量新的特性和改进。这里列出了一些显著的变化;要获取完整列表,请参阅发布说明。 ### 工具改进 - 我们在 1.20 中宣布预览的 PROFILE GUIDED OPTIMIZATION (PGO) 特性现在正式可用了!如果主包目录中存在一个名为 default.pgo 的文件,go 命令将使用它来启用 PGO 构建。参见 PGO 文档以获取更多详细信息。我们对大量 Go 程序测量了 PGO 的影响,性能提升在 2-7%之间。 - go 工具现在支持向后和向前的语言兼容性。 ### 语言变化 - 新增内置函数:min、max 和 clear。 - 对泛型函数的类型推导进行了几项改进。规范中类型推导的描述已经扩展和澄清。 - 在未来的 Go 版本中,我们计划解决 Go 编程中最常见的陷阱之一:循环变量捕获。Go 1.21 带有该特性的预览,你可以使用环境变量在代码中启用它。参见 LoopvarExperiment wiki 页面以获取更多详细信息。 ### 标准库新增 - 新增 log/slog 包,用于结构化日志记录。 - 新增 slices 包,用于对任意元素类型的 slice 执行常见操作。这包括通常比 sort 包更快更符合人体工程学的排序函数。 -新增 maps 包,用于对任意键和元素类型的 map 执行常见操作。 -新增 cmp 包,提供比较有序值的新实用程序。 ### 性能改进 除了启用 PGO 时的性能改进: - Go 编译器本身已经使用 PGO 重新构建了 1.21 版本,因此它根据主机架构的不同,构建 Go 程序的速度提升了 2-4%。 - 由于垃圾回收器的调优,一些应用程序的尾延迟可能会减少高达 40%。 - 使用 runtime/trace 收集跟踪信息现在在 amd64 和 arm64 上的 CPU 开销大大降低。 ### 新增对 WASI 的支持 Go 1.21 增加了对 WebAssembly 系统接口 (WASI) 预览 1 (GOOS=wasip1,GOARCH=wasm)的实验性支持。 为方便编写更通用的 WebAssembly (Wasm) 代码,编译器还支持一个新的指令来从 Wasm 主机导入函数:go:wasmimport。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1865 次点击  ∙  2 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传