*** empty log message ***
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 052c165..9238563 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
 Guile NEWS --- history of user-visible changes.  -*- text -*-
-Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Guile bug reports to bug-guile@gnu.org.
@@ -8,9 +8,101 @@ Changes since Guile 1.4:
 
 * Changes to the distribution
 
-** New modules (oop goops) etc
+** Guile now uses a versioning scheme similar to that of the Linux kernel.
 
-The new modules
+Guile now always uses three numbers to represent the version,
+i.e. "1.6.5".  The first number, 1, is the major version number, the
+second number, 6, is the minor version number, and the third number,
+5, is the micro version number.  Changes in major version number
+indicate major changes in Guile.
+
+Minor version numbers that are even denote stable releases, and odd
+minor version numbers denote development versions (which may be
+unstable).  The micro version number indicates a minor sub-revision of
+a given MAJOR.MINOR release.
+
+In keeping with the new scheme, (minor-version) and scm_minor_version
+no longer return everything but the major version number.  They now
+just return the minor version number.  Two new functions
+(micro-version) and scm_micro_version have been added to report the
+micro version number.
+
+In addition, ./GUILE-VERSION now defines GUILE_MICRO_VERSION.
+
+** Guile now actively warns about deprecated features.
+
+The new configure option `--enable-deprecated=LEVEL' and the
+environment variable GUILE_WARN_DEPRECATED control this mechanism.
+See INSTALL and README for more information.
+
+** New SRFI modules have been added:
+
+SRFI-0 `cond-expand' is now supported in Guile, without requiring
+using a module.
+
+(srfi srfi-2) exports and-let*.
+
+(srfi srfi-6) is a dummy module for now, since guile already provides
+  all of the srfi-6 procedures by default: open-input-string,
+  open-output-string, get-output-string.
+
+(srfi srfi-8) exports receive.
+
+(srfi srfi-9) exports define-record-type.
+
+(srfi srfi-10) exports define-reader-ctor and implements the reader
+  extension #,().
+
+(srfi srfi-11) exports let-values and let*-values.
+
+(srfi srfi-13) implements the SRFI String Library.
+
+(srfi srfi-14) implements the SRFI Character-Set Library.
+
+(srfi srfi-17) implements setter and getter-with-setter and redefines
+  some accessor procedures as procedures with getters. (such as car,
+  cdr, vector-ref etc.)
+
+(srfi srfi-19) implements the SRFI Time/Date Library.
+
+** New scripts / "executable modules"
+
+Subdirectory "scripts" contains Scheme modules that are packaged to
+also be executable as scripts.  At this time, these scripts are available:
+
+     display-commentary
+     doc-snarf
+     generate-autoload
+     punify
+     read-scheme-source
+     use2dot
+
+See README there for more info.
+
+These scripts can be invoked from the shell with the new program
+"guile-tools", which keeps track of installation directory for you.
+For example:
+
+     $ guile-tools display-commentary srfi/*.scm
+
+guile-tools is copied to the standard $bindir on "make install".
+
+** New module (ice-9 stack-catch):
+
+stack-catch is like catch, but saves the current state of the stack in
+the fluid the-last-stack.  This fluid can be useful when using the
+debugger and when re-throwing an error.
+
+** The module (ice-9 and-let*) has been renamed to (ice-9 and-let-star)
+
+This has been done to prevent problems on lesser operating systems
+that can't tolerate `*'s in file names.  The exported macro continues
+to be named `and-let*', of course.
+
+On systems that support it, there is also a compatibility module named
+(ice-9 and-let*).  It will go away in the next release.
+
+** New modules (oop goops) etc.:
 
   (oop goops)
   (oop goops describe)
@@ -18,62 +110,112 @@ The new modules
   (oop goops active-slot)
   (oop goops composite-slot)
 
-plus some GOOPS utility modules have been added.
+The Guile Object Oriented Programming System (GOOPS) has been
+integrated into Guile.  For further information, consult the GOOPS
+manual and tutorial in the `doc' directory.
 
-* Changes to the stand-alone interpreter
+** New module (ice-9 rdelim).
 
-** GOOPS has been merged into Guile
+This exports the following procedures which were previously defined
+in the default environment:
 
-The Guile Object Oriented Programming System has been integrated into
-Guile.
+read-line read-line! read-delimited read-delimited! %read-delimited!
+%read-line write-line
 
-Type
+For backwards compatibility the definitions are still imported into the
+default environment in this version of Guile.  However you should add:
 
-  (use-modules (oop goops))
+(use-modules (ice-9 rdelim))
 
-access GOOPS bindings.
+to any program which uses the definitions, since this may change in
+future.
 
-We're now ready to try some basic GOOPS functionality.
+Alternatively, if guile-scsh is installed, the (scsh rdelim) module
+can be used for similar functionality.
 
-Generic functions
+** New module (ice-9 rw)
 
-  (define-method (+ (x <string>) (y <string>))
-    (string-append x y))
+This is a subset of the (scsh rw) module from guile-scsh.  Currently
+it defines a single procedure:
+
+*** New function: read-string!/partial str [port_or_fdes [start [end]]]
+
+     Read characters from an fport or file descriptor into a string
+     STR.  This procedure is scsh-compatible and can efficiently read
+     large strings.
+
+** New module (ice-9 match)
+
+This module includes Andrew K. Wright's pattern matcher.  See
+ice-9/match.scm for brief description or
+
+    http://www.star-lab.com/wright/code.html
+
+for complete documentation.
+
+This module requires SLIB to be installed and available from Guile.
+
+** New module (ice-9 buffered-input)
 
-  (+ 1 2) --> 3
-  (+ "abc" "de") --> "abcde"
+This module provides procedures to construct an input port from an
+underlying source of input that reads and returns its input in chunks.
+The underlying input source is a Scheme procedure, specified by the
+caller, which the port invokes whenever it needs more input.
 
-User-defined types
+This is useful when building an input port whose back end is Readline
+or a UI element such as the GtkEntry widget.
 
-  (define-class <2D-vector> ()
-    (x #:init-value 0 #:accessor x-component #:init-keyword #:x)
-    (y #:init-value 0 #:accessor y-component #:init-keyword #:y))
+** Documentation
+
+The reference and tutorial documentation that was previously
+distributed separately, as `guile-doc', is now included in the core
+Guile distribution.  The documentation consists of the following
+manuals.
+
+- The Guile Tutorial (guile-tut.texi) contains a tutorial introduction
+  to using Guile.
+
+- The Guile Reference Manual (guile.texi) contains (or is intended to
+  contain) reference documentation on all aspects of Guile.
+
+- The GOOPS Manual (goops.texi) contains both tutorial-style and
+  reference documentation for using GOOPS, Guile's Object Oriented
+  Programming System.
+
+- The Revised^5 Report on the Algorithmic Language Scheme
+  (r5rs.texi).
+
+See the README file in the `doc' directory for more details.
+
+* Changes to the stand-alone interpreter
 
-  (define-method write ((obj <2D-vector>) port)
-    (display (format #f "<~S, ~S>" (x-component obj) (y-component obj))
-            port))
+** New command line option `--use-srfi'
 
-  (define v (make <2D-vector> #:x 3 #:y 4))
-  v --> <3, 4>
+Using this option, SRFI modules can be loaded on startup and be
+available right from the beginning.  This makes programming portable
+Scheme programs easier.
 
-  (define-method + ((x <2D-vector>) (y <2D-vector>))
-    (make <2D-vector>
-          #:x (+ (x-component x) (x-component y))
-          #:y (+ (y-component x) (y-component y))))
+The option `--use-srfi' expects a comma-separated list of numbers,
+each representing a SRFI number to be loaded into the interpreter
+before starting evaluating a script file or the REPL.  Additionally,
+the feature identifier for the loaded SRFIs is recognized by
+`cond-expand' when using this option.
 
-  (+ v v) --> <6, 8>
+Example:
+$ guile --use-srfi=8,13
+guile> (receive (x z) (values 1 2) (+ 1 2))
+3
+guile> (string-pad "bla" 20)
+"                 bla"
 
-Asking for the type of an object
 
-  (class-of v) --> #<<class> <2D-vector> 40241ac0>
-  <2D-vector>  --> #<<class> <2D-vector> 40241ac0>
-  (class-of 1) --> #<<class> <integer> 401b2a98>
-  <integer>    --> #<<class> <integer> 401b2a98>
+* Changes to Scheme functions and syntax
 
-  (is-a? v <2D-vector>) --> #t
+** Previously deprecated Scheme functions have been removed:
 
-See further in the GOOPS tutorial available in the guile-doc
-distribution in info (goops.info) and texinfo formats.
+  tag - no replacement.
+  fseek - replaced by seek.
+  list* - replaced by cons*.
 
 ** It's now possible to create modules with controlled environments
 
@@ -82,10 +224,174 @@ Example:
 (use-modules (ice-9 safe))
 (define m (make-safe-module))
 ;;; m will now be a module containing only a safe subset of R5RS
-(eval-in-module '(+ 1 2) m) --> 3
-(eval-in-module 'load m) --> ERROR: Unbound variable: load
+(eval '(+ 1 2) m) --> 3
+(eval 'load m) --> ERROR: Unbound variable: load
 
-* Changes to Scheme functions and syntax
+** Evaluation of "()", the empty list, is now an error.
+
+Previously, the expression "()" evaluated to the empty list.  This has
+been changed to signal a "missing expression" error.  The correct way
+to write the empty list as a literal constant is to use quote: "'()".
+
+** New concept of `Guile Extensions'.
+
+A Guile Extension is just a ordinary shared library that can be linked
+at run-time.  We found it advantageous to give this simple concept a
+dedicated name to distinguish the issues related to shared libraries
+from the issues related to the module system.
+
+*** New function: load-extension
+
+Executing (load-extension lib init) is mostly equivalent to
+
+   (dynamic-call init (dynamic-link lib))
+
+except when scm_register_extension has been called previously.
+Whenever appropriate, you should use `load-extension' instead of
+dynamic-link and dynamic-call.
+
+*** New C function: scm_c_register_extension
+
+This function registers a initialization function for use by
+`load-extension'.  Use it when you don't want specific extensions to
+be loaded as shared libraries (for example on platforms that don't
+support dynamic linking).
+
+** Auto-loading of compiled-code modules is deprecated.
+
+Guile used to be able to automatically find and link a shared
+library to satisfy requests for a module.  For example, the module
+`(foo bar)' could be implemented by placing a shared library named
+"foo/libbar.so" (or with a different extension) in a directory on the
+load path of Guile.
+
+This has been found to be too tricky, and is no longer supported.  The
+shared libraries are now called "extensions".  You should now write a
+small Scheme file that calls `load-extension' to load the shared
+library and initialize it explicitely.
+
+The shared libraries themselves should be installed in the usual
+places for shared libraries, with names like "libguile-foo-bar".
+
+For example, place this into a file "foo/bar.scm"
+
+    (define-module (foo bar))
+
+    (load-extension "libguile-foo-bar" "foobar_init")
+
+** Backward incompatible change: eval EXP ENVIRONMENT-SPECIFIER
+
+`eval' is now R5RS, that is it takes two arguments.
+The second argument is an environment specifier, i.e. either
+
+  (scheme-report-environment 5)
+  (null-environment 5)
+  (interaction-environment)
+
+or
+
+  any module.
+
+** The module system has been made more disciplined.
+
+The function `eval' will save and restore the current module around
+the evaluation of the specified expression.  While this expression is
+evaluated, `(current-module)' will now return the right module, which
+is the module specified as the second argument to `eval'.
+
+A consequence of this change is that `eval' is not particularly
+useful when you want allow the evaluated code to change what module is
+designated as the current module and have this change persist from one
+call to `eval' to the next.  The read-eval-print-loop is an example
+where `eval' is now inadequate.  To compensate, there is a new
+function `primitive-eval' that does not take a module specifier and
+that does not save/restore the current module.  You should use this
+function together with `set-current-module', `current-module', etc
+when you want to have more control over the state that is carried from
+one eval to the next.
+
+Additionally, it has been made sure that forms that are evaluated at
+the top level are always evaluated with respect to the current module.
+Previously, subforms of top-level forms such as `begin', `case',
+etc. did not respect changes to the current module although these
+subforms are at the top-level as well.
+
+To prevent strange behavior, the forms `define-module',
+`use-modules', `use-syntax', and `export' have been restricted to only
+work on the top level.  The forms `define-public' and
+`defmacro-public' only export the new binding on the top level.  They
+behave just like `define' and `defmacro', respectively, when they are
+used in a lexical environment.
+
+** The semantics of guardians have changed.
+
+The changes are for the most part compatible.  An important criterion
+was to keep the typical usage of guardians as simple as before, but to
+make the semantics safer and (as a result) more useful.
+
+*** All objects returned from guardians are now properly alive.
+
+It is now guaranteed that any object referenced by an object returned
+from a guardian is alive.  It's now impossible for a guardian to
+return a "contained" object before its "containing" object.
+
+One incompatible (but probably not very important) change resulting
+from this is that it is no longer possible to guard objects that
+indirectly reference themselves (i.e. are parts of cycles).  If you do
+so accidentally, you'll get a warning.
+
+*** There are now two types of guardians: greedy and sharing.
+
+If you call (make-guardian #t) or just (make-guardian), you'll get a
+greedy guardian, and for (make-guardian #f) a sharing guardian.
+
+Greedy guardians are the default because they are more "defensive".
+You can only greedily guard an object once.  If you guard an object
+more than once, once in a greedy guardian and the rest of times in
+sharing guardians, then it is guaranteed that the object won't be
+returned from sharing guardians as long as it is greedily guarded
+and/or alive.
+
+Guardians returned by calls to `make-guardian' can now take one more
+optional parameter, which says whether to throw an error in case an
+attempt is made to greedily guard an object that is already greedily
+guarded.  The default is true, i.e. throw an error.  If the parameter
+is false, the guardian invocation returns #t if guarding was
+successful and #f if it wasn't.
+
+Also, since greedy guarding is, in effect, a side-effecting operation
+on objects, a new function is introduced: `destroy-guardian!'.
+Invoking this function on a guardian renders it unoperative and, if
+the guardian is greedy, clears the "greedily guarded" property of the
+objects that were guarded by it, thus undoing the side effect.
+
+Note that all this hair is hardly very important, since guardian
+objects are usually permanent.
+
+** Continuations created by call-with-current-continuation now accept
+any number of arguments, as required by R5RS.
+
+** New function `issue-deprecation-warning'
+
+This function is used to display the deprecation messages that are
+controlled by GUILE_WARN_DEPRECATION as explained in the README.
+
+  (define (id x)
+    (issue-deprecation-warning "`id' is deprecated.  Use `identity' instead.")
+    (identity x))
+
+  guile> (id 1)
+  ;; `id' is deprecated.  Use `identity' instead.
+  1
+  guile> (id 1)
+  1
+
+** New syntax `begin-deprecated'
+
+When deprecated features are included (as determined by the configure
+option --enable-deprecated), `begin-deprecated' is identical to
+`begin'.  When deprecated features are excluded, it always evaluates
+to `#f', ignoring the body forms.
 
 ** New function `make-object-property'
 
@@ -111,19 +417,6 @@ Instead of #&optional, #&key, etc you should now use #:optional,
 The old reader syntax `#&' is still supported, but deprecated.  It
 will be removed in the next release.
 
-** Backward incompatible change: eval EXP ENVIRONMENT-SPECIFIER
-
-`eval' is now R5RS, that is it takes two arguments.
-The second argument is an environment specifier, i.e. either
-
-  (scheme-report-environment 5)
-  (null-environment 5)
-  (interaction-environment)
-
-or
-
-  any module.
-
 ** New define-module option: pure
 
 Tells the module system not to include any bindings from the root
@@ -143,41 +436,36 @@ a module which doesn't import one of `define-public' or `export'.
 
 Example:
 
-(define-module (foo)
-  :pure
-  :use-module (ice-9 r5rs)
-  :export (bar))
-
-;;; Note that we're pure R5RS below this point!
+    (define-module (foo)
+      :pure
+      :use-module (ice-9 r5rs)
+      :export (bar))
 
-(define (bar)
-  ...)
+    ;;; Note that we're pure R5RS below this point!
 
-** Deprecated: scm_make_shared_substring
+    (define (bar)
+      ...)
 
-Explicit shared substrings will disappear from Guile.
+** New function: object->string OBJ
 
-Instead, "normal" strings will be implemented using sharing
-internally, combined with a copy-on-write strategy.
-
-** Deprecated: scm_read_only_string_p
-
-The concept of read-only strings will disappear in next release of
-Guile.
-
-** Deprecated: scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member
-
-Instead, use scm_memq, scm_memv, scm_member.
+Return a Scheme string obtained by printing a given object.
 
 ** New function: port? X
 
 Returns a boolean indicating whether X is a port.  Equivalent to
 `(or (input-port? X) (output-port? X))'.
 
+** New function: file-port?
+
+Determines whether a given object is a port that is related to a file.
+
 ** New function: port-for-each proc
 
-Apply PROC to each port in the Guile port table in turn.  The
-return value is unspecified.
+Apply PROC to each port in the Guile port table in turn.  The return
+value is unspecified.  More specifically, PROC is applied exactly once
+to every port that exists in the system at the time PORT-FOR-EACH is
+invoked.  Changes to the port table while PORT-FOR-EACH is running
+have no effect as far as PORT-FOR-EACH is concerned.
 
 ** New function: dup2 oldfd newfd
 
@@ -185,7 +473,7 @@ A simple wrapper for the `dup2' system call.  Copies the file
 descriptor OLDFD to descriptor number NEWFD, replacing the
 previous meaning of NEWFD.  Both OLDFD and NEWFD must be integers.
 Unlike for dup->fdes or primitive-move->fdes, no attempt is made
-to move away ports which are using NEWFD\n".  The return value is
+to move away ports which are using NEWFD.  The return value is
 unspecified.
 
 ** New function: close-fdes fd
@@ -196,23 +484,215 @@ close: Ports and File Descriptors.), the file descriptor will be
 closed even if a port is using it.  The return value is
 unspecified.
 
-** Deprecated: close-all-ports-except.  This was intended for closing
-ports in a child process after a fork, but it has the undesirable side
-effect of flushing buffers.  port-for-each is more flexible.
+** New function: crypt password salt
+
+Encrypts `password' using the standard unix password encryption
+algorithm.
+
+** New function: chroot path
+
+Change the root directory of the running process to `path'.
+
+** New functions: getlogin, cuserid
+
+Return the login name or the user name of the current effective user
+id, respectively.
+
+** New functions: getpriority which who, setpriority which who prio
+
+Get or set the priority of the running process.
+
+** New function: getpass prompt
+
+Read a password from the terminal, first displaying `prompt' and
+disabling echoing.
+
+** New function: flock file operation
+
+Set/remove an advisory shared or exclusive lock on `file'.
+
+** New functions: sethostname name, gethostname
+
+Set or get the hostname of the machine the current process is running
+on.
+
+** New function: mkstemp! tmpl
+
+mkstemp creates a new unique file in the file system and returns a
+new buffered port open for reading and writing to the file.  TMPL
+is a string specifying where the file should be created: it must
+end with `XXXXXX' and will be changed in place to return the name
+of the temporary file.
+
+** New function: open-input-string string
+
+Return an input string port which delivers the characters from
+`string'.  This procedure, together with `open-output-string' and
+`get-output-string' implements SRFI-6.
+
+** New function: open-output-string
+
+Return an output string port which collects all data written to it.
+The data can then be retrieved by `get-output-string'.
+
+** New function: get-output-string
+
+Return the contents of an output string port.
+
+** New function: identity
+
+Return the argument.
+
+** socket, connect, accept etc., now have support for IPv6.  IPv6 addresses
+   are represented in Scheme as integers with normal host byte ordering.
+
+** New function: inet-pton family address
+
+Convert a printable string network address into an integer.  Note that
+unlike the C version of this function, the result is an integer with
+normal host byte ordering.  FAMILY can be `AF_INET' or `AF_INET6'.
+e.g.,
+
+    (inet-pton AF_INET "127.0.0.1") => 2130706433
+    (inet-pton AF_INET6 "::1") => 1
+
+** New function: inet-ntop family address
+
+Convert an integer network address into a printable string.  Note that
+unlike the C version of this function, the input is an integer with
+normal host byte ordering.  FAMILY can be `AF_INET' or `AF_INET6'.
+e.g.,
+
+    (inet-ntop AF_INET 2130706433) => "127.0.0.1"
+    (inet-ntop AF_INET6 (- (expt 2 128) 1)) =>
+          ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
+
+** Deprecated: id
+
+Use `identity' instead.
+
+** Deprecated: -1+
+
+Use `1-' instead.
+
+** Deprecated: return-it
+
+Do without it.
+
+** Deprecated: string-character-length
+
+Use `string-length' instead.
+
+** Deprecated: flags
+
+Use `logior' instead.
+
+** Deprecated: close-all-ports-except.
+
+This was intended for closing ports in a child process after a fork,
+but it has the undesirable side effect of flushing buffers.
+port-for-each is more flexible.
 
 ** The (ice-9 popen) module now attempts to set up file descriptors in
 the child process from the current Scheme ports, instead of using the
 current values of file descriptors 0, 1, and 2 in the parent process.
 
-* Changes to the gh_ interface
+** Removed function:  builtin-weak-bindings
 
-* Changes to the scm_ interface
+There is no such concept as a weak binding any more.
+
+** Removed constants:  bignum-radix, scm-line-incrementors
+
+** define-method: New syntax mandatory.
+
+The new method syntax is now mandatory:
+
+(define-method (NAME ARG-SPEC ...) BODY ...)
+(define-method (NAME ARG-SPEC ... . REST-ARG) BODY ...)
+
+  ARG-SPEC ::= ARG-NAME | (ARG-NAME TYPE)
+  REST-ARG ::= ARG-NAME
+
+If you have old code using the old syntax, import
+(oop goops old-define-method) before (oop goops) as in:
+
+  (use-modules (oop goops old-define-method) (oop goops))
+
+** Deprecated function: builtin-variable
+   Removed function: builtin-bindings
+
+There is no longer a distinction between builtin or other variables.
+Use module system operations for all variables.
+
+** Lazy-catch handlers are no longer allowed to return.
+
+That is, a call to `throw', `error', etc is now guaranteed to not
+return.
+
+* Changes to the C interface
+
+** Deprecated feature have been removed.
+
+*** Macros removed
+
+  SCM_INPORTP, SCM_OUTPORTP SCM_ICHRP, SCM_ICHR, SCM_MAKICHR
+  SCM_SETJMPBUF SCM_NSTRINGP SCM_NRWSTRINGP SCM_NVECTORP SCM_DOUBLE_CELLP
+
+*** C Functions removed
+
+  scm_sysmissing scm_tag scm_tc16_flo scm_tc_flo
+  scm_fseek - replaced by scm_seek.
+  gc-thunk - replaced by after-gc-hook.
+  gh_int2scmb - replaced by gh_bool2scm.
+  scm_tc_dblr - replaced by scm_tc16_real.
+  scm_tc_dblc - replaced by scm_tc16_complex.
+  scm_list_star - replaced by scm_cons_star.
+
+** Deprecated: scm_make_shared_substring
+
+Explicit shared substrings will disappear from Guile.
+
+Instead, "normal" strings will be implemented using sharing
+internally, combined with a copy-on-write strategy.
+
+** Deprecated: scm_read_only_string_p
+
+The concept of read-only strings will disappear in next release of
+Guile.
+
+** Deprecated: scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member
+
+Instead, use scm_c_memq or scm_memq, scm_memv, scm_member.
+
+** New function: scm_c_read (SCM port, void *buffer, scm_sizet size)
+
+Used by an application to read arbitrary number of bytes from a port.
+Same semantics as libc read, except that scm_c_read only returns less
+than SIZE bytes if at end-of-file.
+
+Warning: Doesn't update port line and column counts!
+
+** New function: scm_c_write (SCM port, const void *ptr, scm_sizet size)
+
+Used by an application to write arbitrary number of bytes to an SCM
+port.  Similar semantics as libc write.  However, unlike libc
+write, scm_c_write writes the requested number of bytes and has no
+return value.
+
+Warning: Doesn't update port line and column counts!
 
 ** New function: scm_init_guile ()
 
 In contrast to scm_boot_guile, scm_init_guile will return normally
 after initializing Guile.  It is not available on all systems, tho.
 
+** New functions: scm_str2symbol, scm_mem2symbol
+
+The function scm_str2symbol takes a const char* pointing to a zero-terminated
+field of characters and creates a scheme symbol object from that C string.
+The function scm_mem2symbol takes a const char* and a number of characters and
+creates a symbol from the characters in that memory area.
+
 ** New functions: scm_primitive_make_property
                   scm_primitive_property_ref
                   scm_primitive_property_set_x
@@ -228,6 +708,34 @@ amount of smob memory you free.  The previous method, which involved
 calling scm_done_malloc with negative argument, was somewhat
 unintuitive (and is still available, of course).
 
+** New function: scm_c_memq (SCM obj, SCM list)
+
+This function provides a fast C level alternative for scm_memq for the case
+that the list parameter is known to be a proper list.  The function is a
+replacement for scm_sloppy_memq, but is stricter in its requirements on its
+list input parameter, since for anything else but a proper list the function's
+behaviour is undefined - it may even crash or loop endlessly.  Further, for
+the case that the object is not found in the list, scm_c_memq returns #f which
+is similar to scm_memq, but different from scm_sloppy_memq's behaviour.
+
+** New functions: scm_remember_upto_here_1, scm_remember_upto_here_2,
+scm_remember_upto_here
+
+These functions replace the function scm_remember.
+
+** Deprecated function:  scm_remember
+
+Use one of the new functions scm_remember_upto_here_1,
+scm_remember_upto_here_2 or scm_remember_upto_here instead.
+
+** New function: scm_allocate_string
+
+This function replaces the function scm_makstr.
+
+** Deprecated function:  scm_makstr
+
+Use the new function scm_allocate_string instead.
+
 ** New global variable scm_gc_running_p introduced.
 
 Use this variable to find out if garbage collection is being executed.  Up to
@@ -237,21 +745,34 @@ collector has set this variable.  But, this is an implementation detail that
 may change.  Further, scm_gc_heap_lock is not set throughout gc, thus the use
 of this variable is (and has been) not fully safe anyway.
 
-** New macros:  SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH, 
+** New macros:  SCM_BITVECTOR_MAX_LENGTH, SCM_UVECTOR_MAX_LENGTH
+
+Use these instead of SCM_LENGTH_MAX.
+
+** New macros:  SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH,
 SCM_STRING_LENGTH, SCM_SYMBOL_LENGTH, SCM_UVECTOR_LENGTH,
 SCM_BITVECTOR_LENGTH, SCM_VECTOR_LENGTH.
 
 Use these instead of SCM_LENGTH.
 
-** New macros:  SCM_SET_CONTINUATION_LENGTH, SCM_SET_VECTOR_LENGTH
+** New macros:  SCM_SET_CONTINUATION_LENGTH, SCM_SET_STRING_LENGTH,
+SCM_SET_SYMBOL_LENGTH, SCM_SET_VECTOR_LENGTH, SCM_SET_UVECTOR_LENGTH,
+SCM_SET_BITVECTOR_LENGTH
 
 Use these instead of SCM_SETLENGTH
 
-** New macros:  SCM_STRING_CHARS, SCM_SYMBOL_CHARS, SCM_CCLO_BASE, 
+** New macros:  SCM_STRING_CHARS, SCM_SYMBOL_CHARS, SCM_CCLO_BASE,
 SCM_VECTOR_BASE, SCM_UVECTOR_BASE, SCM_BITVECTOR_BASE, SCM_COMPLEX_MEM,
 SCM_ARRAY_MEM
 
-Use these instead of SCM_CHARS or SCM_VELTS.
+Use these instead of SCM_CHARS, SCM_UCHARS, SCM_ROCHARS, SCM_ROUCHARS or
+SCM_VELTS.
+
+** New macros:  SCM_SET_BIGNUM_BASE, SCM_SET_STRING_CHARS,
+SCM_SET_SYMBOL_CHARS, SCM_SET_UVECTOR_BASE, SCM_SET_BITVECTOR_BASE,
+SCM_SET_VECTOR_BASE
+
+Use these instead of SCM_SETCHARS.
 
 ** New macro:  SCM_BITVECTOR_P
 
@@ -259,16 +780,25 @@ Use these instead of SCM_CHARS or SCM_VELTS.
 
 Use instead of SCM_COERCE_SUBSTR.
 
-** Deprecated macros:  SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL, 
-SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, 
-SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, 
+** New macros:  SCM_DIR_OPEN_P, SCM_DIR_FLAG_OPEN
+
+For directory objects, use these instead of SCM_OPDIRP and SCM_OPN.
+
+** Deprecated macros:  SCM_OUTOFRANGE, SCM_NALLOC, SCM_HUP_SIGNAL,
+SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL,
+SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD,
 SCM_ORD_SIG, SCM_NUM_SIGS, SCM_SYMBOL_SLOTS, SCM_SLOTS, SCM_SLOPPY_STRINGP,
 SCM_VALIDATE_STRINGORSUBSTR, SCM_FREEP, SCM_NFREEP, SCM_CHARS, SCM_UCHARS,
 SCM_VALIDATE_ROSTRING, SCM_VALIDATE_ROSTRING_COPY,
 SCM_VALIDATE_NULLORROSTRING_COPY, SCM_ROLENGTH, SCM_LENGTH, SCM_HUGE_LENGTH,
 SCM_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET, SCM_COERCE_SUBSTR,
 SCM_ROSTRINGP, SCM_RWSTRINGP, SCM_VALIDATE_RWSTRING, SCM_ROCHARS,
-SCM_ROUCHARS
+SCM_ROUCHARS, SCM_SETLENGTH, SCM_SETCHARS, SCM_LENGTH_MAX, SCM_GC8MARKP,
+SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16, SCM_GCCDR, SCM_SUBR_DOC,
+SCM_OPDIRP, SCM_VALIDATE_OPDIR, SCM_WTA, RETURN_SCM_WTA, SCM_CONST_LONG,
+SCM_WNA, SCM_FUNC_NAME, SCM_VALIDATE_NUMBER_COPY,
+SCM_VALIDATE_NUMBER_DEF_COPY, SCM_SLOPPY_CONSP, SCM_SLOPPY_NCONSP,
+SCM_SETAND_CDR, SCM_SETOR_CDR, SCM_SETAND_CAR, SCM_SETOR_CAR
 
 Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE.
 Use scm_memory_error instead of SCM_NALLOC.
@@ -276,7 +806,7 @@ Use SCM_STRINGP instead of SCM_SLOPPY_STRINGP.
 Use SCM_VALIDATE_STRING instead of SCM_VALIDATE_STRINGORSUBSTR.
 Use SCM_FREE_CELL_P instead of SCM_FREEP/SCM_NFREEP
 Use a type specific accessor macro instead of SCM_CHARS/SCM_UCHARS.
-Use a type specific accessor instead of SCM(_|_RO|_HUGE_)LENGTH. 
+Use a type specific accessor instead of SCM(_|_RO|_HUGE_)LENGTH.
 Use SCM_VALIDATE_(SYMBOL|STRING) instead of SCM_VALIDATE_ROSTRING.
 Use SCM_STRING_COERCE_0TERMINATION_X instead of SCM_COERCE_SUBSTR.
 Use SCM_STRINGP or SCM_SYMBOLP instead of SCM_ROSTRINGP.
@@ -284,9 +814,29 @@ Use SCM_STRINGP instead of SCM_RWSTRINGP.
 Use SCM_VALIDATE_STRING instead of SCM_VALIDATE_RWSTRING.
 Use SCM_STRING_CHARS instead of SCM_ROCHARS.
 Use SCM_STRING_UCHARS instead of SCM_ROUCHARS.
+Use a type specific setter macro instead of SCM_SETLENGTH.
+Use a type specific setter macro instead of SCM_SETCHARS.
+Use a type specific length macro instead of SCM_LENGTH_MAX.
+Use SCM_GCMARKP instead of SCM_GC8MARKP.
+Use SCM_SETGCMARK instead of SCM_SETGC8MARK.
+Use SCM_CLRGCMARK instead of SCM_CLRGC8MARK.
+Use SCM_TYP16 instead of SCM_GCTYP16.
+Use SCM_CDR instead of SCM_GCCDR.
+Use SCM_DIR_OPEN_P instead of SCM_OPDIRP.
+Use SCM_MISC_ERROR or SCM_WRONG_TYPE_ARG instead of SCM_WTA.
+Use SCM_MISC_ERROR or SCM_WRONG_TYPE_ARG instead of RETURN_SCM_WTA.
+Use SCM_VCELL_INIT instead of SCM_CONST_LONG.
+Use SCM_WRONG_NUM_ARGS instead of SCM_WNA.
+Use SCM_CONSP instead of SCM_SLOPPY_CONSP.
+Use !SCM_CONSP instead of SCM_SLOPPY_NCONSP.
 
 ** Removed function:  scm_struct_init
 
+** Removed variable:  scm_symhash_dim
+
+** Renamed function: scm_make_cont has been replaced by
+scm_make_continuation, which has a different interface.
+
 ** Deprecated function:  scm_call_catching_errors
 
 Use scm_catch or scm_lazy_catch from throw.[ch] instead.
@@ -303,16 +853,136 @@ Instead, create a fresh vector of the desired size and copy the contents.
 
 scm_gensym now only takes one argument.
 
-** New function: scm_gentemp (SCM prefix, SCM obarray)
-
-The builtin `gentemp' has now become a primitive.
-
 ** Deprecated type tags:  scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols,
 scm_tc7_lvector
 
 There is now only a single symbol type scm_tc7_symbol.
 The tag scm_tc7_lvector was not used anyway.
 
+** Deprecated function:  scm_make_smob_type_mfpe, scm_set_smob_mfpe.
+
+Use scm_make_smob_type and scm_set_smob_XXX instead.
+
+** New function scm_set_smob_apply.
+
+This can be used to set an apply function to a smob type.
+
+** Deprecated function:  scm_strprint_obj
+
+Use scm_object_to_string instead.
+
+** Deprecated function:  scm_wta
+
+Use scm_wrong_type_arg, or another appropriate error signalling function
+instead.
+
+** Explicit support for obarrays has been deprecated.
+
+Use `scm_str2symbol' and the generic hashtable functions instead.
+
+** The concept of `vcells' has been deprecated.
+
+The data type `variable' is now used exclusively.  `Vcells' have been
+a low-level concept so you are likely not affected by this change.
+
+*** Deprecated functions: scm_sym2vcell, scm_sysintern,
+    scm_sysintern0, scm_symbol_value0, scm_intern, scm_intern0.
+
+Use scm_c_define or scm_c_lookup instead, as appropriate.
+
+*** New functions: scm_c_module_lookup, scm_c_lookup,
+    scm_c_module_define, scm_c_define, scm_module_lookup, scm_lookup,
+    scm_module_define, scm_define.
+
+These functions work with variables instead of with vcells.
+
+** New functions for creating and defining `subr's and `gsubr's.
+
+The new functions more clearly distinguish between creating a subr (or
+gsubr) object and adding it to the current module.
+
+These new functions are available: scm_c_make_subr, scm_c_define_subr,
+scm_c_make_subr_with_generic, scm_c_define_subr_with_generic,
+scm_c_make_gsubr, scm_c_define_gsubr, scm_c_make_gsubr_with_generic,
+scm_c_define_gsubr_with_generic.
+
+** Deprecated functions: scm_make_subr, scm_make_subr_opt,
+   scm_make_subr_with_generic, scm_make_gsubr,
+   scm_make_gsubr_with_generic.
+
+Use the new ones from above instead.
+
+** C interface to the module system has changed.
+
+While we suggest that you avoid as many explicit module system
+operations from C as possible for the time being, the C interface has
+been made more similar to the high-level Scheme module system.
+
+*** New functions: scm_c_define_module, scm_c_use_module,
+    scm_c_export, scm_c_resolve_module.
+
+They mostly work like their Scheme namesakes.  scm_c_define_module
+takes a function that is called a context where the new module is
+current.
+
+*** Deprecated functions: scm_the_root_module, scm_make_module,
+    scm_ensure_user_module, scm_load_scheme_module.
+
+Use the new functions instead.
+
+** Renamed function: scm_internal_with_fluids becomes
+   scm_c_with_fluids.
+
+scm_internal_with_fluids is available as a deprecated function.
+
+** New function: scm_c_with_fluid.
+
+Just like scm_c_with_fluids, but takes one fluid and one value instead
+of lists of same.
+
+** Deprecated typedefs: long_long, ulong_long.
+
+They are of questionable utility and they pollute the global
+namespace.
+
+** New macro: SCM_BITS_LENGTH.
+
+The bit size of an SCM.
+
+** Deprecated typedef: scm_sizet
+
+It is of questionable utility now that Guile requires ANSI C, and is
+oddly named.
+
+** Deprecated typedefs: scm_port_rw_active, scm_port,
+   scm_ptob_descriptor, scm_debug_info, scm_debug_frame, scm_fport,
+   scm_option, scm_rstate, scm_rng, scm_array, scm_array_dim.
+
+Made more compliant with the naming policy by adding a _t at the end.
+
+** Deprecated functions: scm_mkbig, scm_big2num, scm_adjbig,
+   scm_normbig, scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl
+
+With the exception of the misterious scm_2ulong2big, they are still
+available under new names (scm_i_mkbig etc).  These functions are not
+intended to be used in user code.  You should avoid dealing with
+bignums directly, and should deal with numbers in general (which can
+be bignums).
+
+** New functions: scm_short2num, scm_ushort2num, scm_int2num,
+   scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
+   scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
+   scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
+   scm_num2size.
+
+These are conversion functions between the various ANSI C integral
+types and Scheme numbers.
+
+** New number validation macros:
+   SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]
+
+See above.
+
 \f
 Changes since Guile 1.3.4:
 
@@ -403,6 +1073,14 @@ space" for Guile headers.  This means that the compiler only is given
 Implements the interface to documentation strings associated with
 objects.
 
+** New module (ice-9 time)
+
+Provides a macro `time', which displays execution time of a given form.
+
+** New module (ice-9 history)
+
+Loading this module enables value history in the repl.
+
 * Changes to the stand-alone interpreter
 
 ** New command line option --debug
@@ -415,7 +1093,9 @@ This is useful when debugging your .guile init file or scripts.
 
 Usage: (help NAME) gives documentation about objects named NAME (a symbol)
        (help REGEXP) ditto for objects with names matching REGEXP (a string)
+       (help 'NAME) gives documentation for NAME, even if it is not an object
        (help ,EXPR) gives documentation for object returned by EXPR
+       (help (my module)) gives module commentary for `(my module)'
        (help) gives this text
 
 `help' searches among bindings exported from loaded modules, while
@@ -454,7 +1134,7 @@ Linux POSIX threads due to their use of the stack pointer to find the
 thread context.  This has now been fixed with a workaround which uses
 the pthreads to allocate the stack.
 
-** New primitives: `pkgdata-dir', `site-dir', `library-dir' 
+** New primitives: `pkgdata-dir', `site-dir', `library-dir'
 
 ** Positions of erring expression in scripts
 
@@ -494,11 +1174,6 @@ an exception with a key of 'unbound-variable instead of 'misc-error.
 ** The initial default output port is now unbuffered if it's using a
 tty device.  Previously in this situation it was line-buffered.
 
-** gc-thunk is deprecated
-
-gc-thunk will be removed in next release of Guile.  It has been
-replaced by after-gc-hook.
-
 ** New hook: after-gc-hook
 
 after-gc-hook takes over the role of gc-thunk.  This hook is run at
@@ -685,13 +1360,13 @@ Thus, the use of SCM_HOOK_NAME and scm_make_hook_with_name is deprecated.
 
 You can emulate this feature by using object properties.
 
-** Deprecated macros: SCM_INPORTP, SCM_OUTPORTP, SCM_CRDY, SCM_ICHRP, 
+** Deprecated macros: SCM_INPORTP, SCM_OUTPORTP, SCM_CRDY, SCM_ICHRP,
 SCM_ICHR, SCM_MAKICHR, SCM_SETJMPBUF, SCM_NSTRINGP, SCM_NRWSTRINGP,
 SCM_NVECTORP
 
 These macros will be removed in a future release of Guile.
 
-** The following types, functions and macros from numbers.h are deprecated:  
+** The following types, functions and macros from numbers.h are deprecated:
 scm_dblproc, SCM_UNEGFIXABLE, SCM_FLOBUFLEN, SCM_INEXP, SCM_CPLXP, SCM_REAL,
 SCM_IMAG, SCM_REALPART, scm_makdbl, SCM_SINGP, SCM_NUM2DBL, SCM_NO_BIGDIG
 
@@ -963,7 +1638,7 @@ now possible to use `defined?' to check whether the facility is
 available.
 
 ** Procedures which depend on the timezone should now give the correct
-result on systems which cache the TZ environment variable, even if TZ 
+result on systems which cache the TZ environment variable, even if TZ
 is changed without calling tzset.
 
 * Changes to the networking interfaces:
@@ -1473,7 +2148,7 @@ when the hook was created.
     in a regular expression will still match before a line-break or
     end-of-file.  The default is `regexp/noteol'.
 
-*** The expect-strings macro now uses a variable 
+*** The expect-strings macro now uses a variable
     `expect-strings-compile-flags' for the flags to be supplied to
     `make-regexp'.  The default is `regexp/newline', which was previously
     hard-coded.
@@ -1951,7 +2626,7 @@ string, and the source and destination areas may overlap; in all
 cases, the function behaves as if all the characters were copied
 simultanously.
 
-*** Extended functions: substring-move-left! substring-move-right! 
+*** Extended functions: substring-move-left! substring-move-right!
 
 These functions now correctly copy arbitrarily overlapping substrings;
 they are both synonyms for substring-move!.
@@ -1985,7 +2660,7 @@ Each option can have the following (PROPERTY VALUE) pairs:
   (value BOOL) --- If BOOL is #t, the option accepts a value; if
             it is #f, it does not; and if it is the symbol
             `optional', the option may appear in ARGS with or
-            without a value. 
+            without a value.
   (predicate FUNC) --- If the option accepts a value (i.e. you
             specified `(value #t)' for this option), then getopt
             will apply FUNC to the value, and throw an exception
@@ -2063,10 +2738,10 @@ So, for example:
              (single-char #\v)
              (value #f))
     (x-includes (single-char #\x))
-    (rnet-server (single-char #\y) 
+    (rnet-server (single-char #\y)
                  (predicate ,string?))))
 
-(getopt-long '("my-prog" "-vk" "/tmp" "foo1" "--x-includes=/usr/include" 
+(getopt-long '("my-prog" "-vk" "/tmp" "foo1" "--x-includes=/usr/include"
                "--rnet-server=lamprod" "--" "-fred" "foo2" "foo3")
                grammar)
 => ((() "foo1" "-fred" "foo2" "foo3")
@@ -2081,10 +2756,10 @@ It will be removed in a few releases.
 
 ** New syntax: lambda*
 ** New syntax: define*
-** New syntax: define*-public   
+** New syntax: define*-public
 ** New syntax: defmacro*
 ** New syntax: defmacro*-public
-Guile now supports optional arguments. 
+Guile now supports optional arguments.
 
 `lambda*', `define*', `define*-public', `defmacro*' and
 `defmacro*-public' are identical to the non-* versions except that
@@ -2093,17 +2768,17 @@ syntax (parentheses are literal, square brackets indicate grouping,
 and `*', `+' and `?' have the usual meaning):
 
    ext-param-list ::= ( [identifier]* [#&optional [ext-var-decl]+]?
-      [#&key [ext-var-decl]+ [#&allow-other-keys]?]? 
+      [#&key [ext-var-decl]+ [#&allow-other-keys]?]?
       [[#&rest identifier]|[. identifier]]? ) | [identifier]
 
-   ext-var-decl ::= identifier | ( identifier expression )  
+   ext-var-decl ::= identifier | ( identifier expression )
 
 The semantics are best illustrated with the following documentation
 and examples for `lambda*':
 
  lambda* args . body
    lambda extended for optional and keyword arguments
-   
+
  lambda* creates a procedure that takes optional arguments. These
  are specified by putting them inside brackets at the end of the
  paramater list, but before any dotted rest argument. For example,
@@ -2123,11 +2798,11 @@ and examples for `lambda*':
  Optional and keyword arguments can also be given default values
  which they take on when they are not present in a call, by giving a
  two-item list in place of an optional argument, for example in:
-   (lambda* (foo #&optional (bar 42) #&key (baz 73)) (list foo bar baz)) 
+   (lambda* (foo #&optional (bar 42) #&key (baz 73)) (list foo bar baz))
  foo is a fixed argument, bar is an optional argument with default
  value 42, and baz is a keyword argument with default value 73.
  Default value expressions are not evaluated unless they are needed
- and until the procedure is called.  
+ and until the procedure is called.
 
  lambda* now supports two more special parameter list keywords.
 
@@ -2433,7 +3108,7 @@ SIZE to the system.  The return value is a tag that is used in
 creating instances of the type.  If SIZE is 0, then no memory will
 be allocated when instances of the smob are created, and nothing
 will be freed by the default free function.
-    
+
 *** Function: void scm_set_smob_mark (long tc, SCM (*mark) (SCM))
 This function sets the smob marking procedure for the smob type
 specified by the tag TC. TC is the tag returned by
@@ -2818,7 +3493,7 @@ For example:
     the-scm-module: backtrace       #<primitive-procedure backtrace>
     the-scm-module: after-backtrace-hook    ()
     the-scm-module: has-shown-backtrace-hint?       #f
-    guile> 
+    guile>
 
 ** There are new functions and syntax for working with macros.
 
@@ -2850,7 +3525,7 @@ values are:
     The symbol `syntax' --- a macro created by procedure->syntax.
     The symbol `macro' --- a macro created by procedure->macro.
     The symbol `macro!' --- a macro created by procedure->memoizing-macro.
-    The boolean #f --- if OBJ is not a macro object.  
+    The boolean #f --- if OBJ is not a macro object.
 
 *** New function: (macro-name MACRO)
 Return the name of the macro object MACRO's procedure, as returned by
@@ -2868,7 +3543,7 @@ top-level environment.  TRANSFORMER is an expression evaluated in the
 resulting environment which must yield a procedure to use as the
 module's eval transformer: every expression evaluated in this module
 is passed to this function, and the result passed to the Guile
-interpreter. 
+interpreter.
 
 *** macro-eval! is removed.  Use local-eval instead.
 
@@ -2943,7 +3618,7 @@ Function: with-fluids* FLUIDS VALUES THUNK
 
     FLUIDS is a list of fluids and VALUES a corresponding list of
     values for these fluids.  Before THUNK gets called the values are
-    installed in the fluids and the old values of the fluids are 
+    installed in the fluids and the old values of the fluids are
     saved in the VALUES list.  When the flow of control leaves THUNK
     or reenters it, the values get swapped again.  You might think of
     this as a `safe-fluid-excursion'.  Note that the VALUES list is
@@ -3490,7 +4165,7 @@ Here is a small example that works on GNU/Linux:
 See the file `libguile/DYNAMIC-LINKING' for additional comments.
 
 ** The #/ syntax for module names is depreciated, and will be removed
-in a future version of Guile.  Instead of 
+in a future version of Guile.  Instead of
 
        #/foo/bar/baz
 
@@ -4113,7 +4788,7 @@ argument.
 
 ** Changes to I/O functions
 
-*** The functions `read', `primitive-load', `read-and-eval!', and 
+*** The functions `read', `primitive-load', `read-and-eval!', and
 `primitive-load-path' no longer take optional arguments controlling
 case insensitivity and a `#' parser.
 
@@ -4131,7 +4806,7 @@ syntax of Guile Scheme in a somewhat controlled way.
 
   The reader applies PROC to two arguments: CHAR and an input port.
 
-*** The new functions read-delimited and read-delimited! provide a 
+*** The new functions read-delimited and read-delimited! provide a
 general mechanism for doing delimited input on streams.
 
 (read-delimited DELIMS [PORT HANDLE-DELIM])
@@ -4250,7 +4925,7 @@ and `recvfrom!'.  They no longer accept a size for a second argument;
 you must pass a string to hold the received value.  They no longer
 return the buffer.  Instead, `recv' returns the length of the message
 received, and `recvfrom' returns a pair containing the packet's length
-and originating address. 
+and originating address.
 
 *** The file descriptor datatype has been removed, as have the
 `read-fd', `write-fd', `close', `lseek', and `dup' functions.
@@ -4376,17 +5051,17 @@ internet protocols:
 
   Component                 Accessor
   ========================= ===============
-  official service name     servent:name   
+  official service name     servent:name
   alias list               servent:aliases
-  port number              servent:port   
-  protocol to use          servent:proto  
+  port number              servent:port
+  protocol to use          servent:proto
 
 *** There are new accessors for the sockaddr structures returned by
 `accept', `getsockname', `getpeername', `recvfrom!':
 
   Component                                Accessor
   ======================================== ===============
-  address format (`family')                sockaddr:fam 
+  address format (`family')                sockaddr:fam
   path, for file domain addresses         sockaddr:path
   address, for internet domain addresses   sockaddr:addr
   TCP or UDP port, for internet                   sockaddr:port
@@ -4558,7 +5233,7 @@ command interpreter.  For details, see "Changes to the stand-alone
 interpreter" above.
 
 ** The new functions scm_get_meta_args and scm_count_argv help you
-implement the SCSH-style meta-argument, `\'.  
+implement the SCSH-style meta-argument, `\'.
 
 char **scm_get_meta_args (int ARGC, char **ARGV)
   If the second element of ARGV is a string consisting of a single
@@ -4566,7 +5241,7 @@ char **scm_get_meta_args (int ARGC, char **ARGV)
   named by the following argument, parse arguments from it, and return
   the spliced command line.  The returned array is terminated by a
   null pointer.
-  
+
   For details of argument parsing, see above, under "guile now accepts
   command-line arguments compatible with SCSH..."
 
@@ -4975,7 +5650,7 @@ Until then, gtcltk-lib provides trivial, low-maintenance functionality.
 \f
 Copyright information:
 
-Copyright (C) 1996,1997 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
 
    Permission is granted to anyone to make or distribute verbatim copies
    of this document as received, in any medium, provided that the