SpiderMonkey is a Mozilla Web Browser DOM component that comprises of the following functional capabilities:
- JavaScript engine
- JavaScript just-in-time compiler (IonMonkey DOM network graphical support
- Threading support (SpiderMonkey Promise)
SpiderMonkey is compliant with ECMA 6 standard. Two engine components have been created from SpiderMonkey:
- JavaScript/Emulators/SpiderMonkey/js - JavaScript console-based engine
- JavaScript/Emulators/SpiderMonkey/xpcshell - JavaScript Browser-based engine
Difference between js
and xpcshell
is that js
has no graphical
support (thus a smaller subset of JS API support).
Overviews
High level overviews
- http://hacks.mozilla.org/2010/03/a-quick-note-on-javascript-engine-components/
- https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals
Medium level documentation
jsapi.h
:
- http://hg.mozilla.org/mozilla-central/file/tip/js/src/jsapi.h and the
- files in http://hg.mozilla.org/mozilla-central/file/tip/js/public
Frequently used coding recipes and mappings from JS idioms to SpiderMonkey code:
- https://developer.mozilla.org/En/SpiderMonkey/JSAPI_Cookbook
Detailed documentation
Build:
- https://developer.mozilla.org/en/SpiderMonkey/Build_Documentation
Testing:
- https://developer.mozilla.org/en/SpiderMonkey/Running_Automated_JavaScript_Tests
Shell:
- https://developer.mozilla.org/En/SpiderMonkey/Introduction_to_the_JavaScript_shell
Function reference:
- https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference
API
Best C++ API is the official Mozilla JSAPI page: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference
Bindings - C++
Bindings of SpiderMonkey to C++ have evolved over time:
- http://spiderape.sourceforge.net/ is the first one
- http://flusspferd.org/%7Cflusspferd> was the mainstream one
- libjspp is another good binding that ended its support in 2012
- https://github.com/rogerpoon/jspp%7Cjspp is the current one