大家好,我是煎鱼。
前段时间大家应该有被一则重磅消息给震惊到,那就是:Go 核心团队的负责人 rsc,对外突然宣布要卸任了,时间定在 9.1 号。
rsc 在此前领导了 Go 编程语言项目超过 12 年,我们所经历的 Go 核心功能的氛围、发展、Go+云原生的黄金时代,都与他有直接关系。
卸任宣言重点
本次 rsc 的卸任宣言正文来自《passing torches to Austin and Cherry[1]》。
归纳重点内容是:
- 领导交接:从 9 月 1 日起,Austin Clements 将接任 Go 项目的技术负责人,接替现任负责人管理 Go 核心部分。Cherry Mui 将领导编译器、运行时等领域。
- 现任负责人的角色调整:现任负责人(rsc)将退居二线,给新领导更多决策空间,但仍会参与设计讨论和代码审查等工作。
- 反对“终身领袖”模式:rsc 认为长期由一人领导不利于项目发展,因此决定让位,支持新领导的成长。
- 对新团队的信心:rsc 表示对 Austin 和 Cherry 的能力充满信心,并相信新领导团队将使 Go 项目更加强大。
- 未来规划:rsc 以后将更多地关注 Gaby[2] 和 Oscar[3] 项目,并继续为 Go 社区做出贡献。
Go 新任领导是谁
从 2024 年 9 月 1 日起,将由 Austin Clements[4] 担任。
Clements 自 2014 年以来一直在 Google 的 Go 团队工作,具有丰富的经验和专业知识。已经轻车熟路。
现阶段他专注于 Go 语言的核心部分,包括:编译器工具链、运行时和版本发布等方面。是 Go 运行时和编译器的技术负责人。
他的判断能力被认为非常出色,这使他成为入选该职位时的理想人选。
注:他以前在大会分享《GopherCon 2020: Austin Clements - Pardon the Interruption: Loop Preemption in Go 1.14[5]》,有兴趣的同学可以学习或眼熟一下。
回顾 rsc 光与暗
rsc,在任职期间属于王炸般的存在,推行了许多的内容物。
有非常多的争议,也取得了不少的成果。是好是坏很难评。可能 5~10 年后可以再看看。
Go Module 模块管理
在以前 Go 还是使用 GOPATH 模式时(Google 内部这么用没什么大问题,因为是大仓库模式),没有考虑到社区的使用情况,于是 godep 等各家自研模块管理就出来了,百家争鸣。
当时 rsc 他们说要把其中一个转正。结果后面又说其他家的不好用,反手自己做黑脸,加速推出了 vgo(现在的 Module 的前身),引发社区各种反对。
当然,反对是没有用的。最终在反对声下,也成功的推进 Go Module 的 “正规” 化。
泛型、迭代器的引入
在过去这几年中,加入比较出名的特性是:泛型、迭代器。
社区中有大佬认为:Go 开始朝着增加复杂性和隐式代码执行的方向发展。也许我们需要停止添加增加 Go 复杂性的特性,应该专注于 Go 的基本特性 - 简单性、生产力和性能。
也有认为加入这些特性后,Go 能够面对解决的场景更多了。见仁见智。
Go1 向前、向后兼容性
简单来讲,Go1 本来就有承诺兼容性保障。但是 rsc 两纸草案,进一步加强了前向、前后的兼容性承诺。
选其中之一快速来讲,就是:
将根据 go.mod 中的 Go 版本号来设置对应 GODEBUG,以提供超越当前兼容性准则所保证的兼容性。
这一点做法,有人恨也有爱。爱的觉得 Go 很棒,以后用的都不怕了,可以随便升级。恨的,就觉得 Go 技术债务会越来越多。未来久了很容易变大坑。
不再有 Go2 了
由于 rsc 推行了 Go1 向前、向后兼容性的加强,之前还闹的轰轰烈烈的 Go2。直接被一纸休书的干没了。
计划是用 GODEBUG 解决所有新的诉求。
总结
总的来讲,我认为 rsc 经历了 Go 这一门编程语言发展的黄金时代。他后半期非常果断的推进了许多的技术手段和方案,还是让人感受到了不少的 “震撼”。
现在换帅了,不知道 rsc 年代推进的技术政策会不会在未来被快速推翻。期待新的 Go 船手会怎么样。
最近发布完 Go1.23,rsc 他们就去休假了,国外这一块还是比较不错的,劳逸结合的感觉。