1.1 Go语言的发展里程碑
下面看一下Go语言发展过程中的里程碑。
(1)2007年9月,Go语言设计草稿在白板上诞生。
(2)2008年1月,Ken Thompson开发了Go语言编译器,并将Go代码编译成C代码。
(3)2009年11月,Go语言正式对外公开,Google开源了该编程语言的源码。
(4)2012年3月,Go1.0版本发布,从这个版本开始,Go语言承诺对API保持兼容性,也就是确保未来的版本升级不会破坏现有的代码。
(5)2015年8月,Go1.5版本实现了自举。这个版本的编译器不再依赖C编译器,而是使用Go编译Go,其中有少量代码是使用汇编语言实现的。
(6)2016年,内存管理领域权威专家Rick Hudson(里克·赫德森)加入团队,重新设计了垃圾回收机制。在这一阶段,Go语言开始支持并发垃圾回收,这极大地提高了垃圾回收的性能。此外,这次改进还解决了Go语言一直被诟病的垃圾回收停顿时间(Stop-The-World,STW)问题。这一改进在Go1.5和Go1.6版本中得到了体现,这标志着Go语言在内存管理方面迈出了重要的一步。
(7)2017年2月,Go1.8版本发布,垃圾回收的效率进一步提高,延迟时间降低到毫秒级别。比如,在相同的业务场景下,垃圾回收的延迟时间已经可以控制在1毫秒内。可以说,在解决垃圾回收延迟时间长的问题后,Go语言在服务器端的开发方面几乎没有短板了。
(8)2020年2月,Go1.14版本发布,包管理工具Go Module被正式推荐在生产环境中使用。
(9)2022年3月,Go1.18版本发布,此版本中引入了被争论多年的泛型。
在Go语言的版本迭代过程中,由于官方承诺新版本与老版本的代码兼容,因此,每次版本迭代时,Go语言开发团队都会把重心放在代码的优化、稳定性、编译速度、执行效率、垃圾回收的性能上,而对于是否增加新的语言特性则较为谨慎,这在一定程度上避免了由新特性带来的不兼容问题。
具体的版本特性可以查阅官方文档了解,地址为https://golang.org/doc/go<版本号>。