面对大流行,Go 核心团队给出“定心丸”
-
Go 始终排在诸如个人和家庭健康与安全之类的基本问题之后; -
调整全年 Go 技术会议的计划,推迟或改为线上举办虚拟技术大会,为全球 Gopher 提供获取这些会议最新信息的渠道服务; -
为在线培训师、Go 职位发布提供便利服务; -
为新冠病毒提供帮助工作台:https://covid-oss-help.org/; -
调整 Go 工作计划,缩减Go 1.15中包含的新特性和改进,但会遵循 Go 1.15 的发布时间表;重点支持 gopls、pkg.go.dev 的演进和优化。
Go 在 2020 年值得关注的那些变化
-
2020 年 2 月 26 日,Go 1.14 版本发布。主要的变动点包括: -
嵌入接口的方法集可重叠; -
基于系统信号机制实现了异步抢占式的 goroutine 调度; -
defer 性能得以继续优化,理论上有 30%的性能提升; -
go module 已经生产就绪,并支持 subversion 源码仓库; -
重新实现了运行时的 timer; -
testing 包的 T 和 B 类型都增加了自己的 Cleanup 方法。 -
2020 年 4 月 20 日,发布2019 年 Go 开发者调查结果: -
参与 2019 开发者调查的 gopher 数量几乎为 2018 年的 2 倍,达到 10,975 人; -
大多数受访者每天都在使用 Go,而且这个数字每年都有上升的趋势; -
Go 的使用仍然集中在科技公司,但 Go 越来越多地出现在更广泛的行业中,如金融和媒体; -
调查的大部分指标的同比值都很稳定; -
受访者正在使用 Go 来解决类似的问题,特别是构建 API/RPC 服务和 CLI,和他们工作的组织规模大小关系不大; -
大多数团队试图快速更新到最新的 Go 版本;当第三方供应商迟迟不支持当前的 Go 版本时,就会给开发者造成采用障碍; -
现在 Go 生态系统中几乎所有人都在使用go module,但围绕包管理的一些混乱仍然存在; -
需要改进的高优先级领域包括调试、go module 使用以及与云服务交互的体验改善; -
VS Code 和 GoLand 的使用量持续增加;现在每 4 个受访者中就有 3 个首选它们。 -
2020 年 6 月,vscode-go 扩展(vscode 上的 go 标准插件)将主代码库从 github.com/microsoft/vscode-go 迁移到 github.com/golang/vscode-go,成为 Go 官方项目的一部分。 -
同在 2020 年 6 月,pkg.go.dev 网站开源!该网站是 Go 团队在 Go 社区建设方面做出的主要工作,开源后的 pkg.go.dev 将接收更多来自社区的想法和改进意见,比如:11 月,pkg.go.dev 就发布了新版页面设计;原 godoc.org 的请求也被重定向到 pkg.go.dev(广大 gopher 可能需要一段时间来适应这种改变)。 -
2020 年 8 月,Go 1.15 版本发布,其主要的变动点包括: -
GOPROXY 新增以管道符为分隔符的代理列表值; -
module cache 的存储路径可设置; -
改善派生自原生类型的自定义类型变量在 panic 时的输出形式; -
将小整数([0,255])转换为 interface 类型值时将不会额外分配内存; -
加入更现代化的链接器(linker),新链接器的性能要提高 20%,内存占用减少 30%; -
增加 tzdata 包。 -
2020 年 11 月初,全球最具影响力的 Go 语言技术大会GopherCon 2020[8]在线上举行!Austin Clements 详细讲解了 Go 1.14 加入的基于系统信号的抢占式调度器;Go 语言之父之一的 Robert Griesemer 讲解了Go 泛型当前的状态以及未来的计划。会后 Russ Cox 确认了 Go 团队将在 Go 1.18 版本中加入 Go 泛型(类型参数)作为试验特性; -
2020 年 11 月 10 日,Russ Cox 代表 Go 核心开发团队发文庆祝Go 语言发布 11 周年,在文中他回顾了 Go 这一年来的收获以及对 2021 年Go 1.16和 Go 1.17 的展望。文中他还提到了 GOPATH 的历史使命即将结束,Go 将开启全面 module-aware 模式的 Go 工具链时代! -
2020 年 12 月中旬,Go 1.16beta1 发布。在 Go 1.16 中,Go 将原生提供对 Apple M1 芯片(darwin/arm64)的支持;同时,在 Go 1.16 中 go module 将成为默认包依赖管理机制;Go 1.16 还提供了支持在 Go 二进制文件中嵌入静态文件的官方原生方案,支持对 init 函数的执行时间和内存消耗的跟踪,链接器性能得到进一步优化等。 -
2020 年 12 月 16 日,gopls v0.6.0 发布。同期,vscode-go 也正计划将 gopls 作为默认语言服务器。
Go 语言当前的状态:已来到“稳定爬升的光明期”
-
2020 年以后是 Go 语言的天下吗? -
2020 年各个大厂内部 Go 语言开发环境是怎样的呢?有什么可以分享的经验吗? -
Go 语言前景如何? -
2021 年后哪个后端编程语言会越来越流行?
-
Go 语言从 2009 年宣布开源以来,经历了两次“高峰”:一次是 2009 年刚刚宣布开源后,一次是在 Go1.7~Go 1.9 期间。显然,第一次的高峰实际上是一个“假高峰”,那时的 Go 连 1.0 版本都尚未发布,我们完全可以将其“剔除”掉。 -
从图中来看,Go 语言的技术萌芽期是比较长的,从 2012 年的 Go 1.0 一直持续到 2015 年的Go 1.5; -
Go 1.5 版本的自举以及 Go 垃圾回收延迟的大幅下降“引爆”了 Go 的“媒体曝光度”,Go 技术的“期望膨胀期”开始,经历从Go 1.6 到Go 1.9 版本的发布后,业界对 Go 的期望达到了峰值; -
从 Go 1.10 开始,Go 似乎变得“仿徨”起来,原本期望 Go“一统天下”的愿望没能实现,全面出击失败后,期望的落空导致了人们对Go 产生了“功能孱弱劣势”的印象,于是 Go 在 Go 1.11 发布前跌到了“泡沫破裂”的谷底; -
Go 1.11 引入了Go module,给社区解决Go 包依赖问题打了一剂强心剂,于是 Go 又开始了缓慢的爬升; -
从 TIOBE 提供的曲线来看,Go 1.12到Go 1.15 版本的发布让我们有信心认为 Go 已经进入了“稳步爬升的光明期”。
展望 Go 的 2021:继续蓄力,迎接下一个“引爆点”
-
针对 x86-64 的新的基于寄存器的调用约定(不破坏现有程序集!),这将使程序与主流语言的 ABI 模型保持一致,并且整体更快; -
加入 build 指示器新语法://go:build; -
一个十多年前的 issue被 Go 团队 accept:使用(*[4]int)(x)语法将切片 x 转型为一个数组类型指针(*[4]int)。
小结
程序员如何避免陷入“内卷”、选择什么技术最有前景,中国开发者现状与技术趋势究竟是什么样?快来参与「2020 中国开发者大调查」,更有丰富奖品送不停!
☞支付宝 “集五福”今日开启;小米起诉美国国防部;Chrome 再次屏蔽七个端口 | 极客头条
☞因为在企业软件中采用了React,我差点被公司开除
☞小米实现隔空充电技术;程序员离职小技巧;GitLab 涨价|开发者周刊
文章评论