Go语言里程碑
2007年——诞生
2007年9月20日,Robert Griesemer、Rob Pike和Ken Thompson三人在Google内部讨论会议上提议要开发一个新语言,9月25日,Rob在邮件中提议新语言名叫Go。
2008年——核心团队组建完成
2008年6月7日,gcc领域“大牛”Ian给Go创始团队发了封邮件,说他根据Go语言在公司论坛上的语言规范写了Go的gcc编译器gccgo,此时Go启用了第二编译器gccgo。两个编译器的好处是保证Go语言的语言规范稳定、正确和高度的可移植性。同年,Russ Cox加入团队,至此,Go语言的核心团队基本成型。
2009年——开源
2009年11月10日,Go语言正式宣布开源,源码首先放到Google的代码服务器上,后来迁移到Github。
2012年——Go 1.0发布
2012年3月28日,Go 1.0正式发布,Go开发团队同时做出承诺:后续任何版本都要保证语言规范的稳定性和程序兼容性,从1.0版本开始的代码在后续的编译器中都可以不加修改地进行编译,同时核心API接口不会再做出重大调整。
2015年8月——Go 1.5发布
编译工具链:Go实现自举,编译器和运行时几乎全部使用Go重写,Go可以编译Go编译器,实现“鸡生蛋和蛋生鸡”,自举可以看作语言成年的标志;GC通过并行回收机制,延迟得到大幅改善,延迟平均控制在10ms以内,延迟已经不再是语言的问题。
2016年2月——Go 1.6发布
编译工具链:语法分析器从yacc改为硬编码实现(好处:便于优化,更快)。GC:延迟更低,稳定在3ms左右(特别对大内存程序做了优化)。
2016年8月——Go 1.7发布
编译工具链:64-bit x86体系的编译器生成SSA(static single-assignment)格式的中间代码(IR),Go程序可以更好地进行编译器中后端的优化。
2017年2月——Go 1.8发布
语言规范微调:struct的类型定义如果只是tag不同,则可以相互强制转换;编译工具链全体系结构支持SSA。
2017年8月——Go 1.9发布
语言规范微调:增加类型别名的概念;sync包里面增加了并发安全的map。
2018年2月——Go 1.10发布
主要在编译和测试过程中增加了缓存机制,便于更快速地编译和测试。