资讯专栏INFORMATION COLUMN

如何开始学习 V8

googollee / 3098人阅读

摘要:如果不行的话,不用担心,当你审查错误时会学习到知识的。但是任何人不得不从某处开始,也许你坚持,会在未来看到来自你的变更记录。

本文转载自:众成翻译
译者:yu-wj
链接:http://www.zcfy.cc/article/3963
原文:https://medium.com/dailyjs/how-do-i-get-started-with-v8-development-17e976ebe4af

如何学习v8开发

你是否有兴趣理解更多关于编译器、虚拟机、JavaScript引擎的知识,或者贡献V8项目

你也许曾没上过编译原理的课程或者没有c++编程经验,但是没人生来就具有这些知识的,你不需要理解任何编译器方面知识。这里有一些资源也许会帮助你。

但是现在世面上有很少的编译的书籍,而且也没发现一本具有现代优化知识的书籍,尤其是对于JavaScript引擎来说。如果你想学习基础,可以去看看龙书(中文版《编译原理》,现在已经出到了第二版)

这里有几个关于V8的 博客:

Official V8 blog v8project.blogspot.com

benediktmeurer.de (V8 compiler and benchmarks)

http://ripsawridge.github.io/ (V8 compiler)

https://medium.com/@tverwaes (V8 runtime)

http://mrale.ph/ (Not on the V8 team anymore.)

如果你比较喜欢看视频学习,这里也有一些不错的视频

Breaking the Speed Limit from 2012 by Daniel Clifford, V8 lead [Slides]

A Trip to the Zoo from 2015 by me, Nordic.js [Slides]

V8, modern JavaScript, and Beyond from 2016 by Seth Thompson

A little on V8 and WebAssembly from 2016b by Ben Titzer [Slides]

JS Engines — how do they even? from 2017 by me JSConfEU [Slides]

不幸的是,在这些高级资源和V8源码中还是有挺大的差距,但是你需要边做边学。所以去获取源代码然后编译它。V8在V8/test中有数万行代码。坚持在本地运行它,否则你需要等待几个小时。跟着V8 Wiki去编译 and 运行 V8。维基百科也有如何提交变更记录的说明,变更记录是Chromium中用于拉取请求的术语。

需要花点时间去编译V8

我建议先从简单开始。改变一些小地方,比如更改错误信息的提示语。然后编译,并在几行能导致错误代码中运行它,看看是否能获取你的错误信息。这里变更记录就是改变了一个错误信息。就这样修改代码,慢慢地就会熟悉基本代码和编译过程。

使用D8运行你本地修改后的V8引擎而不是使用浏览器。当你擅长V8后,你可以使用git

变更记录在 Chromium’s code review tool, Gerrit.

一旦你编辑错误信息和在D8上看到改变后,就可以 上传你的代码然后在V8测试框架下进行所有测试,你应该发现一些测试失败,是因为其中一些测试是检查错误信息的。这就要求需要熟悉代码审查工具和如何在框架中自动执行测试,所有当你想提交补丁都需要准备好。如何使用V8审查工具和如何运行测试的细节内容都在这里

如果你熟悉JavaScript但是不太了解c++,你也许想从V8/src/js.部分开始,这部分都是用JavaScript编写的,而且在都在这个目录下。代码中大部分都是按照EcmaScript 规范实现的。选择一个函数然后查找其规范。你能理解规范如何对应于代码吗?如果你改变或删除部分代码,什么测试失败,违反了规范中哪一步说明?在V8/test, 尤其是 V8/test/mjsunit中有大量的JavaScript代码。

下一步,你可以阅览V8 issue tracker。也许你会发现一些小问题,试图去修改。首先检查你是否能理解,然后复制错误。在JavaScript中写一段小代码片段,当运行时显示错误。在代码中寻找到错误代码,然后试图分解代码,然后运行测试代码确保是因为你分解代码导致了错误。玩弄代码。V8代码量特别大且复杂。你需要足够能力去解决错误。如果不行的话,不用担心,当你审查错误时会学习到知识的。

V8中做出大量更改是很困难的,并且需要大量时间和知识。如果我告知你可以很容易改变V8的运行方式或添加新特点,那一定是骗人的。但是任何人不得不从某处开始,也许你坚持,会在未来看到来自你的变更记录。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84931.html

相关文章

  • V8引擎深入研究目录贴

    摘要:对于每个前端程序员来讲都有一个终极理想,那就是搞懂引擎是如何工作的。性能经过了两次飞跃第次飞跃是年发布,第次则是年的。从去年底开始连载源码分析,记录一下自己学习源码的点点滴滴。月星期六晚点和大家一起聊聊引擎前端程序员应该懂点知识讲堂。 对于每个前端程序员来讲都有一个终极理想,那就是搞懂 javascript 引擎是如何工作的。 从我的网络 ID(justjavac)可以看出来,当我开始...

    blastz 评论0 收藏0
  • JavaScript是如何工作的:深入V8引擎&编写优化代码的5个技巧

    摘要:第二篇文章将深入谷歌的引擎的内部。引擎可以实现为标准解释器,或者以某种形式将编译为字节码的即时编译器。这个引擎是在谷歌中使用的,但是,与其他引擎不同的是也用于流行的。一种更复杂的优化编译器,生成高度优化的代码。不是唯一能够做到的引擎。 本系列的 第一篇文章 主要介绍引擎、运行时和调用堆栈。第二篇文章将深入谷歌 V8 的JavaScript引擎的内部。 想阅读更多优质文章请猛戳GitHu...

    Turbo 评论0 收藏0
  • JavaScript是如何工作的:深入V8引擎&编写优化代码的5个技巧

    摘要:第二篇文章将深入谷歌的引擎的内部。引擎可以实现为标准解释器,或者以某种形式将编译为字节码的即时编译器。这个引擎是在谷歌中使用的,但是,与其他引擎不同的是也用于流行的。一种更复杂的优化编译器,生成高度优化的代码。不是唯一能够做到的引擎。 本系列的 第一篇文章 主要介绍引擎、运行时和调用堆栈。第二篇文章将深入谷歌 V8 的JavaScript引擎的内部。 想阅读更多优质文章请猛戳GitHu...

    DevWiki 评论0 收藏0
  • 「译」JavaScript 究竟是如何工作的?(第一部分)

    摘要:文章的第二部分涵盖了内存管理的概念,不久后将发布。的标准化工作是由国际组织负责的,相关规范被称为或者。随着分析器和编译器不断地更改字节码,的执行性能逐渐提高。 原文地址:How Does JavaScript Really Work? (Part 1) 原文作者:Priyesh Patel 译者:Chor showImg(https://segmentfault.com/img...

    Youngdze 评论0 收藏0
  • JavaScript是如何工作的:引擎,运行时和调用堆栈的概述!

    摘要:调用栈是一种单线程编程语言,这意味着它只有一个调用堆栈。调用栈是一种数据结构,它记录了我们在程序中的位置。而且这不是唯一的问题,一旦你的浏览器开始处理调用栈中的众多任务,它可能会停止响应相当长一段时间。 本文是旨在深入研究JavaScript及其实际工作原理的系列文章中的第一篇:我们认为通过了解JavaScript的构建块以及它们是如何工作的,将能够编写更好的代码和应用程序。我们还将分...

    PiscesYE 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<