picolisp

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/picolisp.git/
Log | Files | Refs | README | LICENSE

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)