HACKING, README, ANON-CVS: updates.
[bpt/guile.git] / README
CommitLineData
04873705 1!!! This is not a Guile release; it is a source tree retrieved via
c299f186 2anonymous CVS or as a nightly snapshot at some random time after the
04873705
TTN
3Guile 1.4 release. If this were a Guile release, you would not see
4this message. !!! [fixme: zonk on release]
c299f186 5
ab4cd34b 6This is a 1.7 development version of Guile, Project GNU's extension
f2a75d81
RB
7language library. Guile is an interpreter for Scheme, packaged as a
8library that you can link into your applications to give them their
9own scripting language. Guile will eventually support other languages
10as well, giving users of Guile-based applications a choice of
11languages.
12
13Guile versions with an odd middle number, i.e. 1.5.* are unstable
14development versions. Even middle numbers indicate stable versions.
15This has been the case since the 1.3.* series.
16
ab4cd34b 17The next stable release will be version 1.8.0.
7fcc90c4 18
e1b6c710 19Please send bug reports to bug-guile@gnu.org.
86f40248 20
394a535e
MD
21Guile Documentation ==================================================
22
ae8de16e
GH
23The doc directory contains a few articles on specific topics and some
24examples, including data-rep.texi which describes the internal
25representation of data types in Guile. The example-smob directory
26contains example source code for the "Defining New Types (Smobs)" chapter.
394a535e 27
ae8de16e 28The incomplete Guile reference manual is available at
ae8de16e 29
b5074b23
MD
30 ftp://ftp.red-bean.com/pub/guile/snapshots/guile-doc-snap.tar.gz
31
32Neil Jerram is working on the new reference manual, which will be
33distributed with guile-core. The new manual will be synchronized with
34the docstrings in the sources. Until then, please be aware that the
35docstrings are likely to be more up-to-date than the old reference
36manual (use `(help)' or see libguile/guile-procedures.txt which is
ae8de16e 37generated by the build process).
394a535e 38
b5074b23
MD
39The Guile WWW page is at
40
41 http://www.gnu.org/software/guile/guile.html
42
43It contains a link to the Guile FAQ.
44
677ac809
MV
45Guile License ==================================================
46
47The license of Guile consists of the GNU GPL plus a special statement
48giving blanket permission to link with non-free software. This is the
49license statement as found in any individual file that it applies to:
50
51 This program is free software; you can redistribute it and/or modify
52 it under the terms of the GNU General Public License as published by
53 the Free Software Foundation; either version 2, or (at your option)
54 any later version.
55
56 This program is distributed in the hope that it will be useful,
57 but WITHOUT ANY WARRANTY; without even the implied warranty of
58 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59 GNU General Public License for more details.
60
61 You should have received a copy of the GNU General Public License
62 along with this software; see the file COPYING. If not, write to
63 the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
64 Boston, MA 02111-1307 USA
65
66 As a special exception, the Free Software Foundation gives permission
67 for additional uses of the text contained in its release of GUILE.
68
69 The exception is that, if you link the GUILE library with other files
70 to produce an executable, this does not by itself cause the
71 resulting executable to be covered by the GNU General Public License.
72 Your use of that executable is in no way restricted on account of
73 linking the GUILE library code into it.
74
75 This exception does not however invalidate any other reasons why
76 the executable file might be covered by the GNU General Public License.
77
78 This exception applies only to the code released by the
79 Free Software Foundation under the name GUILE. If you copy
80 code from other Free Software Foundation releases into a copy of
81 GUILE, as the General Public License permits, the exception does
82 not apply to the code that you add in this way. To avoid misleading
83 anyone as to the status of such modified files, you must delete
84 this exception notice from them.
85
86 If you write modifications of your own for GUILE, it is your choice
87 whether to permit this exception to apply to your modifications.
88 If you do not wish that, delete this exception notice.
89
6b3ccfcc
MV
90Handling of Deprecated Features ======================================
91
92Guile may contain features that are `deprecated'. When a feature is
93deprecated, it means that it is still there and fully functional, but
94that there is a better way of achieving the same thing, and we'd
95rather have you use this better way. This allows us to eventually
96remove the old implementation and helps to keep Guile reasonably clean
97of historic baggage.
98
99See the file NEWS for a list of features that are currently
100deprecated. Each entry will also tell you what you should replace
101your code with.
102
103To give you some help with this process, and to encourage (OK, nudge)
104people to switch to the newer methods, Guile can emit warnings or
105errors when you use a deprecated feature. There is quite a range of
106possibilities, from being completely silent to giving errors at link
107time. What exactly happens is determined both by the value of the
108`--enable-deprecated' configuration option when Guile was built, and
109by the GUILE_WARN_DEPRECATED environment variable.
110
111It works like this:
112
113 When Guile has been configured with `--enable-deprecated=no' (or,
114 equivalently, with `--disable-deprecated') then all deprecated
115 features are omitted from Guile. You will get "undefined
116 reference", "variable unbound" or similar errors when you try to use
117 them.
118
119 When `--enable-deprecated=LEVEL' has been specified (for LEVEL not
120 "no"), LEVEL will be used as the default value of the environment
121 variable GUILE_WARN_DEPRECATED. A value of "yes" is changed to
c10ecc4c 122 "summary" and "shutup" is changed to "no", however.
6b3ccfcc
MV
123
124 When GUILE_WARN_DEPRECATION has the value "no", nothing special will
125 happen when a deprecated feature is used.
126
127 When GUILE_WARN_DEPRECATION has the value "summary", and a deprecated
128 feature has been used, Guile will print this message at exit:
129
130 Some deprecated features have been used. Set the environment
131 variable GUILE_WARN_DEPRECATED to "detailed" and rerun the program
132 to get more information. Set it to "no" to suppress this message.
133
134 When GUILE_WARN_DEPRECATION has the value "detailed", a detailed
135 warning is emitted immediatly for the first use of a deprecated
136 feature.
137
c10ecc4c 138The default is `--enable-deprecated=yes'.
6b3ccfcc 139
cf78e9e8
JB
140About This Distribution ==============================================
141
f89a27fa 142Interesting files include:
ae8de16e 143
f89a27fa
JB
144- INSTALL, which contains instructions on building and installing Guile.
145- NEWS, which describes user-visible changes since the last release of Guile.
f89a27fa 146
ae8de16e
GH
147Files are usually installed according to the prefix specified to
148configure, /usr/local by default. Building and installing gives you:
149
150Executables, in ${prefix}/bin:
151
04873705
TTN
152 guile --- a stand-alone interpreter for Guile. With no arguments, this
153 is a simple interactive Scheme interpreter. It can also be used
154 as an interpreter for script files; see the NEWS file for details.
155 guile-config --- a Guile script which provides the information necessary
156 to link your programs against the Guile library.
157 guile-snarf --- a script to parse declarations in your C code for
158 Scheme-visible C functions, Scheme objects to be used by C code,
159 etc.
160 guile-tools --- a wrapper to invoke the executable modules in
161 subdirectory `scripts' (also installed).
ae8de16e
GH
162
163Libraries, in ${prefix}/lib. Depending on the platform and options
164 given to configure, you may get shared libraries in addition
165 to or instead of these static libraries:
0a7fcdbc 166
04873705
TTN
167 libguile.a --- an object library containing the Guile interpreter,
168 You can use Guile in your own programs by linking against this.
169 libqthreads.a --- an object library containing the QuickThreads
170 primitives. If you enabled thread support when you configured
171 Guile, you will need to link your code against this too.
172 libguilereadline.a --- an object library containing glue code for the
173 GNU readline library. See NEWS for instructions on how to enable
174 readline for your personal use.
175 libguile-srfi-*.a --- various SRFI support libraries
ae8de16e
GH
176
177Header files, in ${prefix}/include:
178
04873705
TTN
179 libguile.h, guile/gh.h, libguile/*.h --- for libguile.
180 guile-readline/readline.h --- for guile-readline.
ae8de16e
GH
181
182Support files, in ${prefix}/share/guile/<version>:
183
04873705
TTN
184 ice-9/* --- run-time support for Guile: the module system,
185 read-eval-print loop, some R4RS code and other infrastructure.
186 oop/* --- the Guile Object-Oriented Programming System (GOOPS)
187 scripts/* --- executable modules, i.e., scheme programs that can be both
188 called as an executable from the shell, and loaded and used as a
189 module from scheme code. See scripts/README for more info.
190 srfi/* --- SRFI support modules. See srfi/README for more info.
ae8de16e
GH
191
192Automake macros, in ${prefix}/share/aclocal:
193
04873705 194 guile.m4
ae8de16e
GH
195
196Documentation in Info format, in ${prefix}/info:
197
c08a1190
GH
198 guile --- Guile reference manual.
199
200 guile-tut --- Guile tutorial.
201
202 GOOPS --- GOOPS reference manual.
203
204 r5rs --- Revised(5) Report on the Algorithmic Language Scheme.
205
0196b30a 206
5c54da76
JB
207The Guile source tree is laid out as follows:
208
1325feea 209libguile:
cf78e9e8
JB
210 The Guile Scheme interpreter --- both the object library
211 for you to link with your programs, and the executable you can run.
1325feea 212ice-9: Guile's module system, initialization code, and other infrastructure.
17f8d40c
JB
213guile-config:
214 Source for the guile-config script.
9a3c1149 215qt: A cooperative threads package from the University of Washington,
cf78e9e8 216 which Guile can use. If you configure Guile with the
3a629497
JB
217 --with-threads flag, you will need to link against the -lqt
218 library, found in this directory. Qt is under a separate
219 copyright; see `qt/README' for more details.
621e8324
MV
220guile-readline:
221 The glue code for using GNU readline with Guile. This
222 will be build when configure can find a recent enough readline
223 library on your system.
ae8de16e 224doc: Documentation (see above).
4c8980a2 225
c11f9405
JB
226Anonymous CVS Access and FTP snapshots ===============================
227
228We make the developers' working Guile sources available via anonymous
229CVS, and by nightly snapshots, accessible via FTP. See the files
230`ANON-CVS' and `SNAPSHOTS' for details.
231
349d9c1f 232If you would like to receive mail when people commit changes to the
ee2bf8b8
MV
233Guile CVS repository, you can subscribe to guile-cvs@gnu.org by the
234Mailman mailing list interface at
349d9c1f 235
ee2bf8b8 236 <http://mail.gnu.org/mailman/listinfo/guile-cvs>
349d9c1f 237
c11f9405 238
c484bf7f
JB
239Obtaining Guile ======================================================
240
241The latest official Guile release is available via anonymous FTP from
c484bf7f 242
b5074b23 243ftp://ftp.gnu.org/pub/gnu/guile/guile-1.4.tar.gz
c484bf7f 244
ee2bf8b8
MV
245The mailing list `guile-user@gnu.org' carries discussions, questions,
246and often answers, about Guile. To subscribe, use the Mailman mailing
247list interface at <http://mail.gnu.org/mailman/listinfo/guile-user>
248Of course, please send bug reports (and fixes!) to bug-guile@gnu.org.