Javascript > JSCL
A CL-to-JS compiler designed to be self-hosting from day one. GPL3.0.
JSCL
JSCL is a Common Lisp to JavaScript compiler, which is bootstrapped from Common Lisp and executed from the browser.
Getting Started
You can try a demo online here, or you can install the JSCL npm package:
npm install -g jscl
to run jscl in NodeJS.
Build
If you want to hack JSCL, you will have to download the repository
git clone https://github.com/jscl-project/jscl.git
Run npm install under the jscl directory, then run the build
script:
./make.sh
It will generate jscl.js and the rest of the distribution files in
the jscl/dist directory. Now you can open dist/index.html in your
browser and use it. To use in Node, node dist/jscl-node.js; to use
in Deno, deno --allow-env --allow-read dist/jscl-deno.js.
Status
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
LOOPmacroCLOS
The
formatfunctionOthers
The compiler is very verbose, some simple optimizations or minification could help to deal with it.
Feel free to hack it yourself