大家好,我是煎鱼。
关于 Go1.22 先前已分享过好几篇文章,今天主要是针对一些较零散的新更新进行补充说明。
主要选择的是对日常开发有一定影响的,主打一个知情了解即可。
运行环境要求
Go 1.22 是能在 macOS 10.15 Catalina 上运行的最后一个版本。Go 1.23 需要 macOS 11 Big Sur 或更高版本。
言外之意,如果期望用更新版本的 Go。要尽快安排升级 macOS 的系统版本了,不然将会被新版本所抛下。
![f75952f95a6cc4600f84ce70917471f9.png](https://img-blog.csdnimg.cn/img_convert/f75952f95a6cc4600f84ce70917471f9.png)
工作区支持 vendor
Go 在一开始的 workspace(工作区)的功能支持上,由于考虑到简化实现,没有去支持 vendor 模式。但从社区反馈来看确实是有真实的使用诉求的。
从 Go1.22 起,把这个缺漏填补上了。对应的命令是:go work vendor
;功能方面与 go mod vendor
保持一致。
![ba9f9cc30a25a30ad369f68afac2a0da.png](https://img-blog.csdnimg.cn/img_convert/ba9f9cc30a25a30ad369f68afac2a0da.png)
旧依赖管理不再支持
在传统的 GOPATH 模式下(即 GO111MODULE=off 时),不再支持在 Go Module 之外使用 go get
。
其他编译命令,例如:go build
和 go test
,将继续无限期地适用于传统的 GOPATH 程序。
初始化命令 go mod init
将不再尝试从其他依赖工具(如 Gopkg.lock)的配置文件中导入模块依赖。
正式放弃对旧版工具的支持。
Runtime 性能提高
Go1.22 起,Runtime(运行时)会将基于类型的垃圾回收元数据保持在每个堆对象附近,以此提高了综合性能:
CPU:Go 程序的 CPU 性能(延迟或吞吐量)提高 1-3%。
Memory:通过重复冗余元数据,将大多数 Go 程序的内存开销降低了约 1%。
带来的副作用是这一变更调整了内存分配器的大小类边界,一些对象可能会被上移到一个合适大小的类中。
在 Go 工程上,这对我们 Go 程序影响几乎没有,四舍五入升个级就能提高程序性能了。
PGO 效果更好,性能提高
Profile-guided Optimization (PGO) 构建的虚拟化调用比例比以前更高。
在一组具有代表性的 Go 程序中,大多数程序现在都能通过启用 PGO 得到 2% 到 14% 的性能改进。
Trace 更好用了
跟踪(go tool trace)工具的 Web UI 已被彻底刷新,解决了多个历史问题,并提高了各子页面的可读性。
现在支持在面向线程的视图中探索跟踪。跟踪查看器现在还能显示所有系统调用的全部持续时间。
这些改进仅适用于查看使用 Go 1.22 或更新版本构建的程序生成的跟踪。未来的版本将对旧版 Go 生成的跟踪进行部分改进。
![3ddf8c131ac0f7c2a60f066c03dacaf5.png](https://img-blog.csdnimg.cn/img_convert/3ddf8c131ac0f7c2a60f066c03dacaf5.png)
总结
今天针对 Go1.22 的其他新功能点进行了分享和介绍,不少地方都是去旧立新。升级带来的性能推高也是每个版本都有一点。
与此同时 Trace 终于有 Google 的一群大佬大修了一把,太感动了。毕竟我们现在用的 Trace 是 2014 年的设计产物...
该工具之前使用起来,我认为确实是有一定门槛。大家可以关注下这次迭代后尝试使用一下,看看区别。
Go1.22 预计 2 月份正式发布,目前已发布 RC2。
当前总进度:
![b195739abdafd517bc65aa02ea844a3c.png](https://img-blog.csdnimg.cn/img_convert/b195739abdafd517bc65aa02ea844a3c.png)
我猜测中旬发布,大家可以边过节边学习新版本了!完整的发布内容可以查看 Go 1.22 Release Notes[1]。
已更新的 Go1.22 特性系列
参考资料
[1]
Go 1.22 Release Notes: https://tip.golang.org/doc/go1.22
关注和加煎鱼微信,
一手消息和知识,拉你进技术交流群👇
你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路。
日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!
原创不易 点赞支持