编译器编译器:关于使用JavaScript引擎的Twitch系列文章

2020-06-19 03:23:57

上周,我完成了一个名为Compiler Compiler的新流的三部分试验,它考察了JavaScript规范ECMA-262是如何在SpiderMonkey中实现的。

JavaScript…。是一种编程语言。有些人喜欢,有些人不喜欢。JavaScript可能有点乱,但很容易上手。它是教会我如何编程的编程语言,并向我介绍了更广阔的编程语言世界。所以,它在我心中有一个特殊的位置。在我自学的过程中,我意识到其他人可能和我一样面临着很多同样的挣扎。这就是编译器编译器的真正意义所在。

流的第一个bug是关于增量/减量的测试失败。到目前为止,如果你想赶上这部剧,试播集已经发布,你可以在这里观看播放列表中的内容:

未来的剧集将在这里安排,并有描述,以防有您感兴趣的特定主题。在这里寻找博客帖子,在我们前进的过程中总结每一个错误。

SpiderMonkey是Firefox的JavaScript引擎。与V8、JSC和其他实现一起,它是JavaScript运行的原因。由于与之相关的大量基础知识,对引擎的贡献可能会令人望而生畏。

编译器研究得很好,但可供学习的资料(如“龙书”和其他关于编译器的文本)通常是面向大学背景的学习-有大量的专门用于理解和实践的时间段。这段专门的时间并不是每个人都有的。

SpiderMonkey是用C++编写的。如果你来自一门解释型语言,为了真正熟悉它,有很多工具需要学习。

它是ECMA-262标准的实现,该标准定义了JavaScript。如果您从未阅读过编程语言语法或标准文本,则可能很难阅读。

Compiler Compiler流是为了让贡献变得更容易。如果您不确定如何开始,这是为您准备的!

我对这个系列赛有两个目标。第一个,也是更重要的一个,是通过SpiderMonkey向人们介绍语言规范和实现的世界。第二个目标是使SpiderMonkey尽可能符合ECMA-262规范,幸运的是,这是实现第一个目标的一个很好的框架工具。

我把这段视频组织成一系列带有重复元素的片段,每个片段由大约5集组成。一个片段将从ECMA-262一致性测试套件(Test262)开始,其中一个测试在SpiderMonkey上失败。我们将花费一些时间来理解失败的测试告诉我们关于该语言和SpiderMonkey实现的信息。从那里我们将阅读和理解ECMA-262文本中规定的行为。我们将在引擎中逐步实现修复,并探索出现的任何其他问题。

每个片段中的每一集将长达1小时,然后是30分钟的自由聊天。如果你有问题,随时可以问。我会尽量提前把资料寄给你,让你在开工前先读一读。

如果你错过了该系列的一部分,你可以在任何部分的开头加入。如果您看过前面的部分,那么新的部分将为您发现规范的新部分,重复这些部分将使您更容易学习。每个完成的片段后面都会有一篇总结流中信息的博客帖子。

我很幸运有来自SpiderMonkey团队和TC39的同事加入聊天。感谢伊恩·爱尔兰、杰森·奥伦多夫和格斯·卡普兰加入我们的行列,为人们回答问题。感谢Jan de Mooij和AndréBargull的评论和评论。也非常感谢桑德拉·珀辛、雷纳·克维林克、瓦尔·格林和梅丽莎·塞米多在制作和推动流媒体方面的支持,也感谢迈克·康利提供的流媒体技巧。