[ this is -*-Text-*- ]

This is librep, a Lisp system for UNIX. It contains a Lisp interpreter,
byte-code compiler and virtual machine. Applications may use the Lisp
interpreter as an extension language, or it may be used for stand-alone
scripts.

The Lisp dialect was originally inspired by Emacs Lisp, but with the
worst features removed. It also borrows many ideas from Scheme.

It is known to compile on at least Solaris/sparc and Linux/ix86; it is
released under the terms of the GNU GPL, copyright John Harper
<jsh@users.sourceforge.net>

For more details see:

	http://librep.sourceforge.net/

To compile this you'll need GNU make, the GNU MP library (see below)
and GNU dbm installed. Basically, just do:

	$ ./configure --with-readline
	$ make
	$ make install


Notes
=====

64-bit systems
--------------

If you're on a 64-bit architecture you may want to look at the
`--with-value-type' configure option. This is an implicitly signed
integer type (i.e. `int', `long', etc) that is wide enough to store an
arbitrary pointer without losing any bits.

It should be detected automatically by the configure script, but if not
there are two most likely required settings:

 1. For a machine with 64-bit pointers and longs, but only 32-bit ints
    the following could be done:

	$ ./configure --with-value-type=long

 2. For a machine with both int and long 32-bits, but with 64-bit
    pointers and long long ints, then:

	$ ./configure --with-value-type="long long"

If this option is set incorrectly (i.e. to an integer type that is too
small) a run-time assertion will be triggered when the interpreter
initialises itself.

Also, if this option is set to anything but int, long, or long long,
then the src/rep.h file will need to be edited for the constant suffix
and printf conversion of the chosen type.


libgmp
------

rep uses GNU MP for it's bignum/rational implementation; you can find
it at any GNU mirror. The most recent version of GMP that rep has been
tested with at time of writing is version 3.0.1


shared libraries
----------------

rep includes plugins providing language bindings for several libraries.
Because these plugins are implemented as shared objects that are loaded
at runtime, the libraries they wrap must also be shared libraries on
most systems. This means that the installed libgdm must be shared, and
if compiling with readline support, so must libreadline


cut-down version
----------------

The configure script accepts the following options to build restricted
versions of librep. The resulting library is binary-compatible with the
normal version.

  --without-gmp

    Don't use GNU MP for bignums. Use `long long' as biggest integer
    type (if available, else just `long'). No support for exact
    rationals, thus (/ 1 2) => 0.5 not 1/2

  --disable-continuations

    Don't include support for call/cc or multi-threading. This may be
    useful for machines with non-linear stacks (old crays?)

