如何参与 V8 引擎的开发

Oct 14, 2017 C++, JavaScript, V8 https://git.io/vATZQ

https://medium.com/dailyjs/how-do-i-get-started-with-v8-development-17e976ebe4af

作者是在 Google 做编译相关的工程师。

首先参与 V8 的贡献并不一定是需要科班出身、精通编译原理和 C++,当然有一些基础也是好的,可以看看比如 “龙书”(即《编译原理》)。

然后了解一些背景知识,比如各种关于 V8 的博客,还有视频(详见原文)。当然即使看完了这些,离 V8 将近一百万行的代码还差很远。所以需要一边动手一边学习。去跑一些 V8 已经有的测试用例,以及看看关于如何编译、运行、提交代码的 Wiki。

如何开始写一些简单的代码呢?可以考虑去修改报错信息里的文字,然后编译,然后写一段可以出发这个错误的 JavaScript 代码,看看是不是报了修改过后的错误信息。这里为了在本地验证代码,而不需要编译一个完整的浏览器来看运行效果,可以用 D8。D8 是调试 V8 引擎的 Shell 工具,本身就用来做这种修改了 V8 代码、需要用来验证 JavaScript 运行效果的事情。然后接下来上传修改的代码、并且看自动化测试效果,以及熟悉 Code Review 工具。

如果对 C++ 不熟悉但是熟悉 JavaScript 可以看看 V8/src/js 里的代码。这里很多代码是用来实现 ECMAScript 规范里的效果的,对照着标准看看这些代码是不是一条条都符合。

再接下来,可以从 V8 的 Issue 列表里调一个小的上手。首先需要写一些 JavaScript 代码来复现这个问题,然后去尝试解决。即使不能解决也没关系,这个尝试的过程已经是在学习了。