2021 年 9 月份引起了我的注意的提交

这是我从 golang/go 的提交中挑选出的个人关注的项目列表。尽管标题标注为2021年9月,但其中也包含了8月的提交,并且目前还没有计划制作10月的列表。

我稍微添加了一些解释,但可能存在误解或错误。

承诺

2021年8月13日

版本从 Go 1.17 变更为 Go 1.18。

2021年8月17日

问题已经修复,现在在设置 HTTP 头时不会再保留换行符了。

这是通过减少 string 和 []byte 之间的转换来减少内存分配的修正方案。

这是减少在读写UDP时的内存分配的修正的一部分。

2021年8月20日

这个提交是对 reflect.Type 的 ConvertibleTo 方法添加了一个测试。看起来在 Go 1.8 到 Go 1.16 之间存在的一个 bug,不知不觉在 Go 1.17 中被修复了。

似乎增加了一个接受可变长参数的 API,尽管系统调用的 API 根据参数数量进行了准备。

2021年8月21日

这是为了默认启用泛型的更改。

2021年8月26日

在处理字节数组或字符串时,修剪单字节字符的性能大幅改善。

根据报道,这是一项用于优化几种模式下整数值计算的 SSA 更改。据称,针对 Linux x86_64 平台上的 Go 二进制文件,其大小减少了0.05%。

2021年9月3日

这是关于在图像包中更高效地处理RGBA的修正。6

2021年9月4日

这是一个在使用通过 Go 编译的 wasm 时启用 JavaScript 严格模式的变更。

2021年9月6日

中国设计的 LoongArch 架构被定义为 GOARCH,并且 loong64 在 Go 1.17 中没有支持,但该名称已经预留了。

2021年9月7日。

将len()函数的结果与0进行比较的修正,如果可能的话,改为与0比较。

2021年9月8日

已经为 amd64/arm64 平台添加了 prefetch 指令支持,似乎在 GC 中被使用。

2021年9月11日

现在通过反射访问以字符串为键的映射的性能得到了改进。
不过,如果键的大小很大,则存在问题,并已在另一个提交中进行了修正。10

2021年9月12日

在bufio内部的[]byte中添加了一种从外部访问的方法。这看起来有些棘手,但如果使用得当,可以减少内存分配。

2021年9月14日

尽管仅仅是一种能够进行简单比较的类型限定,但 reflect.DeepEqual 已经经过了加速处理。

2021年9月17日

编译器现在在环境变量GOAMD64中引用amd64架构的版本。这样可能可以进行更优化的新CPU适配。

2021年9月21日

最初,text/template会在模板中评估所有值的过程被修正为在途中停止。然而,还存在一些问题尚未修复。

在中国,引入了模糊测试。在接下来的文章中对其进行了详细解释。

2021年9月23日

根据我的理解,text/template似乎支持在range循环中使用break/continue。

2021年9月24日

新增了一个定义了用于泛型约束的 constraints 包。16

2021年9月28日

reflect.Value现在添加了CanInt/CanUint/CanFloat/CanComplex方法。

思考

我觉得有很多与泛型相关的修改。
除此之外,还似乎在一些细节方面改进了易用性。

虽然我没有写得很多,但似乎已经包含了针对各种CPU的许多优化。

https://github.com/golang/go/issues/47711 ↩
https://github.com/golang/go/issues/43451 ↩
https://github.com/golang/go/issues/47785 ↩
https://github.com/golang/go/issues/46552 ↩
https://github.com/golang/go/issues/46446 ↩
https://github.com/golang/go/issues/44808 ↩
https://github.com/golang/go/issues/47116 ↩
https://github.com/golang/go/issues/46229 ↩
https://github.com/golang/go/issues/48054 ↩
https://github.com/golang/go/commit/ac40c9872f6e8ef095dcc6ee556236782eee4f76 ↩
https://github.com/golang/go/issues/47527 ↩
https://github.com/golang/go/issues/45453 ↩
https://github.com/golang/go/issues/25489 ↩
https://github.com/golang/go/issues/31103 ↩
https://github.com/golang/go/issues/20531 ↩
https://github.com/golang/go/issues/45458 ↩
https://github.com/golang/go/issues/47658 ↩
bannerAds