• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

am/H03-May-2022-2,0361,903

benchmark-suite/H03-May-2022-4,4943,555

bootstrap/H03-May-2022-1,9861,865

build-aux/H07-Mar-2020-32,45426,322

doc/H03-May-2022-154,899124,847

emacs/H03-May-2022-1,8431,741

examples/H03-May-2022-3,8542,823

gc-benchmarks/H03-May-2022-92,65784,018

gnulib-local/H07-Mar-2020-184167

guile-readline/H03-May-2022-3,8693,185

lib/H03-May-2022-66,63048,103

libguile/H03-May-2022-163,702120,801

m4/H07-Mar-2020-30,29128,228

meta/H03-May-2022-3,4192,892

module/H03-May-2022-123,41189,440

prebuilt/H03-May-2022-11,87611,156

test-suite/H03-May-2022-80,15265,374

.tarball-versionH A D07-Mar-20206 21

.versionH A D07-Mar-20206 21

ABOUT-NLSH A D22-Nov-201177.7 KiB1,1021,055

AUTHORSH A D22-Nov-201113.9 KiB373340

COPYINGH A D22-Nov-201134.3 KiB675553

COPYING.LESSERH A D22-Nov-20117.5 KiB166128

ChangeLogH A D07-Mar-20202.7 MiB75,38355,662

ChangeLog-2008H A D22-Nov-2011106.9 KiB3,3962,179

GNUmakefileH A D07-Mar-20204.5 KiB12864

GUILE-VERSIONH A D07-Mar-2020692 2316

HACKINGH A D15-Jun-20179.7 KiB258176

INSTALLH A D30-Jun-201915.4 KiB369287

LICENSEH A D22-Nov-2011128 32

Makefile.amH A D07-Mar-20173.8 KiB12873

Makefile.inH A D03-May-202283 KiB2,4242,301

NEWSH A D07-Mar-2020487.1 KiB13,0759,335

READMEH A D16-Dec-201816.9 KiB461315

THANKSH A D20-Jun-20195.1 KiB227219

acinclude.m4H A D12-Feb-202020 KiB583507

aclocal.m4H A D12-Feb-2020100 KiB2,7412,525

benchmark-guile.inH A D10-Oct-20121.3 KiB5028

check-guile.inH A D10-Oct-20121.2 KiB5230

config.h.inH A D12-Feb-202099.6 KiB3,2852,295

config.rpathH A D22-Nov-201117.9 KiB667563

configureH A D03-May-20221.5 MiB58,52046,894

configure.acH A D07-Jul-201955.2 KiB1,7671,539

gdbinitH A D22-Nov-20113.2 KiB205177

libguile.hH A D30-Oct-20174 KiB143107

maint.mkH A D07-Mar-201762.3 KiB1,6751,073

README

1This is version 2.2 of Guile, Project GNU's extension language library.
2Guile is an implementation of the Scheme programming language, packaged
3as a library that can be linked into applications to give them their own
4extension language.  Guile supports other languages as well, giving
5users of Guile-based applications a choice of languages.
6
7Please send bug reports to bug-guile@gnu.org.
8
9See the LICENSE file for the specific terms that apply to Guile.  Note
10that for any copyright year range specified as YYYY-ZZZZ in this
11package, the range specifies every single year in that closed interval.
12
13
14Additional INSTALL instructions ===========================================
15
16Generic instructions for configuring and compiling Guile can be found
17in the INSTALL file.  Guile specific information and configure options
18can be found below, including instructions for installing SLIB.
19
20Guile depends on the following external libraries.
21- libgmp
22- libiconv
23- libintl
24- libltdl
25- libunistring
26- libgc
27- libffi
28It will also use the libreadline library if it is available.
29
30There is a corresponding `--with-XXX-prefix' option for each of these
31libraries (except for libgc and libffi which use `pkg-config', see
32below) that you can use when invoking ./configure, if you have these
33libraries installed in a location other than the standard places (/usr
34and /usr/local).
35
36These options are provided by the Gnulib `havelib' module, and details
37of how they work are documented in `Searching for Libraries' in the
38Gnulib manual (http://www.gnu.org/software/gnulib/manual).  The extent
39to which they work on a given OS depends on whether that OS supports
40encoding full library path names in executables (aka `rpath').  Also
41note that using these options, and hence hardcoding full library path
42names (where that is supported), makes it impossible to later move the
43built executables and libraries to an installation location other than
44the one that was specified at build time.
45
46Another possible approach is to set CPPFLAGS and LDFLAGS on the
47configure command-line, so that they include -I options for all the
48non-standard places where you have installed header files and -L
49options for all the non-standard places where you have installed
50libraries.  This will allow configure and make to find those headers
51and libraries during the build.  E.g.:
52
53  ../configure [...] CPPFLAGS='-I/my/include' LDFLAGS='-L/my/lib'
54
55The locations found will not be hardcoded into the build executables and
56libraries, so with this approach you will probably also need to set
57LD_LIBRARY_PATH correspondingly, to allow Guile to find the necessary
58libraries again at runtime.
59
60
61Required External Packages ================================================
62
63Guile requires the following external packages:
64
65  - GNU MP, at least version 4.2
66
67    GNU MP is used for bignum arithmetic.  It is available from
68    http://gmplib.org/ .
69
70  - libltdl from GNU Libtool, at least version 1.5.6
71
72    libltdl is used for loading extensions at run-time.  It is
73    available from http://www.gnu.org/software/libtool/ .
74
75  - GNU libunistring, at least version 0.9.3
76
77    libunistring is used for Unicode string operations, such as the
78    `utf*->string' procedures.  It is available from
79    http://www.gnu.org/software/libunistring/ .
80
81  - libgc, at least version 7.2
82
83    libgc (aka. the Boehm-Demers-Weiser garbage collector) is the
84    conservative garbage collector used by Guile.  It is available
85    from http://www.hboehm.info/gc/ .
86
87  - libffi
88
89    libffi provides a "foreign function interface", used by the
90    `(system foreign)' module.  It is available from
91    http://sourceware.org/libffi/ .
92
93  - pkg-config
94
95    Guile's ./configure script uses pkg-config to discover the correct
96    compile and link options for libgc and libffi.  For this to work,
97    the `PKG_CONFIG_PATH' environment variable must be set to point to
98    the places where libgc's and libffi's `.pc' files can be found:
99
100      PKG_CONFIG_PATH=/path/to/libgc/lib/pkgconfig:/path/to/libffi/lib/pkgconfig
101
102    Alternatively, when pkg-config is not installed, you can work around
103    this by setting some variables as part of the configure
104    command-line:
105
106    - PKG_CONFIG=true
107
108    - BDW_GC_CFLAGS=<compile flags for picking up libgc headers>
109
110    - BDW_GC_LIBS=<linker flags for picking up the libgc library>
111
112    Note that because you're bypassing all pkg-config checks, you will
113    also have to specify libffi flags as well:
114
115    - LIBFFI_CFLAGS=<compile flags for picking up libffi headers>
116
117    - LIBFFI_LIBS=<linker flags for picking up the libffi library>
118
119  - texinfo
120
121    Guile uses `makeinfo' to create info documentation in the directory
122    `doc' and `install-info' (which is provided by a separate package in
123    some distributions) to install it.
124
125
126Special Instructions For Some Systems =====================================
127
128We would like Guile to build on all systems using the simple
129instructions above, but it seems that a few systems still need special
130treatment.  If you can send us fixes for these problems, we'd be
131grateful.
132
133FreeBSD 11.0:
134  For a build supporting threads, please `pkg install' the following
135    - pkgconf : provides pkg-config
136    - gmake : /usr/bin/make does not work
137    - boehm-gc-threaded : needed for threaded support
138
139  Configure as:
140
141    ./configure --with-bdw-gc=bdw-gc-threaded
142
143  Alternately if you want a Guile without threads, then install boehm-gc
144  and configure as:
145
146    ./configure --without-threads
147
148Guile specific flags Accepted by Configure =================================
149
150If you run the configure script with no arguments, it should examine
151your system and set things up appropriately.  However, there are a few
152switches specific to Guile you may find useful in some circumstances.
153
154--without-threads  ---  Build without thread support
155
156  Build a Guile executable and library that supports multi-threading.
157
158  The default is to enable threading support when your operating
159  system offsers 'POSIX threads'.  When you do not want threading, use
160  `--without-threads'.
161
162--enable-deprecated=LEVEL
163
164  Guile may contain features that are `deprecated'.  When a feature is
165  deprecated, it means that it is still there, but that there is a
166  better way of achieving the same thing, and we'd rather have you use
167  this better way.  This allows us to eventually remove the old
168  implementation and helps to keep Guile reasonably clean of historic
169  baggage.
170
171  See the file NEWS for a list of features that are currently
172  deprecated.  Each entry will also tell you what you should replace
173  your code with.
174
175  To give you some help with this process, and to encourage (OK,
176  nudge) people to switch to the newer methods, Guile can emit
177  warnings or errors when you use a deprecated feature.  There is
178  quite a range of possibilities, from being completely silent to
179  giving errors at link time.  What exactly happens is determined both
180  by the value of the `--enable-deprecated' configuration option when
181  Guile was built, and by the GUILE_WARN_DEPRECATED environment
182  variable.
183
184  It works like this:
185
186    When Guile has been configured with `--enable-deprecated=no' (or,
187    equivalently, with `--disable-deprecated') then all deprecated
188    features are omitted from Guile.  You will get "undefined
189    reference", "variable unbound" or similar errors when you try to
190    use them.
191
192    When `--enable-deprecated=LEVEL' has been specified (for LEVEL not
193    "no"), LEVEL will be used as the default value of the environment
194    variable GUILE_WARN_DEPRECATED.  A value of "yes" is changed to
195    "summary" and "shutup" is changed to "no", however.
196
197    When GUILE_WARN_DEPRECATED has the value "no", nothing special
198    will happen when a deprecated feature is used.
199
200    When GUILE_WARN_DEPRECATED has the value "summary", and a
201    deprecated feature has been used, Guile will print this message at
202    exit:
203
204      Some deprecated features have been used.  Set the environment
205      variable GUILE_WARN_DEPRECATED to "detailed" and rerun the
206      program to get more information.  Set it to "no" to suppress
207      this message.
208
209    When GUILE_WARN_DEPRECATED has the value "detailed", a detailed
210    warning is emitted immediatly for the first use of a deprecated
211    feature.
212
213  The default is `--enable-deprecated=yes'.
214
215  In addition to setting GUILE_WARN_DEPRECATED in the environment, you
216  can also use (debug-enable 'warn-deprecated) and (debug-disable
217  'warn-deprecated) to enable and disable the detailed messaged at run
218  time.
219
220  Additionally, if your toolchain is new enough, you will receive
221  warnings at link time if you have a Guile extension that uses
222  deprecated functions provided by Guile.
223
224--disable-shared  ---  Do not build shared libraries.
225--disable-static  ---  Do not build static libraries.
226
227  Normally, both static and shared libraries will be built if your
228  system supports them.
229
230--enable-debug-freelist  ---  Enable freelist debugging.
231
232  This enables a debugging version of scm_cell and scm_double_cell,
233  and also registers an extra primitive, the setter
234  `gc-set-debug-check-freelist!'.
235
236  Configure with the --enable-debug-freelist option to enable the
237  gc-set-debug-check-freelist! primitive, and then use:
238
239  (gc-set-debug-check-freelist! #t)  # turn on checking of the freelist
240  (gc-set-debug-check-freelist! #f)  # turn off checking
241
242  Checking of the freelist forces a traversal of the freelist and a
243  garbage collection before each allocation of a cell.  This can slow
244  down the interpreter dramatically, so the setter should be used to
245  turn on this extra processing only when necessary.
246
247--enable-debug-malloc  ---  Enable malloc debugging.
248
249  Include code for debugging of calls to scm_malloc, scm_realloc, etc.
250
251  It records the number of allocated objects of each kind.  This is
252  useful when searching for memory leaks.
253
254  A Guile compiled with this option provides the primitive
255  `malloc-stats' which returns an alist with pairs of kind and the
256  number of objects of that kind.
257
258--enable-guile-debug  ---  Include internal debugging functions
259--disable-posix       ---  omit posix interfaces
260--disable-networking  ---  omit networking interfaces
261--disable-regex       ---  omit regular expression interfaces
262
263
264Cross building Guile  =====================================================
265
266As of Guile 2.2.x, the build process produces a library, libguile-2.2,
267along with Guile "object files" containing bytecode to be interpreted by
268Guile's virtual machine.  The bytecode format depends on the endianness
269and word size of the host CPU.
270
271Thus, when cross building Guile, you first need to configure, build and
272install it for your build host.
273
274Then, you may configure Guile for cross building:
275
276    ./configure --host=i686-pc-cygwin --disable-shared
277
278A C compiler for the build system is required.  If that doesn't suit it
279can be specified with the CC_FOR_BUILD variable in the usual way, for
280instance:
281
282    ./configure --host=m68k-unknown-linux-gnu CC_FOR_BUILD=/my/local/gcc
283
284Guile for the build system can be specified similarly with the
285GUILE_FOR_BUILD variable, which defaults to whatever `guile' executable
286is found in $PATH.  It must have the exact same version has the Guile
287that you intend to cross-build.
288
289
290Using Guile Without Installing It =========================================
291
292The "meta/" subdirectory of the Guile sources contains a script called
293"guile" that can be used to run the Guile that has just been built. Note
294that this is not the same "guile" as the one that is installed; this
295"guile" is a wrapper script that sets up the environment appropriately,
296then invokes the Guile binary.
297
298You may also build external packages against an uninstalled Guile build
299tree. The "uninstalled-env" script in the "meta/" subdirectory will set
300up an environment with a path including "meta/", a modified dynamic
301linker path, a modified PKG_CONFIG_PATH, etc.
302
303For example, you can enter this environment via invoking
304
305    meta/uninstalled-env bash
306
307Within that shell, other packages should be able to build against
308uninstalled Guile.
309
310
311Installing SLIB ===========================================================
312
313In order to use SLIB from Guile you basically only need to put the
314`slib' directory _in_ one of the directories on Guile's load path.
315
316The standard installation is:
317
318  1. Obtain slib from http://www-swiss.ai.mit.edu/~jaffer/SLIB.html
319
320  2. Put it in Guile's data directory, that is the directory printed when
321     you type
322
323       guile-config info pkgdatadir
324
325     at the shell prompt.  This is normally `/usr/local/share/guile', so the
326     directory will normally have full path `/usr/local/share/guile/slib'.
327
328  3. Start guile as a user with write access to the data directory and type
329
330       (use-modules (ice-9 slib))
331
332     at the Guile prompt.  This will generate the slibcat catalog next to
333     the slib directory.
334
335SLIB's `require' is provided by the Guile module (ice-9 slib).
336
337Example:
338
339  (use-modules (ice-9 slib))
340  (require 'primes)
341  (prime? 7)
342
343
344Guile Documentation ==================================================
345
346The Guile Reference Manual (guile.info) is the primary documentation for
347Guile.  A copy of the R5RS Scheme specification is included too
348(r5rs.info).
349
350Info format versions of this documentation are installed as part of
351the normal build process.  The texinfo sources are under the doc
352directory, and other formats like Postscript, PDF, DVI or HTML can be
353generated from them with Tex and Texinfo tools.
354
355The doc directory also includes an example-smob subdirectory which has
356the example code from the "Defining New Types (Smobs)" chapter of the
357reference manual.
358
359The Guile WWW page is at
360
361  http://www.gnu.org/software/guile/guile.html
362
363It contains a link to the Guile FAQ.
364
365About This Distribution ==============================================
366
367Interesting files include:
368
369- LICENSE, which contains the exact terms of the Guile license.
370- COPYING.LESSER, which contains the terms of the GNU Lesser General Public License.
371- COPYING, which contains the terms of the GNU General Public License.
372- INSTALL, which contains general instructions for building/installing Guile.
373- NEWS, which describes user-visible changes since the last release of Guile.
374
375Files are usually installed according to the prefix specified to
376configure, /usr/local by default.  Building and installing gives you:
377
378Executables, in ${prefix}/bin:
379
380 guile --- a stand-alone interpreter for Guile.  With no arguments, this
381 	is a simple interactive Scheme interpreter.  It can also be used
382 	as an interpreter for script files; see the NEWS file for details.
383 guile-config --- a Guile script which provides the information necessary
384 	to link your programs against the Guile library.
385 guile-snarf --- a script to parse declarations in your C code for
386 	Scheme-visible C functions, Scheme objects to be used by C code,
387 	etc.
388
389Libraries, in ${prefix}/lib.  Depending on the platform and options
390        given to configure, you may get shared libraries in addition
391	to or instead of these static libraries:
392
393 libguile.a --- an object library containing the Guile interpreter,
394 	You can use Guile in your own programs by linking against this.
395 libguilereadline.a --- an object library containing glue code for the
396        GNU readline library.
397
398 libguile-srfi-*.a --- various SRFI support libraries
399
400Header files, in ${prefix}/include:
401
402 libguile.h, guile/gh.h, libguile/*.h --- for libguile.
403 guile-readline/readline.h --- for guile-readline.
404
405Support files, in ${prefix}/share/guile/<version>:
406
407 ice-9/* --- run-time support for Guile: the module system,
408 	read-eval-print loop, some R4RS code and other infrastructure.
409 oop/* --- the Guile Object-Oriented Programming System (GOOPS)
410 scripts/* --- executable modules, i.e., scheme programs that can be both
411 	called as an executable from the shell, and loaded and used as a
412 	module from scheme code.  See scripts/README for more info.
413 srfi/* --- SRFI support modules.  See srfi/README for more info.
414
415Automake macros, in ${prefix}/share/aclocal:
416
417 guile.m4
418
419Documentation in Info format, in ${prefix}/info:
420
421 guile --- Guile reference manual.
422
423 GOOPS --- GOOPS reference manual.
424
425 r5rs --- Revised(5) Report on the Algorithmic Language Scheme.
426
427
428The Guile source tree is laid out as follows:
429
430libguile:
431	The Guile Scheme interpreter --- both the object library
432	for you to link with your programs, and the executable you can run.
433module: Scheme libraries included with Guile.
434guile-readline:
435        The glue code for using GNU readline with Guile.  This
436        will be build when configure can find a recent enough readline
437        library on your system.
438doc:	Documentation (see above).
439
440Git Repository Access ================================================
441
442Guile's source code is stored in a Git repository at Savannah.  Anyone
443can access it using `git-clone' from one of the following URLs:
444
445  git://git.sv.gnu.org/guile.git
446  http://git.sv.gnu.org/r/guile.git
447
448Developers with a Savannah SSH account can also access it from:
449
450  ssh://git.sv.gnu.org/srv/git/guile.git
451
452The repository can also be browsed on-line at the following address:
453
454  http://git.sv.gnu.org/gitweb/?p=guile.git
455
456For more information on Git, please see:
457
458  http://git.or.cz/
459
460Please send problem reports to <bug-guile@gnu.org>.
461