| 1 | This is release 1.3 of Guile, a portable, embeddable Scheme |
| 2 | implementation written in C. Guile provides a machine independent |
| 3 | execution platform that can be linked in as a library when building |
| 4 | extensible programs. |
| 5 | |
| 6 | Please send bug reports to bug-guile@gnu.org. |
| 7 | |
| 8 | About This Distribution ============================================== |
| 9 | |
| 10 | Building and installing this distribution gives you: |
| 11 | guile --- a stand-alone interpreter for Guile, usually installed in |
| 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. |
| 15 | guile-config --- a Guile script which provides the information necessary |
| 16 | to link your programs against the Guile library. |
| 17 | guile-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. |
| 19 | libguile.a --- an object library containing the Guile interpreter, |
| 20 | usually installed in /usr/local/lib. You can use Guile in |
| 21 | your own programs by linking against this. |
| 22 | libqthreads.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. |
| 25 | <libguile.h>, <guile/gh.h>, <libguile/*.h> --- header files for |
| 26 | libguile.a, usually installed in /usr/local/include. |
| 27 | ice-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>. |
| 31 | data-rep.info --- An essay on how to write C code that works with |
| 32 | Guile Scheme values. |
| 33 | |
| 34 | Interesting 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 | |
| 40 | The Guile source tree is laid out as follows: |
| 41 | |
| 42 | libguile: |
| 43 | The Guile Scheme interpreter --- both the object library |
| 44 | for you to link with your programs, and the executable you can run. |
| 45 | ice-9: Guile's module system, initialization code, and other infrastructure. |
| 46 | guile-config: |
| 47 | Source for the guile-config script. |
| 48 | qt: A cooperative threads package from the University of Washington, |
| 49 | which Guile can use. If you configure Guile with the |
| 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. |
| 53 | doc: Some preliminary documentation for Guile. The real Guile |
| 54 | manual is incomplete, and is currently being revised. |
| 55 | doc/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. |
| 58 | |
| 59 | |
| 60 | Anonymous CVS Access and FTP snapshots =============================== |
| 61 | |
| 62 | We make the developers' working Guile sources available via anonymous |
| 63 | CVS, and by nightly snapshots, accessible via FTP. See the files |
| 64 | `ANON-CVS' and `SNAPSHOTS' for details. |
| 65 | |
| 66 | |
| 67 | Hacking It Yourself ================================================== |
| 68 | |
| 69 | As distributed, Guile needs only an ANSI C compiler and a Unix system |
| 70 | to compile. However, Guile's makefiles, configuration scripts, and a |
| 71 | few other files are automatically generated, not written by hand. If |
| 72 | you want to make changes to the system (which we encourage!) you will |
| 73 | find it helpful to have the tools we use to develop Guile. They |
| 74 | are the following: |
| 75 | |
| 76 | Autoconf 2.12 --- a system for automatically generating `configure' |
| 77 | scripts from templates which list the non-portable features a |
| 78 | program would like to use. Available in |
| 79 | "ftp://prep.ai.mit.edu/pub/gnu". |
| 80 | |
| 81 | Automake 1.3 --- a system for automatically generating Makefiles that |
| 82 | conform to the (rather Byzantine) GNU coding standards. The |
| 83 | nice thing is that it takes care of hairy targets like 'make |
| 84 | dist' and 'make distclean', and automatically generates |
| 85 | Makefile dependencies. Automake is available in |
| 86 | "ftp://prep.ai.mit.edu/pub/gnu". |
| 87 | |
| 88 | Before using automake, you may need to copy `threads.m4' and |
| 89 | `guile.m4' from the top directory of the Guile core disty to |
| 90 | `/usr/local/share/aclocal. |
| 91 | |
| 92 | libtool 1.2 --- a system for managing the zillion hairy options needed |
| 93 | on various systems to produce shared libraries. Available in |
| 94 | "ftp://prep.ai.mit.edu/pub/gnu". |
| 95 | |
| 96 | You are lost in a little maze of automatically generated files, all |
| 97 | different. |
| 98 | > |
| 99 | |
| 100 | |
| 101 | Obtaining Guile ====================================================== |
| 102 | |
| 103 | The latest official Guile release is available via anonymous FTP from |
| 104 | prep.ai.mit.edu, as /pub/gnu/guile-1.3.tar.gz. |
| 105 | |
| 106 | Via the web, that's: ftp://prep.ai.mit.edu/pub/gnu/guile-1.3.tar.gz |
| 107 | For getit, that's: prep.ai.mit.edu:/pub/gnu/guile-1.3.tar.gz |
| 108 | |
| 109 | The mailing list `guile@cygnus.com' carries discussions, questions, |
| 110 | and often answers, about Guile. To subscribe, send mail to |
| 111 | guile-request@cygnus.com. Of course, please send bug reports (and |
| 112 | fixes!) to bug-guile@gnu.org. Note that one address is @cygnus.com, |
| 113 | and the other is at @gnu.org. |
| 114 | |
| 115 | |
| 116 | Authors And Contributors ============================================= |
| 117 | |
| 118 | Many people have generously contributed to Guile. However, any errors |
| 119 | are the responsibility of the primary Guile maintainer, Jim Blandy. |
| 120 | |
| 121 | Mikael Djurfeldt designed and implemented: |
| 122 | * the source-level debugging support (although the debugger's user |
| 123 | interface is not yet complete) |
| 124 | * stack overflow detection, |
| 125 | * the GDB patches to support debugging mixed Scheme/C code, |
| 126 | * the original implementation of weak hash tables, |
| 127 | * enhancements to the `threads' interface (based on Anthony Green's |
| 128 | work), and |
| 129 | * detection of circular references during printing. |
| 130 | |
| 131 | Mark Galassi contributed the Guile high-level functions (gh_*), and |
| 132 | wrote the guile-programmer and guile-user manuals. (These are in the |
| 133 | process of revision.) |
| 134 | |
| 135 | Anthony Green wrote the original version of `threads', the interface |
| 136 | between Guile and qt. |
| 137 | |
| 138 | Gary Houston wrote much of the Unix system call support, including the |
| 139 | socket support, and did a lot of work on the error handling code. |
| 140 | |
| 141 | Tom Lord librarified SCM, yielding Guile. He wrote Guile's operating |
| 142 | system, Ice-9, and connected Guile to Tcl/Tk and the `rx' regular |
| 143 | expression matcher. |
| 144 | |
| 145 | Aubrey Jaffer is the author of SCM upon which Guile is based. Guile |
| 146 | started from SCM version 4e1 in November -94 and is still largely |
| 147 | composed of the original SCM code. |
| 148 | |
| 149 | George Carrette wrote SIOD, a stand-alone scheme interpreter. |
| 150 | Although most of this code as been rewritten or replaced over time, |
| 151 | the garbage collector from SIOD is still an important part of Guile. |