Google公布实现Go 1.5自举的计划

Google最近公布了实现Go 1.5自举(Bootstrap)的计划。相关文档的作者是Go核心开发者Russ
Cox,他在Go语言上已经耕耘了接近6年。据Russ介绍,Google就“如何从Go源码树中去除所有的C程序”已经酝酿了一年。

自举(Bootstrapping) 是这样的过程,“用要编译的目标编程语言编写其编译器(或汇编器)”。一般而言,自举有几个优势,比如:

  • 用于测试被自举的语言;
  • 支持使用通常更为高级、提供更多高级抽象的语言来编写编译器;
  • 编译器也可以得益于语言层面的任何改进。

如前所述,Google在一年前就开始了从Go源码树中去除C代码的努力,转换计划分为5个步骤:

  • 第1阶段——开发一个从C语言到Go语言的翻译器,将现有的C编译器翻译成Go语言的。这一阶段利用了一个事实:原来的编译器没有大量使用一些很难移植到Go语言的特性,比如宏、联合和指针运算等。
  • 第2阶段——转换编译器的源码树,得到一个Go语言的编译器,但是比较原始,而且是C风格的。
  • 第3阶段——将前面得到的编译器转换为符合Go语言习惯的程序,主要通过识别包,添加文档和单元测试实现。
  • 第4阶段——优化编译器,解决编译器和CPU的内存使用问题,可能引入并行化。此外,尝试在今天使用的不依赖架构的无序树(Node*s)和依赖架构的有序列表(Prog*s)之间引入一个新的中间表示,目的是改进编译器在消除冗余的nil检查和边界检查等情况下的优化能力。
  • 第5阶段——用最新版的go/parsergo/types替换前端。

Russ提到,他们还考虑了一些替代方案,不过基于各种因素都排除了,在一年前的这份文档中都有描述。

Go的自举

编译器的自举通常会引发“先有鸡还是先有蛋”的问题,必须提供一种方式来编译我们要创建的语言。

Go的情况是,要构建Go 1.5,必须先安装Go 1.4或更高版本,然后使用现有的Go工具链创建Go 1.5工具链的一个基本版本。一旦有了(Go 1.4)编译的Go 1.5工具链,就可以再用它来构建自身了,可以进一步用它构建go_bootstrap和其余的标准库和标准组件。这个过程加入了一个中间步骤——生成的工具链再被用于构建其自身,它可以应用于未来的任何Go版本。

为进一步了解Go实现自举的计划,InfoQ采访了Russ。

实现自举看上去是Go语言的一个很大的里程碑。在语言的演进过程中,为什么决定在这个阶段做这个事情呢,可以详细介绍一下吗?

Go是一门不错的通用语言,但在设计时考虑的适用场合是编写大规模、高并发的服务端软件,就像运行在Google的服务器上的那些。如果更早实现自举,Go编译器就是第一个大型的Go语言程序,这对语言设计存在不利影响,会让我们远离真正的目标。

没有更早实现自举,还有一些技术原因,比如可移植性,从源代码编译比自举更容易,而且我们也能尽早有一个稳定的编译器实现。

使用Go来构建Go,与使用C相比,你认为对哪些具体领域有较为明显的改进?

Ken Thompson曾经对我说,用Go编写程序感觉比用C更简单。一个原因是,Go消除了好几类常见的C bug,比如悬挂指针、内存泄漏、缓冲区溢出、深度递归时的栈溢出、误用void*和意外的数值转换等。

与任何标准的C工具链相比,标准的Go工具链对模块化、单元测试和性能分析支持更好,不过让我最兴奋的是在修改内部API或重构时,应用自动化程序重写(如gofix)的前景。

在“Go
1.3+ Compiler Overhaul
”这篇文档中,你描述了分5个步骤将现有的编译器从C迁移到Go的过程。请问到目前为止,已经完成了哪些步骤了?其余步骤打算何时完成?

对Go项目而言,将语言的运行时从C转换到Go更为重要,所以我们先做了这个。现在我们正回到编译器。

从文档角度看,我们目前处于第2阶段。翻译器已经完成,而且帮助我们转换了运行时。我们正在将其应用于编译器。我们希望完成Go 1.5编译器的转换。清理工作会在Go 1.5之后的项目中进行。

查看英文原文:Google
Aims at Bootstrapping Go 1.5

时间: 2024-10-24 17:56:06

Google公布实现Go 1.5自举的计划的相关文章

Android Volley 具体解释 Google公布的一套用于网络通信的工具库

下载地址:git clone https://android.googlesource.com/platform/frameworks/volley 或 : https://github.com/mcxiaoke/android-volley Volley 能作什么 Google 2013 I/O 大会上公布的一个网络通信库. 处理一些网络方面的请求,如数据解析.下载显示图片. · 数据处理:对网络请求获取的数据的处理. · 图片载入:对网络图片的下载及显示. 使用步骤 使用权限 <uses-p

Google 公布 WebRTC 技术路线图

谷歌在今年 1 月份发布的 Chrome Dev 版本中首次集成了 WebRTC,引起了广泛的关注.今天,谷歌在博客中公布了 WebRTC 技术的开发路线图. WebRTC 是 一项在浏览器内部进行实时视频和音频通信的技术,是谷歌在 2010 年收购 Global IP Solutions 公司而获得一项技术.该技术基于 WHATWG 协议,目的是通过浏览器提供简单的 JavaScript 就可以达到实时通讯(Real-Time Communications)能力.2011年谷歌在 BSD 许可

百度和 Google 的搜索技术是一个量级吗?

著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:Kenny Chao 链接:http://www.zhihu.com/question/22447908/answer/21435705 来源:知乎 很多答案是从使用上讲的,我加两个技术方面的. 搜索引擎需要对抓取到的结果进行管理.当索引结果越来越多时,保证存储和查询速度,保证数万台服务器内容一致的难度越来越高.Google于03至06年左右公布了三篇论文,描述了GFS.BigTable.MapReduce三种技术以解

Baidu和Google 搜索引擎差距在哪里?

Baidu和Google的差距在哪里? 搜索引擎需要对抓取到的结果进行管理.当索引结果越来越多时,保证存储和查询速度,保证数万台服务器内容一致的难度越来越高.Google于03至06年左右公布了三篇论文,描述了GFS.BigTable.MapReduce三种技术以解决这些问题.由于Google并没有公布算法细节,因此由雅虎牵头,在06年左右建立了开源项目Hadoop,目的是根据Google的三篇论文,实现一个大规模的管理计算系统.但直到08年,Hadoop同Google公布的一些关键指标仍有几倍

Google App Engine 学习和实践

这个周末玩了玩Google App Engine,随手写点东西,算是学习笔记吧.不当之处,请多多指正. 作者:liigo,2009/04/26夜,大连 原创链接:http://blog.csdn.net/liigo/archive/2009/04/26/4127055.aspx 转载请注明出处:http://blog.csdn.net/liigo 一,怎么想起来玩Google App Engine了呢? 近期想写一个小程序,以便在公司的电脑和家里的电脑之间随时共享数据.但是没有现成的server

高级的Google搜索技巧你知道有哪些

前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您展示如何更智能.更高效地进行Google的系列搜索. Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击"搜索"按钮,等着Google显示出它第一页的搜索结果.这是一个相当简单模式匹配算法的搜索

【深度解析】Google第二代深度学习引擎TensorFlow开源

作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 TensorFlow 编写的运算可以几乎不用更改,就能被运行在多种异质系统上,从移动设备(例如手机和平板)到拥有几百台的机器和几千个 GPU 之类运算设备的大规模分布式系统. TensorFlow 降低了深度学习的使用门槛,让从业人员能够更简单和方便地开发新产品.作为Google 发布的“平台级产品”,很多

高效率使用google

Google良好的搜索和易用性已经得到了广大网友的欢迎,但是除了我们经常使用的Google网站.图像和新闻搜索之外,它还有很多其他搜索功能和搜索技巧.如果我们也能充分利用,必将带来更大的便利.这里我介绍几个很有用的搜索技巧,在平时搜索中可以结合使用. 一.限定搜索范围的技巧 1.文件类型 有时候我们可能不需要搜索网页文件或者图片,我们可能想要搜索其他类型的问题,比如文档文件(Word,Excel,PPT),Flash文件,甚至是Google地图文件,我们都可以使用“filetype”功能来实现.

Google搜索技巧、使用Google的其它专业搜索

前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您展示如何更智能.更高效地进行Google的系列搜索. Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击“搜索”按钮,等着Google显示出它第一页的搜索结果.这是一个相当简单模式匹配算法的搜索,不幸的是