1 | [ this is -*-Text-*- ] |
---|
2 | |
---|
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 |
---|
6 | scripts. |
---|
7 | |
---|
8 | The Lisp dialect was originally inspired by Emacs Lisp, but with the |
---|
9 | worst features removed. It also borrows many ideas from Scheme. |
---|
10 | |
---|
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 |
---|
13 | <jsh@pixelslut.com> |
---|
14 | |
---|
15 | For more details see: |
---|
16 | |
---|
17 | http://librep.sourceforge.net/ |
---|
18 | |
---|
19 | To compile this you'll need GNU make, the GNU MP library (see below) |
---|
20 | and GNU dbm installed. Basically, just do: |
---|
21 | |
---|
22 | $ ./configure |
---|
23 | $ make |
---|
24 | $ make install |
---|
25 | |
---|
26 | |
---|
27 | Notes |
---|
28 | ===== |
---|
29 | |
---|
30 | 64-bit systems |
---|
31 | -------------- |
---|
32 | |
---|
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. |
---|
37 | |
---|
38 | It should be detected automatically by the configure script, but if not |
---|
39 | there are two most likely required settings: |
---|
40 | |
---|
41 | 1. For a machine with 64-bit pointers and longs, but only 32-bit ints |
---|
42 | the following could be done: |
---|
43 | |
---|
44 | $ ./configure --with-value-type=long |
---|
45 | |
---|
46 | 2. For a machine with both int and long 32-bits, but with 64-bit |
---|
47 | pointers and long long ints, then: |
---|
48 | |
---|
49 | $ ./configure --with-value-type="long long" |
---|
50 | |
---|
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 |
---|
53 | initialises itself. |
---|
54 | |
---|
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. |
---|
58 | |
---|
59 | |
---|
60 | libgmp |
---|
61 | ------ |
---|
62 | |
---|
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) |
---|
66 | |
---|
67 | |
---|
68 | shared libraries |
---|
69 | ---------------- |
---|
70 | |
---|
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 |
---|
76 | |
---|
77 | |
---|
78 | cut-down version |
---|
79 | ---------------- |
---|
80 | |
---|
81 | The configure script accepts the following options to build restricted |
---|
82 | versions of librep. The resulting library is binary-compatible with the |
---|
83 | normal version. |
---|
84 | |
---|
85 | --without-gmp |
---|
86 | |
---|
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 |
---|
90 | |
---|
91 | --disable-continuations |
---|
92 | |
---|
93 | Don't include support for call/cc or multi-threading. This may be |
---|
94 | useful for machines with non-linear stacks (old crays?) |
---|
95 | |
---|
96 | |
---|
97 | obscure configure options |
---|
98 | ------------------------- |
---|
99 | |
---|
100 | --enable-dballoc |
---|
101 | |
---|
102 | Trace all memory allocations. Not for general use |
---|
103 | |
---|
104 | --disable-dbsyms |
---|
105 | |
---|
106 | When printing C stack backtraces, don't try to output symbolic |
---|
107 | addresses |
---|
108 | |
---|
109 | --enable-gprof |
---|
110 | |
---|
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 |
---|
114 | libraries) |
---|
115 | |
---|
116 | --with-malloc-alignment=BYTES |
---|
117 | |
---|
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 |
---|
120 | specified explicitly |
---|
121 | |
---|
122 | --with-stack-direction=DIRECTION |
---|
123 | |
---|
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) |
---|
127 | |
---|
128 | --enable-full-name-terminator=CHARACTER |
---|
129 | |
---|
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. |
---|
134 | |
---|
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: |
---|
137 | |
---|
138 | --enable-full-name-terminator=, |
---|
139 | |
---|