README (2069B)
1 08may13abu 2 (c) Software Lab. Alexander Burger 3 4 5 Ersatz PicoLisp 6 =============== 7 8 Ersatz PicoLisp is a version of PicoLisp completely written in Java. It requires 9 a 1.6 Java Runtime Environment. 10 11 It should be the last resort when there is no other way to run a "real" 12 PicoLisp. Also, it may be used to bootstrap the 64-bit version, which requires a 13 running PicoLisp to build from the sources. 14 15 Unfortunately, ErsatzLisp lacks everything which makes up "true" PicoLisp: 16 Speed, small memory footprint, and simple internal structures. 17 18 Performance is rather poor. It is 5 to 10 times slower, allocates a huge amount 19 of memory at startup (600 MB vs. 3 MB), and needs 2.5 to 4 times the space for 20 runtime Lisp data. But efficiency was not a major goal. Instead, performance was 21 often sacrificed in favor of simpler or more modular structures. 22 23 There is no support for 24 25 -- raw console input ('key') and line editing 26 -- child processes ('fork') 27 -- interprocess communication ('tell', 'hear', 'ipc', 'udp' etc.) 28 -- databases (external symbols) 29 -- signal handling 30 31 32 Invocation 33 ---------- 34 35 Ersatz PicoLisp can be started - analog to 'pil' - as 36 37 $ ersatz/pil 38 39 This includes slightly simplified versions of the standard libraries as loaded 40 by the "real" 'pil' (without database, but with Pilog and XML support). 41 42 To start it in debug mode, use 43 44 $ ersatz/pil + 45 46 47 On non-Unix systems, you might start 'java' directly, e.g.: 48 49 java -DPID=42 -cp .;tmp;picolisp.jar PicoLisp lib.l 50 51 Instead of '42' some other number may be passed. It is used to simulate a 52 "process ID", so it should be different for every running instance of Ersatz 53 PicoLisp. 54 55 56 Building the JAR file 57 --------------------- 58 59 The actual source files are 60 61 sys.src # The system 62 fun.src # Function definitions 63 64 The PicoLisp script "mkJar" will read them, generate the Java source file 65 "PicoLisp.java", compile that with 'javac', and pack the result into a JAR (Java 66 Archive) file. "mkJar" expects to be run in the "ersatz/" directory, e.g.: 67 68 $ (cd ersatz; ./mkJar)