自 2009 年 11 月正式对外发布后,至今 Go 开源已走过整整 12 个年头。刚刚,Go 开发团队技术 leader Russ Cox 就专门撰文庆祝 “Go 开源 12 周年”。
在这篇文章中,Russ Cox 对 Go 开源今年以来的变化及所取得进展做了回顾,并对下一阶段的发展进行了展望。
Russ Cox 提到了将 godoc.org 替换成 pkg.go.dev,以及新域名 go.dev 的启用,可将所有官方 Go 站点整合至统一域名下。
今年 2 月,Go 1.16 版本添加了对 macOS ARM64 的支持,以及文件系统接口和嵌入文件、默认启用 modules 等多项改进优化。
今年 8 月,Go 1.17 版本添加了对 Windows ARM64 的支持,大大提升了 TLS 密码套件决策的易用性和安全性;修剪模块图 (pruned module graphs)及全新易读的构建约束语法的引入,让 Go Modules 在大型项目中更高效。Go 1.17 版本还在底层上将 x86-64 的 Go 函数切换至基于寄存器的调用约定, 让 CPU 密集型应用程序的性能提高了 5-15%。
此外,IDE 方面也支持在 VS Code Go 中默认启用 gopls, 同时还为 gopls 和 VS Code Go 提供多项改进,包括由 Delve 提供支持的强大调试体验。
除了添加模糊测试支持的新提案,今年还正式提议向 Go 添加泛型,并明确将在 Go 1.18 中提供。
据了解,10 月初,“Go 语言之父” Rob Pike 曾在 Github 上撰文称“不建议在 Go 1.18 的标准库中使用泛型”的issue。而到了 10 月 28 日,Russ Cox 又发文终于明确了“ Go 1.18 版本中将支持泛型”的信息。
对此,Russ Cox 在此次博文中表示,完善泛型将是 Go 团队明年的重点工作之一(另一项重点工作和供应链安全相关)。Go 1.18 中的初始版本只是一个开始,预计 Go 1.19(或将于 2022 年 8 月发布)及更高版本将进一步完善泛型的设计和实现,并将其进一步整合到整体 Go 体验中。
目前,Go 团队已经着手研究 Go 漏洞数据库以及用于报告程序依赖项中漏洞的相关工具,以提高此类工具的信噪比(如果程序不使用易受攻击的功能,则不会进行报告),预计明年会被作为独立工具提供,且将其添加到现有工具中。同时,在改进 Go 供应链安全态势方面,未来也还有更多工作需要开展。
关于 Go 语言
Go 语言最初由 Rob Pike 等谷歌工程师在 2007 年 9 月启动设计工作,在2009 年 11 月正式对外发布。
Go 语言完美融合了动态语言易于编写的特性和静态语言的高效性,具备良好的易用性和极佳的执行效率。
Go 语言最初定位于 Web 服务器、存储系统和数据库的程序设计,同时在语言中包含并发构造体,以帮助开发者创建并行任务。Go 开发团队曾表示,编译完成的 Go 程序运行速度接近 C 语言实现的程序。