微型javascript实现?

微型javascript实现?,javascript,c,embedding,Javascript,C,Embedding,我需要一个非常小的Javascript实现(可能是它的一个子集)。代码大小和内存使用非常重要(速度不是问题,它可以随心所欲地运行)。它必须用C(不是C++)编写,而且还要用ANSIC(GCC扩展也可以)。如果它在虚拟机上运行最好,因为我必须为它编写一个编译器。有什么建议吗 编辑:我的两个回答似乎都不错,除了: SpiderMonkey非常专注于让它更快,我根本不在乎它是否快 Quad Wheel听起来不错,除了上面的活动,代码注释也很少(如果有帮助的话,我将把它移植到另一个架构) 所以,任何其他

我需要一个非常小的Javascript实现(可能是它的一个子集)。代码大小和内存使用非常重要(速度不是问题,它可以随心所欲地运行)。它必须用C(不是C++)编写,而且还要用ANSIC(GCC扩展也可以)。如果它在虚拟机上运行最好,因为我必须为它编写一个编译器。有什么建议吗

编辑:我的两个回答似乎都不错,除了:

SpiderMonkey非常专注于让它更快,我根本不在乎它是否快
Quad Wheel听起来不错,除了上面的活动,代码注释也很少(如果有帮助的话,我将把它移植到另一个架构)


所以,任何其他的回应都会很好。或者,我可以推出自己的简化版JS(但听起来一点也不好玩)

SpiderMonkey是Mozilla的JavaScript C实现


用于ECMA-262的ANSI-C发动机:


也是用C编写的,但对您来说可能太复杂太大了?

我刚刚发现了这个ruby:


我一直在寻找这个,因为spidermonkey/v8通常是相当大的,并且有几个依赖项。Tiny js是一款可移植的“run make and your done”-linux c-class。如果您只想寻找简单的绑定,并且更喜欢javascript/c-syntax而不是lua/其他很棒的脚本语言,那么这非常适合。

Duktape是用c编写的,重点是可移植性和紧凑的封装:

您应该看看刚刚发布的Jsi。它非常小,是javascript的一个子集,并且是C语言(派生自Quadreel)

来自Artifex软件的可能是嵌入式JS/ES实现的另一个选项

我认为他所说的jsi是:


(别怪它不是……呵呵)

会将您重定向到主机站点。

是为嵌入式系统设计的。占用空间非常小。

您看过吗?

如果您完全希望在Embedded上运行完整的Node.js运行时,ShadowNode可能对您有好处


如果我们知道您的用例是什么,可能会有所帮助。也许是嵌入式控制器?你必须使用Javascript吗?例如,Scheme(甚至Forth)的各种实现都很小,可能非常适合您的应用程序。如果您不必使用Javascript,请尝试Lua。已经存在eLua。我想创建我自己的:)方案听起来不错,而且,为其编写解释器非常容易。不清楚为什么会将其标记为embedded。+1并接受。这真是太棒了。对不起,响应是一年半。TYY-JS是C++,不是C所期望的。看起来小JS实际上是不被维护的。自2013年7月以来没有提交。Duktape(@Samuli Kärkkäinen,下文)似乎是一个更为时尚的替代方案。因为它实现了ECMA标准,所以它更符合“基于对象”实现的原则。您能提供一个指向“jsi”的指针吗?我在任何地方都找不到“Jsi”,也找不到任何指向从Quadreel(Quadreel?)到Jsi的东西。与一些备选方案相比,Duktape的文档非常优秀。正是因为这个原因,我从muj迁移到Duktape。Ducktape的内存占用是多少?我找不到这方面的任何文件。我知道Espurino可以在8KWelcome内启动堆栈溢出!虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。