Skip to content
Browse files

README and a few exported symbols

  • Loading branch information...
1 parent 90edf4c commit d7cd40ccdd52de9d94876a4daa124105d43f906e @gonzojive committed
Showing with 59 additions and 2 deletions.
  1. +55 −0 README.markdown
  2. +3 −1 src/package.lisp
  3. +1 −1 src/util.lisp
55 README.markdown
@@ -0,0 +1,55 @@
+# CL-SpiderMonkey: Common Lisp interface to Javascript
+### A Common Lisp library for interacting with Javascript through the SpiderMonkey library
+## Introduction
+cl-spidermonkey provides a Javascript runtime environment inside of
+Common Lisp by embedding a widely-used and tested Javascript engine:
+Mozilla's SpiderMonkey.
+With full access to Javascript from Common Lisp, it becomes easier to
+test Javascript libraries in the same breath as normal testing. It
+also allows a Lisp REPL to be used as a Javascript REPL, and for many
+other combinations of lisp and JS.
+## Installation
+Before you do anything you need the git repostiory.
+ git clone git://
+First you need to compile Spidermonkey. It's not that bad! Just cd
+into the vendor directory and then run the install script:
+ cd vendor
+ sh
+That will download and install SpiderMonkey, and set up all the paths
+Now you should be able to load the library in lisp:
+ REPL> (asdf:operate 'asdf:load-op :cl-spidermonkey)
+To make sure everything's peachy, run the test suite:
+ REPL> (asdf:operate 'asdf:load-op :cl-spidermonkey-tests)
+ REPL> (spidermonkey-tests:spidermonkey-tests)
+## Usage
+Right now there are only two exported symbols, so things are pretty
+ REPL> (sm::with-js-context (context)
+ (sm:evaluate-js "10 * 24;"))
+ 240
+Note that you can only get doubles, ints, strings, voids (undefined),
+nulls, and boolean values back from EVALUATE-JS. Any other object
+will come back as a pointer to a JS_Object whichs needs further
+attention from the bindings. If you are so inclined, lookat the
+src/spidermonkey-bindings.lisp file for more info on how to deal with
+native Spidermonkey objects.
4 src/package.lisp
@@ -2,7 +2,9 @@
(defpackage :cl-spidermonkey
(:nicknames :spidermonkey :sm)
- (:use :cl))
+ (:use :cl)
+ (:export #:with-js-context
+ #:evaluate-js))
(in-package :cl-spidermonkey)
2 src/util.lisp
@@ -21,7 +21,7 @@
(defun evaluate-js (code)
"Evaluates the Javascript code CODE and returns the jsval result."
- (evaluate-js-raw code))
+ (js-value-to-lisp (evaluate-js-raw code)))
(defun js-value-to-lisp (jsval)
"Given some rval, returns the lisp equivalent value if there is one,

0 comments on commit d7cd40c

Please sign in to comment.
Something went wrong with that request. Please try again.