* boot-9.scm (iota): Renamed list-reverse! --> reverse!
[bpt/guile.git] / README
CommitLineData
c484bf7f 1This is a nightly snapshot of Guile, a portable, embeddable Scheme
9518bec3
JB
2implementation written in C. Guile provides a machine independent
3execution platform that can be linked in as a library when building
4extensible programs.
7fcc90c4 5
c484bf7f
JB
6About Snapshots ======================================================
7
8Each night, we make the current Guile sources available via anonymous
9FTP. Please keep in mind that these sources are strictly
10experimental; they will usually not be well-tested, and may not even
11compile on some systems. They may contain interfaces which will
12change. They will usually not be of sufficient quality for use by
13people not comfortable hacking the innards of Guile. Caveat!
14
15However, we're providing them anyway for several reasons. We'd like
16to encourage people to get involved in developing Guile. People
17willing to use the bleeding edge of development can get earlier access
18to new, experimental features. Patches submitted relative to recent
19snapshots will be easier for us to evaluate and install, since the
20patch's original sources will be closer to what we're working with.
21And it allows us to start testing features earlier.
22
23Nightly snapshots of the Guile development sources are available via
24anonymous FTP from ftp.red-bean.com, as /pub/guile/guile-core-snap.tar.gz.
25
26Via the web, that's: ftp://ftp.red-bean.com/pub/guile/guile-core-snap.tar.gz
27For getit, that's: ftp.red-bean.com:/pub/guile/guile-core-snap.tar.gz
28
29
9518bec3 30Please send bug reports to bug-guile@prep.ai.mit.edu.
7fcc90c4 31
cf78e9e8
JB
32About This Distribution ==============================================
33
49becc4d
JB
34Building and installing this distribution gives you:
35guile --- a stand-alone interpreter for Guile, usually installed in
cf78e9e8
JB
36 /usr/local/bin. With no arguments, this is a simple
37 interactive Scheme interpreter. It can also be used as an
38 interpreter for script files; see the NEWS file for details.
49becc4d 39libguile.a --- an object library containing the Guile interpreter,
cf78e9e8
JB
40 usually installed in /usr/local/lib. You can use Guile in
41 your own programs by linking against this.
1dfe003f
JB
42libqt.a --- an object library containing the QuickThreads primitives.
43 If you enabled thread support when you configured Guile, you
44 will need to link your code against this too.
49becc4d 45<libguile.h>, <libguile/*.h> --- header files for libguile.a, usually
cf78e9e8 46 installed in /usr/local/include.
9a8b5764
TP
47ice-9, ice-9/*.scm --- run-time support for Guile: the module
48 system, read-eval-print loop, some R4RS code and other
49 infrastructure. Usually installed in
50 /usr/local/share/guile/<version>.
0196b30a 51
5c54da76
JB
52
53Interesting files include:
54- INSTALL, which contains instructions on building and installing Guile.
55- NEWS, which describes user-visible changes since the last release of Guile.
56- COPYING, which describes the terms under which you may redistribute
57 Guile, and explains that there is no warranty.
58
59The Guile source tree is laid out as follows:
60
1325feea 61libguile:
cf78e9e8
JB
62 The Guile Scheme interpreter --- both the object library
63 for you to link with your programs, and the executable you can run.
1325feea 64ice-9: Guile's module system, initialization code, and other infrastructure.
0682f7ab 65
cf78e9e8
JB
66qt: A cooperative threads package from Washington University,
67 which Guile can use. If you configure Guile with the
3a629497
JB
68 --with-threads flag, you will need to link against the -lqt
69 library, found in this directory. Qt is under a separate
70 copyright; see `qt/README' for more details.
ee81f9ca 71
1dfe003f
JB
72(The present release doesn't include any documentation; the Guile
73manual is incomplete, and is currently being revised.)
74
4c8980a2 75
3c555f81
JB
76Hacking It Yourself ==================================================
77
78As distributed, Guile needs only an ANSI C compiler and a Unix system
79to compile. However, Guile's makefiles, configuration scripts, and a
80few other files are automatically generated, not written by hand. If
81you want to make changes to the system (which we encourage!) you will
82find it helpful to have the tools we use to develop Guile. They
83are the following:
84
dec4cca9 85Autoconf 2.12 --- a system for automatically generating `configure'
cf78e9e8
JB
86 scripts from templates which list the non-portable features a
87 program would like to use. Available in
88 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 89
3628c737 90Automake 1.1p --- a system for automatically generating Makefiles that
cf78e9e8
JB
91 conform to the (rather Byzantine) GNU coding standards. The
92 nice thing is that it takes care of hairy targets like 'make
93 dist' and 'make distclean', and automatically generates
2b272b1e 94 Makefile dependencies. Automake is available in
cf78e9e8 95 "ftp://ftp.cygnus.com/pub/tromey".
3c555f81 96
2b272b1e
JB
97 Before using automake, you may need to copy `threads.m4' and
98 `guile.m4' from the top directory of the Guile core disty to
99 `/usr/local/share/aclocal.
100
c7bb9a97 101libtool 0.9h --- a system for managing the zillion hairy options needed
cf78e9e8
JB
102 on various systems to produce shared libraries. Available in
103 "ftp://alpha.gnu.ai.mit.edu/gnu".
3c555f81 104
05264287
JB
105You are lost in a little maze of automatically generated files, all
106different.
cf78e9e8 107>
05264287 108
3c555f81 109
c484bf7f
JB
110Obtaining Guile ======================================================
111
112The latest official Guile release is available via anonymous FTP from
113prep.ai.mit.edu, as /pub/gnu/guile-1.2.tar.gz.
114
115Via the web, that's: ftp://prep.ai.mit.edu/pub/gnu/guile-1.2.tar.gz
116For getit, that's: prep.ai.mit.edu:/pub/gnu/guile-1.2.tar.gz
117
118The mailing list `guile@cygnus.com' carries discussions, questions,
119and often answers, about Guile. To subscribe, send mail to
120guile-request@cygnus.com. Of course, please send bug reports (and
121fixes!) to bug-guile@prep.ai.mit.edu.
122
123
9518bec3
JB
124Authors And Contributors =============================================
125
01cf3840
JB
126Many people have generously contributed to Guile. However, any errors
127are the responsibility of the primary Guile maintainer, Jim Blandy.
9518bec3
JB
128
129Mikael Djurfeldt designed and implemented:
01cf3840
JB
130* the source-level debugging support (although the debugger's user
131 interface is not yet complete)
2a786759
JB
132* stack overflow detection,
133* the GDB patches to support debugging mixed Scheme/C code,
9518bec3 134* the original implementation of weak hash tables,
c5ac623b
JB
135* enhancements to the `threads' interface (based on Anthony Green's
136 work), and
2a786759
JB
137* detection of circular references during printing.
138
3a629497 139Mark Galassi contributed the Guile high-level functions (gh_*), and
01cf3840
JB
140wrote the guile-programmer and guile-user manuals. (These are in the
141process of revision.)
142
3a629497 143Anthony Green wrote the original version of `threads', the interface
01cf3840
JB
144between Guile and qt.
145
c5ac623b
JB
146Gary Houston wrote much of the Unix system call support, including the
147socket support, and did a lot of work on the error handling code.
01cf3840
JB
148
149Tom Lord librarified SCM, yielding Guile. He wrote Guile's operating
150system, Ice-9, and connected Guile to Tcl/Tk and the `rx' regular
151expression matcher.
152
153Aubrey Jaffer seriously tuned performance and added features. He
154designed many hairy but beautiful parts of the tag system and
155evaluator.
156
157George Carrette wrote SIOD, a stand-alone scheme interpreter.
158Although most of this code as been rewritten or replaced over time,
159the garbage collector from SIOD is still an important part of Guile.