3
This is librep, a Lisp system for UNIX. It contains a Lisp interpreter,
4
byte-code compiler and virtual machine. Applications may use the Lisp
5
interpreter as an extension language, or it may be used for stand-alone
8
The Lisp dialect was originally inspired by Emacs Lisp, but with the
9
worst features removed. It also borrows many ideas from Scheme.
11
It is known to compile on at least Solaris/sparc and Linux/ix86; it is
12
released under the terms of the GNU GPL, copyright John Harper
17
http://librep.sourceforge.net/
19
To compile this you'll need GNU make, the GNU MP library (see below)
20
and GNU dbm installed. Basically, just do:
33
If you're on a 64-bit architecture you may want to look at the
34
`--with-value-type' configure option. This is an implicitly signed
35
integer type (i.e. `int', `long', etc) that is wide enough to store an
36
arbitrary pointer without losing any bits.
38
It should be detected automatically by the configure script, but if not
39
there are two most likely required settings:
41
1. For a machine with 64-bit pointers and longs, but only 32-bit ints
42
the following could be done:
44
$ ./configure --with-value-type=long
46
2. For a machine with both int and long 32-bits, but with 64-bit
47
pointers and long long ints, then:
49
$ ./configure --with-value-type="long long"
51
If this option is set incorrectly (i.e. to an integer type that is too
52
small) a run-time assertion will be triggered when the interpreter
55
Also, if this option is set to anything but int, long, or long long,
56
then the src/rep_config.h file will need to be edited for the constant
57
suffix and printf conversion of the chosen type.
63
rep uses GNU MP for it's bignum/rational implementation; you can find
64
it at any GNU mirror. GMP versions 2 and 3 are both known to work
65
(though version 3 is recommended)
71
rep includes plugins providing language bindings for several libraries.
72
Because these plugins are implemented as shared objects that are loaded
73
at runtime, the libraries they wrap must also be shared libraries on
74
most systems. This means that the installed libgdm must be shared, and
75
if compiling with readline support, so must libreadline
81
The configure script accepts the following options to build restricted
82
versions of librep. The resulting library is binary-compatible with the
87
Don't use GNU MP for bignums. Use `long long' as biggest integer
88
type (if available, else just `long'). Also, there is no support
89
for exact rationals, thus (/ 1 2) => 0.5 not 1/2
91
--disable-continuations
93
Don't include support for call/cc or multi-threading. This may be
94
useful for machines with non-linear stacks (old crays?)
97
obscure configure options
98
-------------------------
102
Trace all memory allocations. Not for general use
106
When printing C stack backtraces, don't try to output symbolic
111
Compile with flags enabling profiling. Also needs --enable-static
112
to be given. Use the `srep' target in the src directory to build a
113
statically linked interpreter (since gprof doesn't profile shared
116
--with-malloc-alignment=BYTES
118
The minimum alignment of memory returned from malloc (). Defaults
119
to the machine's word size. It's unlikely this will ever need to be
122
--with-stack-direction=DIRECTION
124
Direction of stack growth. -1 for downwards (grows from higher
125
addresses to lower addresses), +1 for upwards. If not given, will
126
try to infer this automatically (though it has been known to fail)
128
--enable-full-name-terminator=CHARACTER
130
If the GECOS fields in your password file contain extra information
131
after the user's full name, this option allows the separator
132
character to be given, letting rep's user-full-name function return
133
the correct information.
135
E.g. some systems have GECOS as a comma-separated list of values,
136
the first of which is the full name. For this case:
138
--enable-full-name-terminator=,