运行mongoDB shell的JavaScript引擎是什么?

15

这是V8引擎吗?我找不到这个信息。


现在是v8版本 http://docs.mongodb.org/manual/release-notes/2.4/ - basarat
2个回答

13

截至v3.1.7,MongoDB的JavaScript引擎是SpiderMonkey - 这在MongoDB 3.2版发布说明中得到了确认。

这个改变是基于兼容性说明所解释的:

这个改变使得更多现代的JavaScript语言特性能够使用,并且伴随着一些mongo shell的小改进和兼容性改变。

这里还有一些关于此事的注解

最近发布的MongoDB版本v3.3.5更新了SpiderMonkey版本到45.0.2 ESR - 可以在这里看到相关信息。

MongoDB在v3.1.6版本上进行了从V8切换回SpiderMonkey的开发工作 - 参见SERVER-18531,但是直到v3.1.7版本才通过默认启用SpiderMonkey - 可以在SERVER-19376中了解相关信息。

在v3.1.6之前,MongoDB使用V8 JavaScript引擎,在v2.3.1中成为默认引擎,如发布说明所述,并在v2.4的发布说明中也有强调。

SpiderMonkey在v2.5.1中从源代码中被移除

在此之前,MongoDB使用扩展版的SpiderMonkey v1.7 shell,其中使用了一些非标准的JavaScript扩展,例如ECMAScript for XML扩展。

似乎很早以前就是V8了,但在2009年4月从V8迁移到了SpiderMonkey。根据这篇文章,看起来在MongoDB的v1.1.4中仍然使用SpiderMonkey,但我找不到最初的切换时间。


1
我想知道为什么他们从V8转向SpiderMonkey。 - Chev
1
@AlexFord 我怀疑最初的原因是V8不支持mongoDB想要支持的所有扩展。现在已经都是V8了。 - andyb
更多细节请参见:http://docs.mongodb.org/manual/release-notes/2.4-javascript/ - Tim N
1
...然后它们又回到了spidermonkey(https://jira.mongodb.org/browse/SERVER-23358)。现在我真的很好奇这些转换的原因。在Jira问题跟踪器中可能有一些重要的讨论。 - Dan Ross
3
为什么要从V8切换到SpiderMonkey?[详细回答] 这篇文章解释了为什么MongoDB从使用V8 JavaScript引擎转而使用SpiderMonkey。这个决定是由于在某些工作负载下,V8的性能不如SpiderMonkey,并且使用SpiderMonkey可以提供更好的内存管理和更少的上下文切换。此外,为了使代码更便于维护,他们采用了一种新的方法生成JavaScript绑定,这在SpiderMonkey中实现得更容易。最终,这个决定被证明是正确的,MongoDB的性能表现在许多情况下都有所提高。 - Pascal Pixel Rigaux
显示剩余3条评论

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接