首页 文章详情

Go 官方发文庆祝开源 12 周年

Go语言精选 | 251 2021-11-15 08:01 0 0 0
UniSMS (合一短信)

大家好!今天生态君给大家带来一篇Go官方Blog的文章《Go12岁了》,生态君根据文章内容画了一张 Go 2021-2022的Timeline图。

原文 Twelve Years of Go https://go.dev/blog/12years

今天(2021-11-10),是我们庆祝Go语言开源发布的第12个生日。我们度过了多事之秋的一年,明年也有很多值得期待的事情。


博客上最明显的变化是我们在 go.dev上的新家[1],这是我们将所有的Go网站整合成一个统一的网站的一部分。合并的另一部分是用 pkg.go.dev 取代 godoc.org[2]

2月Go 1.16版本[3]增加了macOS ARM64支持[4],增加了一个文件系统接口[5]嵌入式文件[6],并默认启用了module[7],同时还进行了一系列的改进和优化。

8 月Go 1.17 版本[8]增加了 Windows ARM64 支持,使TLS 密码套件决策更加简单和安全[9],引入了Pruned module graphs[10],使module在大型项目中变得更加高效,并增加了新的、更具可读性的构建约束语法[11]。在系统内部,Go 1.17还为x86-64上的Go函数切换到了基于寄存器的调用约束,使受CPU约束的应用程序的性能提高了5-15%。

这一年来,我们发布了许多新的教程[12],Go数据库指南[13]modules开发指南[14]以及gomod参考[15]。一个亮点是新的教程"用Go和Gin开发一个RESTful风格的API[16]",该教程也可以在Google Cloud Shell[17] 进行交互学习。

我们也一直忙于 IDE 方面,在 VS Code Go 中默认启用 gopls[18],并对gopls和 VS Code Go进行了无数次的改进,包括由 Delve 支持的强大的调试功能体验[19]

我们还推出了Go fuzzing beta[20],并正式提议在Go中加入泛型[21],这两者都有望在在Go1.18中实现。

为了继续适应"virtual-first",Go团队在Google Open Source Live-谷歌开源直播[22]中举办了第二届年度Go Day。你可以在 Youtube 上观看这些讲座:

  • Ian Lance Taylor的在Go中使用泛型[23],介绍了泛型以及如何有效地使用它们。
  • 现代企业应用[24]》由Steve Francia主讲,展示了Go如何在企业现代化中发挥作用。
  • Suzy Mueller 的《用Go 编辑器构建更好的项目[25]》展示了 VS Code Go 的集成工具如何帮助你浏览代码、调试测试等。
  • 美国运通杰出工程师本Benjamin Cane的《从概念验证到生产[26]》,解释了美国运通公司如何在其支付和奖励平台中使用Go。

展望未来

我们对Go第13年的发展感到非常激动。下个月,我们将在GopherCon 2021[27]上举办两场讲座,同时还有许多来自Go社区的天才演讲者[28]。欢迎注册,并记得在你的日历上做个标记!

  • "为什么和如何使用Go泛型",由Robert Griesemer和Ian Lance Taylor主讲,他们主导了这项新功能的设计和实施。12月8日上午11:00(美国东部)[29]
  • "使用调试适配器协议(DAP)调试Go代码",作者Suzy Mueller,展示如何使用Delve来进行 VS Code Go的高级调试功能。12月9日下午3:20(美国东部)[30]

2022 年 2月,Go 1.18版本将把新的基于寄存器的调用约定扩展到非x86架构上,并会带来巨大的性能改进。它将包括新的Go模糊支持。这也将是第一个包括对泛型支持的版本。

泛型将是我们2022年的重点之一。Go 1.18中的初始版本只是一个开始。我们需要花很多时间使用泛型,了解哪些是有效的,哪些是无效的,这样我们才能写出最佳实践,并决定哪些应该被添加到标准库和其他库中。我们期望Go 1.19(预计在2022年8月)及以后的版本将进一步完善泛型的设计和实现,并将其进一步整合到整个Go的体验中。

2022年的另一个重点是供应链安全 。这么多年来我们一直在讨论依赖性问题[31]。Go模块的设计提供了可重复、可验证、可验证的构建[32],但仍有更多工作要做。从Go 1.18开始,该命令将在二进制文件中嵌入更多关于其构建配置的信息,既可重复更易于使用,也是为了帮助那些需要为Go二进制文件生成 SBOM[33]的项目。我们也已经开始了Go漏洞数据库[34]和相关工具的工作,来报告程序依赖中的漏洞。我们在这项工作中的目标之一是大幅提高这种工具的信号与噪声比:如果一个程序不使用有漏洞的功能,我们就不会报告。在2022年期间,我们计划将其作为一个独立的工具,也会将其添加到现有的工具中,包括gopls和VS Code Go,以及pkg.go.dev中。还有更多工作要做,以改善Go的供应链安全状况的其他方面。敬请期待。

总的来说,我们预计2022年也是Go的多事之秋的一年,我们会持续及时地发布和改进您所期待的内容。

感谢!

Go不仅仅包括我们谷歌的Go团队,而且还需要你们的支持。非常感谢你们帮助Go取得了巨大的成功也欢迎你们加入我们。最后祝大家事事顺心如意。

参考资料

[1]

go.dev上的新家: https://go.dev/blog/tidy-web

[2]

pkg.go.dev 取代 godoc.org: https://go.dev/blog/godoc.org-redirect

[3]

Go 1.16版本: https://go.dev/blog/go1.16

[4]

macOS ARM64支持: https://go.dev/blog/blog/ports

[5]

一个文件系统接口: https://golang.org/pkg/io/fs

[6]

嵌入式文件: https://golang.org/pkg/embed

[7]

默认启用了module: https://go.dev/blog/go116-module-changes

[8]

Go 1.17 版本: https://go.dev/blog/go1.17

[9]

TLS 密码套件决策更加简单和安全: https://go.dev/blog/tls-cipher-suites

[10]

Pruned module graphs: https://golang.org/doc/go1.17#go-command

[11]

新的、更具可读性的构建约束语法: https://pkg.go.dev/cmd/go#hdr-Build_constraints

[12]

许多新的教程: https://golang.org/doc/tutorial/

[13]

,Go数据库指南: https://golang.org/doc/database/

[14]

modules开发指南: https://golang.org/doc/#developing-modules

[15]

以及gomod参考: https://golang.org/ref/mod

[16]

用Go和Gin开发一个RESTful风格的API: https://golang.org/doc/tutorial/web-service-gin

[17]

Google Cloud Shell: https://golang.org/s/cloud-shell-web-tutorial

[18]

在 VS Code Go 中默认启用 gopls: https://go.dev/blog/gopls-vscode-go

[19]

强大的调试功能体验: https://github.com/golang/vscode-go/blob/master/docs/debugging.md

[20]

Go fuzzing beta: https://go.dev/blog/fuzz-beta

[21]

正式提议在Go中加入泛型: https://go.dev/blog/generics-proposal

[22]

在Google Open Source Live-谷歌开源直播: https://opensourcelive.withgoogle.com/events/go-day-2021

[23]

在Go中使用泛型: https://www.youtube.com/watch?v=nr8EpUO9jhw

[24]

现代企业应用: https://www.youtube.com/watch?v=5fgG1qZaV4w

[25]

用Go 编辑器构建更好的项目: https://www.youtube.com/watch?v=jMyzsp2E_0U

[26]

从概念验证到生产: https://www.youtube.com/watch?v=e7PtBOsTpXE

[27]

GopherCon 2021: https://www.gophercon.com/

[28]

来自Go社区的天才演讲者: https://www.gophercon.com/agenda

[29]

12月8日上午11:00(美国东部): https://www.gophercon.com/agenda/session/593015

[30]

12月9日下午3:20(美国东部): https://www.gophercon.com/agenda/session/593029

[31]

依赖性问题: https://research.swtch.com/deps

[32]

可重复、可验证、可验证的构建: https://research.swtch.com/vgo-repro

[33]

生成 SBOM: https://en.wikipedia.org/wiki/Software_bill_of_materials

[34]

漏洞数据库: https://pkg.go.dev/golang.org/x/vuln



推荐阅读


福利

我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter