Light Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

jscl-project/jscl

Repository files navigation

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

  • 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

About

A Lisp-to-JavaScript compiler bootstrapped from Common Lisp

Topics

Resources

Readme

License

GPL-3.0 license

Stars

Watchers

Forks

Packages

Contributors