Add MAKE-LIST.
[jscl.git] / README.org
1 * JSCL
2
3   JSCL is a Common Lisp to Javascript compiler, which is bootstrapped
4   from Common Lisp and executed from the browser.
5
6 ** Getting started
7
8 You can try a demo [[http://davazp.net/jscl/jscl.html][here]]. But if you want to hack JSCL, you will have
9 to download the repository
10
11 =git clone git@github.com:davazp/jscl.git=
12
13 /load/ jscl.lisp in your Lisp, and call the bootstrap function to
14 compile the implementation itself:
15
16 =(jscl:bootstrap)=
17
18 It will generate a jscl.js file in the top of the source tree. Now you
19 can open JSCL.html in your browser and use it.
20
21 ** Status
22
23 JSCL is and will be a subset of Common Lisp.  Of course it is far
24 from complete, but it supports partially most common special
25 operators, functions and macros. In particular:
26
27   - Multiple values
28   - Explicit control tranfers ([[http://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm][tagbody]] and [[http://www.lispworks.com/documentation/HyperSpec/Body/s_go.htm][go]])
29   - Static and dynamic non local exit ([[http://www.lispworks.com/documentation/HyperSpec/Body/s_catch.htm][catch]], [[http://www.lispworks.com/documentation/HyperSpec/Body/s_throw.htm][throw]]; [[http://www.lispworks.com/documentation/HyperSpec/Body/s_block.htm][block]], [[http://www.lispworks.com/documentation/HyperSpec/Body/s_ret_fr.htm][return-from]]).
30   - Lexical and special variables. However, declare expressions are
31     missing, but you can /proclaim/ special variables.
32   - Optional and keyword arguments
33   - SETF places
34   - Packages
35
36 The compiler is very verbose, some simple optimizations or
37 /minification/ could help to deal with it.
38
39 Most of the above features are incomplete. It is not so bad because
40 so the compiler is not too heavy, but it would be great if we were
41 just enough compliant to include a [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/iter/loop/mit/0.html][loop implementation]], a format
42 implementation, or even [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/0.html][CLOS]] or non-CLOS OOP.
43
44 /Feel free to hack it yourself/