* syncase.scm (guile-macro): Strip syntactic information from
[bpt/guile.git] / README
... / ...
CommitLineData
1!!! This is not a Guile release; it is a source tree retrieved via
2anonymous CVS or as a nightly snapshot at some random time after the
3Guile 1.4 release. If this were a Guile release, you would not see
4this message. !!! [fixme: zonk on release]
5
6This is a 1.7 development version of Guile, Project GNU's extension
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
17The next stable release will be version 1.8.0.
18
19Please send bug reports to bug-guile@gnu.org.
20
21Guile Documentation ==================================================
22
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.
27
28The incomplete Guile reference manual is available at
29
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
37generated by the build process).
38
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
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
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
122 "summary" and "shutup" is changed to "no", however.
123
124 When GUILE_WARN_DEPRECATED has the value "no", nothing special will
125 happen when a deprecated feature is used.
126
127 When GUILE_WARN_DEPRECATED 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_DEPRECATED has the value "detailed", a detailed
135 warning is emitted immediatly for the first use of a deprecated
136 feature.
137
138The default is `--enable-deprecated=yes'.
139
140About This Distribution ==============================================
141
142Interesting files include:
143
144- INSTALL, which contains instructions on building and installing Guile.
145- NEWS, which describes user-visible changes since the last release of Guile.
146
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
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).
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:
166
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
176
177Header files, in ${prefix}/include:
178
179 libguile.h, guile/gh.h, libguile/*.h --- for libguile.
180 guile-readline/readline.h --- for guile-readline.
181
182Support files, in ${prefix}/share/guile/<version>:
183
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.
191
192Automake macros, in ${prefix}/share/aclocal:
193
194 guile.m4
195
196Documentation in Info format, in ${prefix}/info:
197
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
206
207The Guile source tree is laid out as follows:
208
209libguile:
210 The Guile Scheme interpreter --- both the object library
211 for you to link with your programs, and the executable you can run.
212ice-9: Guile's module system, initialization code, and other infrastructure.
213guile-config:
214 Source for the guile-config script.
215qt: A cooperative threads package from the University of Washington,
216 which Guile can use. If you configure Guile with the
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.
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.
224doc: Documentation (see above).
225
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
232If you would like to receive mail when people commit changes to the
233Guile CVS repository, you can subscribe to guile-cvs@gnu.org by the
234Mailman mailing list interface at
235
236 <http://mail.gnu.org/mailman/listinfo/guile-cvs>
237
238
239Obtaining Guile ======================================================
240
241The latest official Guile release is available via anonymous FTP from
242
243ftp://ftp.gnu.org/pub/gnu/guile/guile-1.4.tar.gz
244
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.