Add weak-vector-length, weak-vector-ref, weak-vector-set!
[bpt/guile.git] / doc / ref / preface.texi
dissimilarity index 96%
index 90e53e9..3545836 100644 (file)
-@iftex
-@page
-@unnumbered Preface
-
-This reference manual documents Guile, GNU's Ubiquitous Intelligent
-Language for Extensions.  It describes how to use Guile in many useful
-and interesting ways.
-
-This is edition 1.0 of the reference manual, and corresponds to Guile
-version @value{VERSION}.
-@end iftex
-
-
-@iftex
-@section The Guile License
-@end iftex
-
-@ifnottex
-@node Guile License
-@chapter The Guile License
-@end ifnottex
-
-The license of Guile consists of the GNU GPL plus a special statement
-giving blanket permission to link with non-free software.  This is the
-license statement as found in any individual file that it applies to:
-
-@quotation
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this software; see the file COPYING.  If not, write to the Free
-Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA
-
-As a special exception, the Free Software Foundation gives permission
-for additional uses of the text contained in its release of GUILE.
-
-The exception is that, if you link the GUILE library with other files to
-produce an executable, this does not by itself cause the resulting
-executable to be covered by the GNU General Public License.  Your use of
-that executable is in no way restricted on account of linking the GUILE
-library code into it.
-
-This exception does not however invalidate any other reasons why the
-executable file might be covered by the GNU General Public License.
-
-This exception applies only to the code released by the Free Software
-Foundation under the name GUILE.  If you copy code from other Free
-Software Foundation releases into a copy of GUILE, as the General Public
-License permits, the exception does not apply to the code that you add
-in this way.  To avoid misleading anyone as to the status of such
-modified files, you must delete this exception notice from them.
-
-If you write modifications of your own for GUILE, it is your choice
-whether to permit this exception to apply to your modifications.  If you
-do not wish that, delete this exception notice.
-@end quotation
-
-
-@iftex
-@section Layout of this Manual
-@end iftex
-
-@ifnottex
-@node Manual Layout
-@chapter Layout of this Manual
-@end ifnottex
-
-This manual is divided into five parts.
-
-@strong{Part I: Introduction to Guile} provides an overview of what
-Guile is and how you can use it.  A whirlwind tour shows how Guile can
-be used interactively and as a script interpreter, how to link Guile
-into your own applications, and how to write modules of interpreted and
-compiled code for use with Guile.  All of the ideas introduced here are
-documented in full by the later parts of the manual.
-
-@strong{Part II: Guile Scheme} documents the core Scheme language and
-features that Guile implements.  Although the basis for this is the
-Scheme language described in R5RS, this part of the manual does not
-assume any prior familiarity with R5RS in particular, or with Scheme in
-general.  Basic Scheme concepts, standard aspects of the Scheme language
-and Guile extensions on top of R5RS are all documented from scratch, and
-organized by functionality rather than by the defining standards.
-
-@strong{Part III: Guile Modules} describes some important modules,
-distributed as part of the Guile distribution, that extend the
-functionality provided by the Guile Scheme core, most notably:
-
-@itemize @bullet
-@item
-the POSIX module, which provides Scheme level procedures for system and
-network programming, conforming to the POSIX standard
-
-@item
-the SLIB module, which makes Aubrey Jaffer's portable Scheme library
-available for use in Guile.
-@end itemize
-
-@strong{Part IV: Guile Scripting} documents the use of Guile as a script
-interpreter, and illustrates this with a series of examples.
-
-@strong{Part V: Extending Applications Using Guile} explains the options
-available for using Guile as a application extension language.  At the
-simpler end of the scale, an application might use Guile to define some
-application-specific primitives in C and then load an application Scheme
-file.  In this case most of the application code is written on the
-Scheme level, and uses the application-specific primitives as an
-extension to standard Scheme.  At the other end of the scale, an
-application might be predominantly written in C --- with its main
-control loop implemented in C --- but make occasional forays into Scheme
-to, say, read configuration data or run user-defined customization code.
-This part of the manual covers the complete range of application
-extension options.
-
-Finally, the appendices explain how to obtain the latest version of
-Guile, how to install it, where to find modules to work with Guile, and
-how to use the Guile debugger.
-
-
-@iftex
-@section Manual Conventions
-@end iftex
-
-@ifnottex
-@node Manual Conventions
-@chapter Conventions used in this Manual
-@end ifnottex
-
-We use some conventions in this manual.
-
-@itemize @bullet
-
-@item
-For some procedures, notably type predicates, we use @dfn{iff} to
-mean `if and only if'.  The construct is usually something like:
-`Return @var{val} iff @var{condition}', where @var{val} is usually
-`@code{#t}' or `non-@code{#f}'.  This typically means that @var{val}
-is returned if @var{condition} holds, and that @samp{#f} is returned
-otherwise.
-@cindex iff
-
-@item
-In examples and procedure descriptions and all other places where the
-evaluation of Scheme expression is shown, we use some notation for
-denoting the output and evaluation results of expressions.
-
-The symbol @code{@result{}} is used to tell which value is returned by
-an evaluation:
-
-@lisp
-(+ 1 2)
-@result{}
-3
-@end lisp
-
-Some procedures produce some output besides returning a value.  This
-is denoted by the symbol @code{@print{}}.
-
-@lisp
-(begin (display 1) (newline) 'hooray)
-@print{} 1
-@result{}
-hooray
-@end lisp
-
-@c Add other conventions here.
-
-@end itemize
-
-
-@c Local Variables:
-@c TeX-master: "guile.texi"
-@c End:
+@c -*-texinfo-*-
+@c This is part of the GNU Guile Reference Manual.
+@c Copyright (C)  1996, 1997, 2000, 2001, 2002, 2003, 2004, 2010, 2011
+@c   Free Software Foundation, Inc.
+@c See the file guile.texi for copying conditions.
+
+@node Preface
+@unnumbered Preface
+
+This manual describes how to use Guile, GNU's Ubiquitous Intelligent
+Language for Extensions.  It relates particularly to Guile version
+@value{VERSION}.
+
+@menu
+* Contributors::                
+* Guile License::               
+@end menu
+
+@node Contributors
+@unnumberedsec Contributors to this Manual
+
+Like Guile itself, the Guile reference manual is a living entity, cared
+for by many people over a long period of time.  As such, it is hard to
+identify individuals of whom to say ``yes, this person, she wrote the
+manual.''
+
+Still, among the many contributions, some caretakers stand out.  First
+among them is Neil Jerram, who has been working on this document for ten
+years now.  Neil's attention both to detail and to the big picture have
+made a real difference in the understanding of a generation of Guile
+hackers.
+
+Next we should note Marius Vollmer's effect on this document.  Marius
+maintained Guile during a period in which Guile's API was
+clarified---put to the fire, so to speak---and he had the good sense to
+effect the same change on the manual.
+
+Martin Grabmueller made substantial contributions throughout the manual
+in preparation for the Guile 1.6 release, including filling out a lot of
+the documentation of Scheme data types, control mechanisms and
+procedures.  In addition, he wrote the documentation for Guile's SRFI
+modules and modules associated with the Guile REPL.
+
+Ludovic Court@`es and Andy Wingo, the Guile maintainers at the time of
+this writing (late 2010), have also made their dent in the manual,
+writing documentation for new modules and subsystems in Guile 2.0.  They
+are also responsible for ensuring that the existing text retains its
+relevance as Guile evolves.  @xref{Reporting Bugs}, for more information
+on reporting problems in this manual.
+
+The content for the first versions of this manual incorporated and was
+inspired by documents from Aubrey Jaffer, author of the SCM system on
+which Guile was based, and from Tom Lord, Guile's first maintainer.
+Although most of this text has been rewritten, all of it was important,
+and some of the structure remains.
+
+The manual for the first versions of Guile were largely written, edited,
+and compiled by Mark Galassi and Jim Blandy.  In particular, Jim wrote
+the original tutorial on Guile's data representation and the C API for
+accessing Guile objects.
+
+Significant portions were also contributed by Thien-Thi Nguyen, Kevin
+Ryde, Mikael Djurfeldt, Christian Lynbech, Julian Graham, Gary Houston,
+Tim Pierce, and a few dozen more.  You, reader, are most welcome to join
+their esteemed ranks.  Visit Guile's web site at
+@uref{http://www.gnu.org/software/guile/} to find out how to get
+involved.
+
+
+@node Guile License
+@unnumberedsec The Guile License
+@cindex copying
+@cindex GPL
+@cindex LGPL
+@cindex license
+
+Guile is Free Software.  Guile is copyrighted, not public domain, and
+there are restrictions on its distribution or redistribution, but
+these restrictions are designed to permit everything a cooperating
+person would want to do.
+
+@itemize @bullet
+@item
+The Guile library (libguile) and supporting files are published under
+the terms of the GNU Lesser General Public License version 3 or later.
+See the files @file{COPYING.LESSER} and @file{COPYING}.
+
+@item
+The Guile readline module is published under the terms of the GNU
+General Public License version 3 or later.  See the file @file{COPYING}.
+
+@item
+The manual you're now reading is published under the terms of the GNU
+Free Documentation License (@pxref{GNU Free Documentation License}).
+@end itemize
+
+C code linking to the Guile library is subject to terms of that
+library.  Basically such code may be published on any terms, provided
+users can re-link against a new or modified version of Guile.
+
+C code linking to the Guile readline module is subject to the terms of
+that module.  Basically such code must be published on Free terms.
+
+Scheme level code written to be run by Guile (but not derived from
+Guile itself) is not restricted in any way, and may be published on any
+terms.  We encourage authors to publish on Free terms.
+
+You must be aware there is no warranty whatsoever for Guile.  This is
+described in full in the licenses.
+
+
+@c Local Variables:
+@c TeX-master: "guile.texi"
+@c End: