[parenscript-devel] Project announcement: cl-spidermonkey

Red Daly reddaly at gmail.com
Thu Jul 1 18:58:04 UTC 2010


Dearest Meta Javascripters,

I have written a library for interfacing Common Lisp with the
Spidermonkey Javascript engine.  You may find some use in this for
testing Parenscript code, or ever running Parenscript code to do some
important, lisp-end task.  In any case, what follows is excerpted from
the README.  The home page for the project is
http://github.com/gonzojive/cl-spidermonkey  .  Contributes are of
course welcome.

All the very best,
Red

# 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://github.com/gonzojive/cl-spidermonkey.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 install-spidermonkey.sh

That will download and install SpiderMonkey, and set up all the paths
properly.

Now you should be able to load the library in lisp:

    REPL> (asdf:operate 'asdf:load-op :cl-spidermonkey)


## Usage

Right now there are only two exported symbols, so things are pretty
easy:

    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.




More information about the parenscript-devel mailing list