Node.js on top of spidermonkey
JavaScript C++ C POV-Ray SDL HTML Python Other
Switch branches/tags
Nothing to show
Pull request Compare This branch is 4141 commits behind mozilla:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.github github: put description of PR to the end of tmpl Feb 24, 2016
benchmark http: speed up checkIsHttpToken Mar 27, 2016
deps spidershim: Implement Int32 and Uint32 and add tests for them Apr 15, 2016
doc doc: note assert.throws() pitfall Apr 4, 2016
lib Merge branch 'nodejs/master' into chakracore-master Apr 6, 2016
src Merge branch 'nodejs/master' into chakracore-master Apr 6, 2016
test test: update 5 node-chakracore message test baselines Apr 13, 2016
tools gyp: revert incorrect quote_cmd fix Apr 6, 2016
.editorconfig tools: add .editorconfig Dec 16, 2015
.eslintignore tools: apply linting to doc tools Feb 2, 2016
.eslintrc tools: enable no-self-assign ESLint rule Mar 7, 2016
.gitattributes src: limit .gitattributes eol to vcbuild.bat Jan 13, 2015
.gitignore Merge remote-tracking branch 'chakra/chakracore-master' Apr 14, 2016
.mailmap doc: update AUTHORS list Dec 15, 2015
AUTHORS doc: update AUTHORS list Dec 15, 2015
BSDmakefile node: rename from io.js to node Aug 23, 2015 doc: move build instructions to a new document Mar 13, 2016 2016-03-31 Version 0.10.44 (Maintenance) Release Apr 1, 2016 doc: clarify code of conduct reporting Feb 8, 2016 collaborator_guide: clarify commit message rules Mar 13, 2016 doc: replace node-forward link in Feb 15, 2016 governance: remove target size for CTC Mar 30, 2016
LICENSE doc: update npm LICENSE using Feb 1, 2016
Makefile build: introduce ci targets for lint/benchmark Apr 1, 2016 Update the readme file Apr 11, 2016 doc: update NAN urls in and doc/ Mar 2, 2016 meta: add "joining a wg" section to Apr 2, 2016
android-configure build: add suport for x86 architecture Mar 22, 2016
common.gypi spidershim: Make some more Linux specific v8_base stuff depend on v8 Apr 15, 2016
configure spidershim: Hook up debug and release builds to debug and optimized S… Apr 15, 2016
node.gyp spidershim: Make some more Linux specific v8_base stuff depend on v8 Apr 15, 2016
vcbuild.bat Merge branch 'nodejs/master' into chakracore-master Apr 6, 2016

SpiderNode: Node.js on SpiderMonkey

This project is a port of Node.js on top of SpiderMonkey, the JavaScript engine in Firefox. We're still in the very early stages of the port, and a lot of work remains to be done before Node works.


Right now we're focused on using this project in the Positron project. This means that we will need to finish SpiderShim to the extent necessary for Node.js to work. In the future, we may look into finishing implementing the features of the V8 API that Node.js does not use, in order to provide a V8 API shim layer out of the box in SpiderMonkey. The SpiderShim code is being developed with that long term goal in mind.

How it works

To enable building and running Node.js with SpiderMonkey, a V8 API shim (SpiderShim) is created on top of the SpiderMonkey API. This is based on Microsoft's node-chakracore, but it doesn't share much code with it besides the build system integration.

Current status

This is a work in progress, and Node cannot be successfully built yet because of the missing V8 APIs causing linker errors when building the Node.js binary. So far enough of the V8 API has been implemented to enable running a minimal JavaScript program on top of SpiderShim. More specifically this test case currently passes. Nothing else will work out of the box yet!

The build system integration can be improved.

We're actively working on this, so if you're interested in the status of this project, please check here again soon.

How to build

Before building please make sure you have the prerequisites for building Node.js as documented here.

Building on any OS other than Linux or OS X has not been tested.

Build Command:

./configure --engine=spidermonkey

Note that right now the build will fail as stated above when linking Node. Building the SpiderShim test requires invoking the linker command manually.

Repository structure

The repository is based on node-chakracore. The interesting bits can be found in the deps/spidershim directory.