JSCL is a Common Lisp to JavaScript compiler, which is bootstrapped from Common Lisp and executed from the browser.
You can try a demo online here, or you can install the JSCL npm package:
npm install -g jscl
to run jscl-repl in NodeJS.
If you want to hack JSCL, you will have to download the repository
git clone https://github.com/jscl-project/jscl.git
load jscl.lisp in your Lisp, and call the bootstrap function to
compile the implementation itself:
(jscl:bootstrap)
It will generate a jscl.js file in the top of the source tree. Now
you can open jscl.html in your browser and use it.
JSCL is and will be a subset of Common Lisp. Of course it is far from complete, but it supports partially most common special operators, functions and macros. In particular:
-
Multiple values
-
Static and dynamic non local exit catch, throw; block, return-from.
-
Lexical and special variables. However, declare expressions are missing, but you can proclaim special variables.
-
Optional and keyword arguments
-
SETF places
-
Packages
-
The
LOOPmacro -
CLOS
-
The
formatfunction -
Others
The compiler is very verbose, some simple optimizations or minification could help to deal with it.
Feel free to hack it yourself