* setf.scm: New file. Adds the new forms `setf!' and `setter'
[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
349d9c1f
JB
66If you would like to receive mail when people commit changes to the
67Guile CVS repository, you can subscribe to guile-cvs@egcs.cygnus.com
68by sending a message to guile-cvs-subscribe@cygnus.com. Even better,
69you can get daily digests of these commit messages by sending a
70message to guile-cvs-digest-subscribe@egcs.cygnus.com.
71
72If you want to subscribe an e-mail address other than the one that
73appears in your From: header, say foo@bar.com, send a mail note to
74guile-cvs-subscribe-foo=bar.com@egcs.cygnus.com.
75
c11f9405 76
3c555f81
JB
77Hacking It Yourself ==================================================
78
79As distributed, Guile needs only an ANSI C compiler and a Unix system
80to compile. However, Guile's makefiles, configuration scripts, and a
81few other files are automatically generated, not written by hand. If
82you want to make changes to the system (which we encourage!) you will
83find it helpful to have the tools we use to develop Guile. They
84are the following:
85
dec4cca9 86Autoconf 2.12 --- a system for automatically generating `configure'
cf78e9e8
JB
87 scripts from templates which list the non-portable features a
88 program would like to use. Available in
89 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 90
5798fd97 91Automake 1.3 --- a system for automatically generating Makefiles that
cf78e9e8
JB
92 conform to the (rather Byzantine) GNU coding standards. The
93 nice thing is that it takes care of hairy targets like 'make
94 dist' and 'make distclean', and automatically generates
2b272b1e 95 Makefile dependencies. Automake is available in
5798fd97 96 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 97
2b272b1e
JB
98 Before using automake, you may need to copy `threads.m4' and
99 `guile.m4' from the top directory of the Guile core disty to
100 `/usr/local/share/aclocal.
101
5798fd97 102libtool 1.2 --- a system for managing the zillion hairy options needed
cf78e9e8 103 on various systems to produce shared libraries. Available in
5798fd97 104 "ftp://prep.ai.mit.edu/pub/gnu".
3c555f81 105
05264287
JB
106You are lost in a little maze of automatically generated files, all
107different.
cf78e9e8 108>
05264287 109
3c555f81 110
c484bf7f
JB
111Obtaining Guile ======================================================
112
113The latest official Guile release is available via anonymous FTP from
14725cbb 114prep.ai.mit.edu, as /pub/gnu/guile-1.3.tar.gz.
c484bf7f 115
14725cbb
JB
116Via the web, that's: ftp://prep.ai.mit.edu/pub/gnu/guile-1.3.tar.gz
117For getit, that's: prep.ai.mit.edu:/pub/gnu/guile-1.3.tar.gz
c484bf7f
JB
118
119The mailing list `guile@cygnus.com' carries discussions, questions,
120and often answers, about Guile. To subscribe, send mail to
121guile-request@cygnus.com. Of course, please send bug reports (and
14725cbb
JB
122fixes!) to bug-guile@gnu.org. Note that one address is @cygnus.com,
123and the other is at @gnu.org.
c484bf7f
JB
124
125
9518bec3
JB
126Authors And Contributors =============================================
127
01cf3840
JB
128Many people have generously contributed to Guile. However, any errors
129are the responsibility of the primary Guile maintainer, Jim Blandy.
9518bec3
JB
130
131Mikael Djurfeldt designed and implemented:
01cf3840
JB
132* the source-level debugging support (although the debugger's user
133 interface is not yet complete)
2a786759
JB
134* stack overflow detection,
135* the GDB patches to support debugging mixed Scheme/C code,
9518bec3 136* the original implementation of weak hash tables,
c5ac623b
JB
137* enhancements to the `threads' interface (based on Anthony Green's
138 work), and
2a786759
JB
139* detection of circular references during printing.
140
3a629497 141Mark Galassi contributed the Guile high-level functions (gh_*), and
01cf3840
JB
142wrote the guile-programmer and guile-user manuals. (These are in the
143process of revision.)
144
3a629497 145Anthony Green wrote the original version of `threads', the interface
01cf3840
JB
146between Guile and qt.
147
c5ac623b
JB
148Gary Houston wrote much of the Unix system call support, including the
149socket support, and did a lot of work on the error handling code.
01cf3840
JB
150
151Tom Lord librarified SCM, yielding Guile. He wrote Guile's operating
152system, Ice-9, and connected Guile to Tcl/Tk and the `rx' regular
153expression matcher.
154
318c2f6d
MD
155Aubrey Jaffer is the author of SCM upon which Guile is based. Guile
156started from SCM version 4e1 in November -94 and is still largely
157composed of the original SCM code.
01cf3840
JB
158
159George Carrette wrote SIOD, a stand-alone scheme interpreter.
160Although most of this code as been rewritten or replaced over time,
161the garbage collector from SIOD is still an important part of Guile.