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 LOOP
macro
CLOS
Others
The compiler is very verbose, some simple optimizations or minification could help to deal with it.
Most of the above features are incomplete. The major features that are still missing are:
format
functionFeel free to hack it yourself