slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
Go 1.21.0 正式发布
17611538698
webmaster@21cto.com

Go 1.21.0 正式发布

资讯 2 2284 2023-08-10 06:04:19

图片

导读:Go语言的最新版本1.21.0发布了,一起来看看有什么新鲜和先进的。

Go 1.21.0 昨天在其研发团队官方网站和Google小组上宣布正式发布了。

图片

目前,我在mac上brew的安装包版本仍为1.20,我们可以用下载安装程序的方法来更新。

更新与特性总结

此版本大部分变化集中在工具链、运行时和库的实现。与往常一样,该版本保持了 Go 1 的兼容性承诺;事实上,Go 1.21 改进了这一承诺。开发团队希望几乎所有 Go 程序都能像以前一样继续编译与运行。

以下是一些显着变化的详细说明:

(1) 工具链改进

Go 在 1.20 中推出配置文件引导优化 (PGO) 功能,如果主包目录中存在名为的default.pgo文件 ,go命令将使用它来启用 PGO 构建。测量 PGO 对多种 Go 程序的影响,发现性能可提高 2-7%。

该go工具现在支持向后和向前语言兼容性。

(2)语言变化

新增内置函数:min、max 和clear。

maxIntValue := max(0, 7, 6, 5, 4, 3, 2, 1) // 7 type intminIntValue := min(8, 7, 6, 5, 4, 3, 2, 1) // 1 type int

Clear实例:

func main() {        m := map[int]int{1:1, 2:2, 3:3, 4:4, 5:5}        fmt.Println(len(m))  // 5        clear(m)        fmt.Println(len(m))  // 0}

Go对泛型函数的类型推断进行了多项改进。规范中类型推断的描述已得到扩展和澄清。

在 Go 的未来版本中,将解决 Go 编程中最常见的问题之一:循环变量捕获。Go 1.21 已经附带了此功能的预览版,开发者可以使用环境变量在代码中启用该功能。

(3)标准库添加

1)用于结构化日志记录的新log/slog包。

2)新的切片包,用于对元素类型的切片进行操作。包括通常比排序包更快、更符合人体工程学的排序。

3)新的Map包,用于对任何Key或元素类型的映射进行操作。

4)新的cmp软件包具有用于比较有序值的新实用程序。

(4)提高性能

此版本除了启用 PGO 时的性能改进之外,还包括如下提升:

1)Go 编译器本身已经在 1.21 中启用了 PGO 进行了重建,因此在构建 Go 程序的速度将提高了 2-4%,具体取决于生产环境的架构。

2)垃圾收集器调整,某些应用程序的尾部延迟会减少高达 40%。

3)使用运行时/跟踪收集跟踪在 amd64 和 arm64 上产生的 CPU 开销进一步减少。

(5)WASI 的新接口

Go 1.21 添加了WebAssembly 系统接口 (WASI)的实验端口,称为预览版 1 ( GOOS=wasip1, GOARCH=wasm)。

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

(6)版本号规则调整

此外,Go 1.21 对版本号进行了一个微小的更改。

以前Go使用 Go 1.N 来指代整个 Go 语言版本系列,以及该系列中的第一个版本。从 Go 1.21 开始,第一个版本现在是 Go 1.N.0。因此,最新发布的是 Go 1.21 语言及其初始实现 Go 1.21.0 release。

今天总结和描述到这里。有关Go 1.21.0的完整更新列表,请大家参阅发行说明(https://go.dev/doc/go1.21)。

作者:万能的大雄

评论