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