Longer README
[jscl.git] / README.org
1 * Ecmalisp
2
3   Ecmalisp is a Lisp-to-Javascript compiler, which is bootstrapped
4   from Common Lisp and executed from the browser.
5
6   You can try a demo [[http://davazp.net/ecmalisp/ecmalisp.html][here]].
7
8   It is just an experiment, of course. But it supports partially most
9   common special operators, functions and macros. In particular:
10
11   - Multiple values
12   - Explicit control flow ([[http://www.lispworks.com/documentation/HyperSpec/Body/s_tagbod.htm][tagbody]] and [[http://www.lispworks.com/documentation/HyperSpec/Body/s_go.htm][go]])
13   - Static and dynamic non local exist ([[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]]).
14   - Lexical and special variables. However, declare expressions are
15     missing, but you can /proclaim/ special variables.
16   - Optional and keyword arguments
17   - SETF places
18   - Packages
19
20   The compiler is very verbose, some simple optimizations or
21   /minification/ could help to deal with it.
22
23   Most of the above features are incomplete. It is not so bad because
24   so the compiler is not too heavy, but it would be great if we were
25   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
26   implementation, or even [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/0.html][CLOS]] or non-CLOS OOP.
27
28   /Feel free to hack it yourself/