Skip to content
forked from basho/erlang_js

A fork of linked-in driver for Erlang to Mozilla's Spidermonkey 1.8.5 Javascript runtime using Jiffy JSON Parser.

License

Notifications You must be signed in to change notification settings

systra/erlang_js

 
 

Repository files navigation

erlang_js

Overview

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 uses Jiffy JSON Parser for JSON encoding/decoding.

erlang_js builds and executes only on Unix-based platforms, including Linux, Mac OS/X, and Solaris (version with Spidermonkey 1.8.5 was tested on OS/X and Centos 6.3/6.5). 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/systra/erlang_js.git
make all test

Start up an Erlang shell with the path to erlang_js included.

erl -pa ebin -pa deps/*/ebin -boot start_sasl

or using Make target

make run

Start the erlang_js application and create a Javascript VM.

1> application:start(erlang_js).

=PROGRESS REPORT==== 15-Oct-2012::22:09:39 ===
          supervisor: {local,erlang_js_sup}
             started: [{pid,<0.51.0>},
                       {name,cache},
                       {mfargs,{js_cache,start_link,[]}},
                       {restart_type,permanent},
                       {shutdown,2000},
                       {child_type,worker}]

=PROGRESS REPORT==== 15-Oct-2012::22:09:39 ===
         application: erlang_js
          started_at: nonode@nohost

ok
2> {ok, JS} = js_driver:new().
{ok,#Port<0.879>}

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

Coderwall :: http://api.coderwall.com/systra/endorse.png

About

A fork of linked-in driver for Erlang to Mozilla's Spidermonkey 1.8.5 Javascript runtime using Jiffy JSON Parser.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Erlang 57.7%
  • C 35.7%
  • Makefile 6.3%
  • Shell 0.3%