作者 | Tony Bai

来源 | TonyBai 公众号(ID:iamtonybai)

头图 | CSDN 下载自东方 IC

本文翻译自 Go 官方博客文章《Eleven Years of Go》,原作者:Russ Cox。

今天,我们一起庆祝 Go 语言正式开业发布11周年。去年的“Go turning 10”周年庆典聚会似乎已成为久远的回忆。这是艰难的一年,但我们一直保持了Go开发的步伐,并积累了很多亮点。

在去年11月,我们在庆祝Go 10周年后不久就发布和上线了 go.dev 和pkg.go.dev 站点

今年2月,Go 1.14版本提供了第一个正式的“生产就绪”的go module实现,并进行了许多性能改进,包括更快的defer和真正抢占式的goroutine调度,以减少调度和垃圾收集延迟。

在今年三月初,我们推出了新版 protobuf API:google.golang.org/protobuf,大幅改善了对 protobuf reflection 和自定义消息的支持。

当新冠疫情大流行发生时,我们决定在春季暂停所有公开发布或活动,因为大家都知道所有人的注意力都聚焦在其他地方。但是我们一直在努力,我们的团队中的一个成员加入了 Apple/Google 发起的“ privacy-preserving exposure notifications ”项目,以支持全球范围内的联系人追踪工作。5月,该小组启动了用 Go 编写的 reference backend server。

我们继续改进 gopls,这让许多编辑器受益并都启用了高级 Go-aware 支持。六月份,VSCode Go 扩展正式加入 Go 项目,现在由从事 gopls 的同一位开发人员维护。

同样在6月,由于Go社区的反馈意见,我们还将 pkg.go.dev 背后的代码开源,并将其作为 Go 项目的一部分。

6月下旬,我们 发布了有关 Go generics 的最新设计草案,以及原型工具和一个支持 go generics 实验语法的 playground。

7月,我们发布并讨论了三个新的有关 Go 未来演化的设计草案:go:build、文件系统接口和构建时文件嵌入。(我们将在2021年看到所有新特性)

8月,Go 1.15版本发布!该版本以优化和 bug 修复为主,没有提供太多新功能。其最重要的部分是开始重写链接器,这使它在进行大型项目构建时,平均运行速度提高了20%,平均使用的内存减少了30%。

上个月,我们发起了年度 Go 用户调查。分析结果后,我们会将结果发布到博客上。

Go 社区已经与其他所有人一起适应了“虚拟优先”的原则,今年我们看到了许多虚拟聚会和十多个虚拟 Go 会议。上周,Go 团队在 Google Open Source Live 中举办了“ Go Day ”活动。

前进

我们也对 Go 语言在其第12年即将发生的事情感到非常兴奋。近期,Go 团队成员将参加 GopherCon 2020 并做以下展示和分享。请打开您的日历,做好提醒标记!

  • 11月11日上午10:00,Robert Griesemer的演讲“Typing [Generic] Go”;在10:30 AM进行Q&A。

  • 11月11日中午12:00,现场播放Go时间播客的实况录像:“What to Expect When You’re NOT Expecting”,该集播客由包括Hana Kim组成的专家调试小组主持。

  • Michael Knyszek在11月11日下午1:00发表演讲“Evolving the Go Memory Manager's RAM and CPU Efficiency” ;在下午1:50进行Q&A。

  • Dan Scales在11月11日下午5:10发表演讲“Implementing Faster Defers”;在下午5:40进行Q&A。

  • 11月12日下午3点,与朱莉·邱(Julie Qiu),丽贝卡·史翠宝(Rebecca Stambler),拉斯·考克斯(Russ Cox),萨默·阿杰曼尼(Sameer Ajmani)和范·里珀(Van Riper)一起的现场问答环节“ Go Team-Ask Me Anything” 。

  • 奥斯汀·克莱门茨(Austin Clements)在11月12日下午4:45发表演讲“Pardon the Interruption: Loop Preemption in Go 1.14” ;在下午5:15进行Q&A。

  • 乔纳森·阿姆斯特丹(Jonathan Amsterdam)在11月13日下午1:00发表的演讲:“Working with Errors” ;在下午1:50进行Q&A。

  • 卡门·安多(Carmen Andoh)11月13日下午5:55发表的演讲“Crossing the Chasm for Go: Two Million Users and Growing” 。

Go发布计划

2021年2月,Go 1.16版本将发布,该版本将包括新的文件系统接口和构建时文件嵌入。它将完成链接器的重写,从而带来更多的性能改进。它将包括对新的Apple Silicon(GOARCH=arm64)Mac的支持。

2021年8月,Go 1.17版本无疑会带来更多功能和改进,尽管远远不够,确切的细节仍然悬而未决。它将包括一个针对x86-64新的基于寄存器的调用约定(不破坏现有程序集!),这将使程序整体更快。(对其他体系结构的支持将在以后的版本中发布。)新的 //go:build 行肯定会包含一个不错的功能,肯定比当前 // +build 更不容易出错。我们希望明年可以进行 Beta 测试的另一个备受期待的功能是对 go test 命令中的模糊测试(fuzz test)的支持。

有关Go module

明年,我们将继续致力于开发对 Go module 的支持,并将其很好地集成到整个 Go 生态系统中。Go 1.16将包括我们迄今为止最流畅的 Go module 体验。我们最近的一项调查的初步结果是,现在有96%的用户已采用Go模块(高于一年前的90%)。

我们还将最终终止对基于 GOPATH 的开发的支持:使用标准库以外的依赖项的任何程序都将需要一个 go.mod。(如果您尚未切换到 go module,请参阅 GOPATH Wiki 页面以获取有关从 GOPATH 到 go module 的最后一步的详细信息。)

从一开始,Go module 的目标就是“将软件包版本的概念添加到 Go 开发人员和我们的工具的常用词汇中”,从而为整个 Go 生态系统中的 module 和版本提供深度支持。整个生态系统对包版本的广泛理解使得 go module 镜像、 chechsum 数据库和 module index 成为可能。在明年,我们将看到更多 module 支持被添加到更多的工具和系统中。例如,我们计划研究新的工具,以帮助模块作者发布新版本(go release),并帮助 module 使用者摆脱过时的 API 并完成迁移(新的go fix)。

一个更为有说服力的例子是,我们创建了 gopls 来减少编辑器为支持 Go 而依赖许多外部工具的情况:将依赖一堆不支持 go module 的工具转变为只依赖一个支持 module 的工具。明年,我们将准备让 VSCode Go 扩展默认使用 gopls,以提供出色的、现成的 module 体验,并将发布 gopls 1.0。当然, gopls 最大的优势之一是它与编辑器无关:任何支持语言服务器协议的编辑器都可以使用它。

版本信息的另一个重要用途是跟踪构建中的任何程序包是否具有已知漏洞。明年,我们计划开发一个已知漏洞的数据库以及基于该数据库进行漏洞检查的工具程序。

Go 软件包发现站点 pkg.go.dev 是 Go module 启用的版本感知系统的另一个示例。我们一直致力于正确实现核心功能和用户体验,包括今天重新设计后的 pkg.go.dev 的上线。明年,我们将 godoc.org 统一为 pkg.go.dev。我们还将扩展展示每个软件包的版本时间线,显示每个版本的重要更改,已知漏洞等,以实现你进行依赖添加决策时所需的所有信息。

我们很高兴看到从 GOPATH 到 Go 模块的旅程即将完成,以及 Go 模块正在启用的所有出色的依赖关系感知工具。

有关Go generics

每个人心中的下一个功能特性当然是泛型。如上所述,我们于今年6月发布了有关泛型的最新设计草案。从那时起,我们一直在做细节上的完善,并将注意力转移到了实现可生产版本的细节上。我们将在2021年的整个过程中继续努力,以期在年底之前为人们提供一些试用的目标,也许它是 Go 1.18 beta 的一部分。

感谢大家

Go 不仅限于我们这些 Google Go 团队的成员。我们要感谢与我们一起开发Go项目和工具的贡献者。除此之外,Go 之所以成功,是因为所有在 Go 蓬勃发展的生态系统中工作并为之贡献的人们。Go 之外的世界度过了艰难的一年。非常感谢您抽出宝贵的时间加入我们,并帮助 Go 取得成功。

声明:本文为 CSDN 博主 Tony Bai 的原创文章,版权归作者所有。

原文地址:https://blog.csdn.net/bigwhite20xx/article/details/109634461

更多精彩推荐
☞全网销售额超 2.67 亿!德施曼连续 5 年蝉联双11全网智能锁销冠
☞苹果发布首款 Mac 自研芯片 M1,贯通生态快人一步
☞详解微软 ALUM:当语言模型遇到对抗训练
☞腾讯竟然是这样招人的,哈哈哈哈哈
☞AI 隐身术,能让物体在视频中消失的魔法

☞一文教你如何在生产环境中在Kubernetes上部署Jaeger
点分享点点赞点在看
Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐