主页

索引

模块索引

搜索页面

3.6.2. go1.18 (released 2022-03-15)

按惯例应该在 2 月份发布,Delay 了一个多月

泛型

千呼万唤,伴随争议终于到来

Type Parameters Proposal

Go Blog 提到 It isn’t a stretch to say that the design for parts of Go 1.18 started over a decade ago when we first released Go., 指的可能就是 2009 年 rsc 在博客里探讨泛型如何设计

好奇为啥用 [] 而不是其他语言普遍采用的 <>

Rob Pike 的担忧 , 建议先不要用泛型,改动 Go 1.18 中的标准库

模糊测试Fuzzing

Go is the first major language with fuzzing fully integrated into its standard toolchain Go Fuzzing

作为代价,fuzzing 会消耗大量内存,影响机器性能,占用也许是几个 G 的存储空间

Rob Pike 对 fuzzing 的疑虑

Workspaces 工作区

在 2021 年用户调查中,反馈最多的挑战是跨多个模块工作。 在 Go 1.18 中,使用新的 Go 工作区模式解决了这个问题,使用多个模块将变得简单。

如在工作目录或父目录中有 go.work 文件,或使用 GOWORK 环境变量进行指定,将使 go 命令进入工作区模式。

在此模式下,go.work 文件将被用来确定作为模块解析根的一组主模块,而不是使用通常找到的 go.mod 文件来指定单一的主模块。

20% 的性能提升

Go 1.18 将为 ARM64 架构带来高达 20% 的 CPU 性能改进

但由于编译器中与支持泛型有关的变化,Go 1.18 的编译速度可能比 Go 1.17 的编译速度大约慢 15%。编译后的代码的执行时间不受影响。打算在 Go 1.19 中提高编译器的速度。

主页

索引

模块索引

搜索页面