A Common Lisp implementation for Javascript
npm install jscl
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. To use in Node,node jscl-node.js; to use in Deno,deno --allow-env --allow-read jscl-deno.js.
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
- Explicit control transfers
tagbody
and go
- 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
- The format function
- Others
The compiler is very verbose, some simple optimizations or
minification could help to deal with it.
Feel free to hack it yourself