34

I need an extremely tiny implementation of (maybe a subset of?) Javascript. Code size and memory usage are extremely important (speed isn't in the question, it can run as slow as it likes). It must be written in C (not C++), and that too, ANSI C (GCC extensions are okay). If it runs on a VM would be best, because I will have to write a compiler for it. Any suggestions?

EDIT: Both of the responses I have seem good, except:

SpiderMonkey concentrates a lot on making it faster, I don't care if its fast at all.
Quad-Wheel sounds good, except the activity on it, and code comments are few (I will be porting this to another architecture if that helps).

So, any other responses would be great. Or, I could roll out my own simplified version of JS (but that doesn't sound fun at all)

Prof. Falken
  • 24,226
  • 19
  • 100
  • 173
Dhaivat Pandya
  • 6,499
  • 4
  • 29
  • 43

11 Answers11

24

Duktape is written in C, with a focus on portability and compact footprint: http://duktape.org/

Samuli Pahaoja
  • 2,660
  • 3
  • 24
  • 32
  • 2
    Compared to some of the alternatives, Duktape's documentation is excellent. I'm moving from muJS to Duktape for that very reason. – CyberFonic Dec 05 '14 at 22:05
  • 1
    What is the RAM footprint of Ducktape? I can't find any documentation on that. I know that Espurino can start in as little as 8K – JockM Mar 14 '18 at 22:14
14

I just discovered this ruby: https://github.com/gfwilliams/tiny-js

I've been looking quite some time for this, since spidermonkey/v8 usually is pretty big and comes with several dependancies. Tiny-js is a portable 'run make and your done'-linux c-class. Perfectly for if you are only looking for simple bindings and prefer javascript/c-syntax over lua/other awesome scriptinglanguages.

Xavier Combelle
  • 10,968
  • 5
  • 28
  • 52
4

An ANSI-C engine for ECMA-262: http://code.google.com/p/quad-wheel/

Mozilla SpiderMonkey is written in C as well, but probably to complex and large for you?

Björn
  • 29,019
  • 9
  • 65
  • 81
2

muJS from Artifex Software might be another option for embedded JS/ES implementation.

CyberFonic
  • 3,957
  • 1
  • 21
  • 21
2

SpiderMonkey is Mozilla's C implementation of JavaScript.

http://www.mozilla.org/js/spidermonkey/

Robert Harvey
  • 178,213
  • 47
  • 333
  • 501
1

You should look at Jsi, which was just released. It is very small, is a subset of javascript, and is in C (derived from quadwheel).

pcmacdon
  • 11
  • 1
0

I think the jsi he's talking about is this: http://pdqi.com/cgi-bin/cgiwrap/pdqi/jsi.cgi/doc/tip/jsi/www/usingjsi.wiki

(Don't blame it is not... hehe)

Community
  • 1
  • 1
Alfgaar
  • 172
  • 1
  • 7
0

http://jsish.org will redirect you to the host site.

  • 1
    Welcome to Stack Overflow! Whilst this may theoretically answer the question, [it would be preferable](//meta.stackoverflow.com/q/8259) to include the essential parts of the answer here, and provide the link for reference. – Enamul Hassan Jun 13 '16 at 19:56
0

https://github.com/cesanta/v7 is designed for embedded systems. Has very small footprint.

valenok
  • 827
  • 7
  • 9
0

Have you looked at JerryScript?

user835611
  • 2,309
  • 2
  • 21
  • 29
0

If you are completely expect a full Node.js runtime at embeddable, ShadowNode might be a good for you.

https://github.com/Rokid/ShadowNode

Yorkie
  • 59
  • 2