erlang_js
Overview
Travis-CI ::
erlang_js
is a linked-in driver, API, and OTP application that
embeds Mozilla’s Spidermonkey Javascript Virtual Machine in
Erlang. Originally created to facilitate usage of Riak’s MapReduce
by non-Erlang programmers, it supports multiple concurrent
Javascript VMs, runtime evaluation of Javascript code, and
invocation of Javascript functions.
erlang_js
builds and executes only on Unix-based platforms,
including Linux, Mac OS/X, and Solaris. It includes version 1.8.0
of Spidermonkey and Douglas Crockford’s json2.js
JSON
parser. More information about the features available to Javascript
inside erlang_js
are detailed on the Mozilla Developer Center.
Quick Start
You must have Erlang/OTP R13B04 or later and a GNU-style build
system to compile and run erlang_js
.
git clone git://github.com/basho/erlang_js.git
make all test
Start up an Erlang shell with the path to erlang_js
included.
erl -pa path/to/erlang_js/ebin -boot start_sasl
Start the erlang_js
application and create a Javascript VM.
1> application:start(erlang_js).
=PROGRESS REPORT==== 17-Feb-2011::11:31:51 ===
supervisor: {local,erlang_js_sup}
started: [{pid,<0.46.0>},
{name,cache},
{mfargs,{js_cache,start_link,[]}},
{restart_type,permanent},
{shutdown,2000},
{child_type,worker}]
=PROGRESS REPORT==== 17-Feb-2011::11:31:51 ===
application: erlang_js
started_at: nonode@nohost
ok
2> {ok, JS} = js_driver:new().
Now you can evaluate Javascript expressions and call Javascript functions.
3> js:define(JS, <<"var addOne = function(a){ return a + 1; }">>).
ok
4> js:call(JS, <<"addOne">>, [3]).
{ok,4}
Documentation
Documentation about the API is extensive and can be generated by
edoc
.
$ make docs
$ open docs/index.html
Contributing
We encourage contributions to erlang_js
from the community.
- Fork the
erlang_js
repository on Github. - Clone your fork or add the remote if you already have a clone of the repository.
git clone [email protected]:yourusername/erlang_js.git
# or
git remote add mine [email protected]:yourusername/erlang_js.git
- Create a topic branch for your change.
git checkout -b some-topic-branch
- Make your change and commit. Use a clear and descriptive commit message, spanning multiple lines if detailed explanation is needed.
- Push to your fork of the repository and then send a pull-request through Github.
git push mine some-topic-branch
- A Basho engineer or community maintainer will review your patch and merge it into the main repository or send you feedback.