*** empty log message ***
[bpt/guile.git] / README
CommitLineData
14725cbb 1This is release 1.3 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
e1b6c710 6Please send bug reports to bug-guile@gnu.org.
86f40248 7
cf78e9e8
JB
8About This Distribution ==============================================
9
49becc4d
JB
10Building and installing this distribution gives you:
11guile --- a stand-alone interpreter for Guile, usually installed in
cf78e9e8
JB
12 /usr/local/bin. With no arguments, this is a simple
13 interactive Scheme interpreter. It can also be used as an
14 interpreter for script files; see the NEWS file for details.
17f8d40c
JB
15guile-config --- a Guile script which provides the information necessary
16 to link your programs against the Guile library.
14725cbb
JB
17guile-snarf --- a script to parse declarations in your C code for
18 Scheme-visible C functions, Scheme objects to be used by C code, etc.
49becc4d 19libguile.a --- an object library containing the Guile interpreter,
cf78e9e8
JB
20 usually installed in /usr/local/lib. You can use Guile in
21 your own programs by linking against this.
17f8d40c
JB
22libqthreads.a --- an object library containing the QuickThreads
23 primitives. If you enabled thread support when you configured
24 Guile, you will need to link your code against this too.
14725cbb
JB
25<libguile.h>, <guile/gh.h>, <libguile/*.h> --- header files for
26 libguile.a, usually installed in /usr/local/include.
9a8b5764
TP
27ice-9, ice-9/*.scm --- run-time support for Guile: the module
28 system, read-eval-print loop, some R4RS code and other
29 infrastructure. Usually installed in
30 /usr/local/share/guile/<version>.
14725cbb
JB
31data-rep.info --- An essay on how to write C code that works with
32 Guile Scheme values.
0196b30a 33
5c54da76
JB
34Interesting files include:
35- INSTALL, which contains instructions on building and installing Guile.
36- NEWS, which describes user-visible changes since the last release of Guile.
37- COPYING, which describes the terms under which you may redistribute
38 Guile, and explains that there is no warranty.
39
40The Guile source tree is laid out as follows:
41
1325feea 42libguile:
cf78e9e8
JB
43 The Guile Scheme interpreter --- both the object library
44 for you to link with your programs, and the executable you can run.
1325feea 45ice-9: Guile's module system, initialization code, and other infrastructure.
17f8d40c
JB
46guile-config:
47 Source for the guile-config script.
9a3c1149 48qt: A cooperative threads package from the University of Washington,
cf78e9e8 49 which Guile can use. If you configure Guile with the
3a629497
JB
50 --with-threads flag, you will need to link against the -lqt
51 library, found in this directory. Qt is under a separate
52 copyright; see `qt/README' for more details.
17f8d40c 53doc: Some preliminary documentation for Guile. The real Guile
14725cbb 54 manual is incomplete, and is currently being revised.
e84f2bee
JB
55doc/example-smob: Sample code, discussed in the preliminary
56 documentation above, for a program that extends Guile with a
57 new data type, and functions that operate on it.
1dfe003f 58
4c8980a2 59
c11f9405
JB
60Anonymous CVS Access and FTP snapshots ===============================
61
62We make the developers' working Guile sources available via anonymous
63CVS, and by nightly snapshots, accessible via FTP. See the files
64`ANON-CVS' and `SNAPSHOTS' for details.
65
66
3c555f81
JB
67Hacking It Yourself ==================================================
68
69As distributed, Guile needs only an ANSI C compiler and a Unix system
70to compile. However, Guile's makefiles, configuration scripts, and a
71few other files are automatically generated, not written by hand. If
72you want to make changes to the system (which we encourage!) you will
73find it helpful to have the tools we use to develop Guile. They
74are the following:
75
dec4cca9 76Autoconf 2.12 --- a system for automatically generating `configure'
cf78e9e8
JB
77 scripts from templates which list the non-portable features a
78 program would like to use. Available in
79 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 80
5798fd97 81Automake 1.3 --- a system for automatically generating Makefiles that
cf78e9e8
JB
82 conform to the (rather Byzantine) GNU coding standards. The
83 nice thing is that it takes care of hairy targets like 'make
84 dist' and 'make distclean', and automatically generates
2b272b1e 85 Makefile dependencies. Automake is available in
5798fd97 86 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 87
2b272b1e
JB
88 Before using automake, you may need to copy `threads.m4' and
89 `guile.m4' from the top directory of the Guile core disty to
90 `/usr/local/share/aclocal.
91
5798fd97 92libtool 1.2 --- a system for managing the zillion hairy options needed
cf78e9e8 93 on various systems to produce shared libraries. Available in
5798fd97 94 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 95
05264287
JB
96You are lost in a little maze of automatically generated files, all
97different.
cf78e9e8 98>
05264287 99
3c555f81 100
c484bf7f
JB
101Obtaining Guile ======================================================
102
103The latest official Guile release is available via anonymous FTP from
14725cbb 104prep.ai.mit.edu, as /pub/gnu/guile-1.3.tar.gz.
c484bf7f 105
14725cbb
JB
106Via the web, that's: ftp://prep.ai.mit.edu/pub/gnu/guile-1.3.tar.gz
107For getit, that's: prep.ai.mit.edu:/pub/gnu/guile-1.3.tar.gz
c484bf7f
JB
108
109The mailing list `guile@cygnus.com' carries discussions, questions,
110and often answers, about Guile. To subscribe, send mail to
111guile-request@cygnus.com. Of course, please send bug reports (and
14725cbb
JB
112fixes!) to bug-guile@gnu.org. Note that one address is @cygnus.com,
113and the other is at @gnu.org.
c484bf7f
JB
114
115
9518bec3
JB
116Authors And Contributors =============================================
117
01cf3840
JB
118Many people have generously contributed to Guile. However, any errors
119are the responsibility of the primary Guile maintainer, Jim Blandy.
9518bec3
JB
120
121Mikael Djurfeldt designed and implemented:
01cf3840
JB
122* the source-level debugging support (although the debugger's user
123 interface is not yet complete)
2a786759
JB
124* stack overflow detection,
125* the GDB patches to support debugging mixed Scheme/C code,
9518bec3 126* the original implementation of weak hash tables,
c5ac623b
JB
127* enhancements to the `threads' interface (based on Anthony Green's
128 work), and
2a786759
JB
129* detection of circular references during printing.
130
3a629497 131Mark Galassi contributed the Guile high-level functions (gh_*), and
01cf3840
JB
132wrote the guile-programmer and guile-user manuals. (These are in the
133process of revision.)
134
3a629497 135Anthony Green wrote the original version of `threads', the interface
01cf3840
JB
136between Guile and qt.
137
c5ac623b
JB
138Gary Houston wrote much of the Unix system call support, including the
139socket support, and did a lot of work on the error handling code.
01cf3840
JB
140
141Tom Lord librarified SCM, yielding Guile. He wrote Guile's operating
142system, Ice-9, and connected Guile to Tcl/Tk and the `rx' regular
143expression matcher.
144
318c2f6d
MD
145Aubrey Jaffer is the author of SCM upon which Guile is based. Guile
146started from SCM version 4e1 in November -94 and is still largely
147composed of the original SCM code.
01cf3840
JB
148
149George Carrette wrote SIOD, a stand-alone scheme interpreter.
150Although most of this code as been rewritten or replaced over time,
151the garbage collector from SIOD is still an important part of Guile.