Update README.org
[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 ** Getting started
7
8 You can try a demo [[http://davazp.net/ecmalisp/ecmalisp.html][here]]. But if you want to hack ecmalisp, you will
9 have to download the repository
10
11 =git clone git@github.com:davazp/ecmalisp.git=
12
13 /load/ ecmalisp.lisp in your Lisp, and call the bootstrap function to
14 compile the implementation itself:
15
16 =(bootstrap)=
17
18 It will generate a ecmalisp.js file in the top of the source tree. Now
19 you can open ecmalisp.html in your browser and use it.
20
21 ** Status
22 It is just an experiment, of course. But it supports partially most
23 common special operators, functions and macros. In particular:
24
25   - Multiple values
26   - 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]])
27   - 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]]).
28   - Lexical and special variables. However, declare expressions are
29     missing, but you can /proclaim/ special variables.
30   - Optional and keyword arguments
31   - SETF places
32   - Packages
33     
34 The compiler is very verbose, some simple optimizations or
35 /minification/ could help to deal with it.
36
37 Most of the above features are incomplete. It is not so bad because
38 so the compiler is not too heavy, but it would be great if we were
39 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
40 implementation, or even [[http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/oop/0.html][CLOS]] or non-CLOS OOP.
41
42 /Feel free to hack it yourself/