1[ this is -*-Text-*- ] 2 3Complete documentation is given in info file. 4 5This is librep, a Lisp system for UNIX, needed by Sawfish window 6manager. It contains a Lisp interpreter, byte-code compiler and 7virtual machine. Applications may use the Lisp interpreter as an 8extension language, or it may be used for stand-alone scripts. 9 10The Lisp dialect was originally inspired by Emacs Lisp, but with the 11worst features removed. It also borrows many ideas from Scheme. 12 13It is known to compile on at least Solaris/sparc and Linux, x86 and 14x86-64. 15 16It is released under the terms of the GNU GPL, 17copyright John Harper <jsh@pixelslut.com> 18 19Maintainer until Aug 2008: John Harper 20Maintainer since Aug 2008: Christopher Bratusek 21 22For more details see: 23 24 http://sawfish.wikia.com/ 25 26To compile this you'll need GNU make, and GNU dbm 27installed. Basically, just do: 28 29 $ ./configure 30 $ make 31 $ make install 32 33Notes 34===== 35 3664-bit systems 37-------------- 38 39Basically support of 64-bit systems works, but if not, read this: 40 41You may want to look at the `--with-value-type' configure option. This 42is an implicitly signed integer type (i.e. `int', `long', etc) that is 43wide enough to store an arbitrary pointer without losing any bits. 44 45It should be detected automatically by the configure script, but if not 46there are two most likely required settings: 47 48 1. For a machine with 64-bit pointers and longs, but only 32-bit ints 49 the following could be done: 50 51 $ ./configure --with-value-type=long 52 53 2. For a machine with both int and long 32-bits, but with 64-bit 54 pointers and long long ints, then: 55 56 $ ./configure --with-value-type="long long" 57 58If this option is set incorrectly (i.e. to an integer type that is too 59small) a run-time assertion will be triggered when the interpreter 60initialises itself. 61 62Also, if this option is set to anything but int, long, or long long, 63then the src/rep_config.h file will need to be edited for the constant 64suffix and printf conversion of the chosen type. 65 66 67libgmp 68------ 69 70rep optionally uses GNU MP for its bignum/rational implementation; 71you can find it at any GNU mirror. GMP versions 2 and 3 are both known 72to work (though version 3 is recommended) 73 74 75shared libraries 76---------------- 77 78rep includes plugins providing language bindings for several libraries. 79Because these plugins are implemented as shared objects that are loaded 80at runtime, the libraries they wrap must also be shared libraries on 81most systems. This means that the installed libgdm must be shared, and 82if compiling with readline support, so must libreadline 83 84 85cut-down version 86---------------- 87 88The configure script accepts the following options to build restricted 89versions of librep. The resulting library is binary-compatible with the 90normal version. 91 92 --without-gmp 93 94 Don't use GNU MP for bignums. Use `long long' as biggest integer 95 type (if available, else just `long'). Also, there is no support 96 for exact rationals, thus (/ 1 2) => 0.5 not 1/2 97 98 --disable-continuations 99 100 Don't include support for call/cc or multi-threading. This may be 101 useful for machines with non-linear stacks (old crays?) 102 103 104obscure configure options 105------------------------- 106 107 --enable-dballoc 108 109 Trace all memory allocations. Not for general use 110 111 --disable-dbsyms 112 113 When printing C stack backtraces, don't try to output symbolic 114 addresses 115 116 --enable-gprof 117 118 Compile with flags enabling profiling. Also needs --enable-static 119 to be given. Use the `srep' target in the src directory to build a 120 statically linked interpreter (since gprof doesn't profile shared 121 libraries) 122 123 --with-malloc-alignment=BYTES 124 125 The minimum alignment of memory returned from malloc (). Defaults 126 to the machine's word size. It's unlikely this will ever need to be 127 specified explicitly 128 129 --with-stack-direction=DIRECTION 130 131 Direction of stack growth. -1 for downwards (grows from higher 132 addresses to lower addresses), +1 for upwards. If not given, will 133 try to infer this automatically (though it has been known to fail) 134 135 --enable-full-name-terminator=CHARACTER 136 137 If the GECOS fields in your password file contain extra information 138 after the user's full name, this option allows the separator 139 character to be given, letting rep's user-full-name function return 140 the correct information. 141 142 E.g. some systems have GECOS as a comma-separated list of values, 143 the first of which is the full name. For this case: 144 145 --enable-full-name-terminator=, 146 147