Skip to content
/ jscl Public
forked from jscl-project/jscl

A Lisp-to-Javascript compiler bootstrapped from Common Lisp

License

Notifications You must be signed in to change notification settings

mshook/jscl

 
 

Repository files navigation

JSCL

Build Status

JSCL is a Common Lisp to Javascript compiler, which is bootstrapped from Common Lisp and executed from the browser.

JSCL

Getting Started

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.

Build

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.

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 tranfers 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

  • 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:

  • The format function

Feel free to hack it yourself

About

A Lisp-to-Javascript compiler bootstrapped from Common Lisp

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Common Lisp 96.9%
  • JavaScript 2.6%
  • Other 0.5%