*** empty log message ***
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 565ccd5..e189ca5 100644 (file)
--- a/NEWS
+++ b/NEWS
-Guile NEWS --- history of user-visible changes.  -*- text -*-
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+Guile NEWS --- history of user-visible changes.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send Guile bug reports to bug-guile@gnu.org.
 \f
+Changes since the stable branch:
+
+* Changes to the distribution
+
+** Guile now provide and uses an "effective" version number.
+
+Guile now provides scm_effective_version and effective-version
+functions which return the "effective" version number.  This is just
+the normal full version string without the final micro-version number,
+so the current effective-version is "1.6".  The effective version
+should remain unchanged during a stable series, and should be used for
+items like the versioned share directory name
+i.e. /usr/share/guile/1.6.
+
+Providing an unchanging version number during a stable release for
+things like the versioned share directory can be particularly
+important for Guile "add-on" packages, since it provides a directory
+that they can install to that won't be changed out from under them
+with each micro release during a stable series.
+
+** There are two new thread implementation options: "null" and "coop-pthreads".
+
+When you configure "--with-threads=null", you will get the usual
+threading API (call-with-new-thread, make-mutex, etc), but you can't
+actually create new threads.  Also, "--with-threads=no" is now
+equivalent to "--with-threads=null".  This means that the thread API
+is always present, although you might not be able to create new
+threads.
+
+The "coop-pthread" (or shorter: "copt") thread implementation will use
+portable POSIX threads but will restrict them so that only one thread
+can execute 'in Guile' at any one time.  This option will give you the
+same basic behavior as the old "coop" option, but hopefully in a more
+portable way.
+
+The default is now "coop-pthread", unless your platform doesn't have
+pthreads, in which case "null" threads are used.
+
+** Guile now includes its own version of libltdl.
+
+We now use a modified version of libltdl that allows us to make
+improvements to it without having to rely on libtool releases.
+
+* Changes to the standalone interpreter
+
+** New command line option `--no-debug'.
+
+Specifying `--no-debug' on the command line will keep the debugging
+evaluator turned off, even for interactive sessions.
+
+** User-init file ~/.guile is now loaded with the debugging evaluator.
+
+Previously, the normal evaluator would have been used.  Using the
+debugging evaluator gives better error messages.
+
+* Changes to Scheme functions and syntax
+
+** New function: effective-version
+
+Returns the "effective" version number.  This is just the normal full
+version string without the final micro-version number.  See "Changes
+to the distribution" above.
+
+** Futures
+
+Futures is a way of providing an alternative evaluation policy, very
+similar in principle to "promises".  Like promises, futures allow the
+main process to continue instantly, but while promises postpone
+evaluation ("lazy" evaluation) until the value is requested, futures
+immediately starts evaluation in a parallel thread.
+
+Futures are good when you want to express that "I'll need the value of
+this computation sometime soon" and want to allow processing to go on
+in the background until that time arrives.
+
+** New syntax: future FORM
+
+Begin evaluation of FORM in a parallel thread and return the future
+immediately.  (Akin to 'delay'.)
+
+** New procedure: future-ref FUTURE
+
+Return the computed value of the future.  Wait if the computation is
+not finished.  (Akin to 'force'.)
+
+** New syntax: parallel FORM ...
+
+Compute the results of FORM ... in parallel (in a separate thread for
+each form) and return them as multiple values.
+
+** New syntax: letpar ((VAR EXP) ...) BODYFORM ...
+
+Like 'let' but evaluates the binding expressions EXP ... in parallel.
+
+** New functions: par-map, par-for-each PROC ARGLIST ...
+
+Like 'map' and 'for-each' but evaluate the procedure PROC in a
+separate thread for each (set of) argument(s).  All applications are
+guaranteed to be completed before the procedure returns.
+
+** New functions: n-par-map, n-par-for-each N PROC ARGLIST ...
+
+Like 'par-map' and 'par-for-each' but evaluate the procedure PROC in N
+threads.  This is useful when PROC uses large amounts of resources
+and/or the argument list(s) is/are long so that one thread per (set
+of) argument(s) would consume too much system resources.  On a
+dual-CPU system, N = 4 would often be a good choice.
+
+** Fair mutexes and condition variables
+
+Fair mutexes and condition variables have been added.  The fairness
+means that scheduling is arranged to give as equal time shares as
+possible and that threads are awakened in a first-in-first-out
+manner.  This is not guaranteed with standard mutexes and condition
+variables.
+
+In addition, fair mutexes are recursive.  Locking a fair mutex that
+you have already locked will succeed.  Every call to lock-mutex must
+be matched with a call to unlock-mutex.  Only the last call to
+unlock-mutex will actually unlock the mutex.
+
+A fair condition variable must be used together with a fair mutex,
+just as a standard condition variable must be used together with a
+standard mutex.
+
+** New functions: make-fair-mutex, make-fair-condition-variable'
+
+Make a new fair mutex and a new fair condition variable respectively.
+
+** New function 'try-mutex'.
+
+This function will attempt to lock a mutex but will return immediately
+instead if blocking and indicate failure.
+
+** Waiting on a condition variable can have a timeout.
+
+The funtion 'wait-condition-variable' now takes a third, optional
+argument that specifies the point in time where the waiting should be
+aborted.
+
+** New function 'broadcast-condition-variable'.
+
+** New functions 'all-threads' and 'current-thread'.
+
+** Signals and system asyncs work better with threads.
+
+The function 'sigaction' now takes a fourth, optional, argument that
+specifies the thread that the handler should run in.  When the
+argument is omitted, the handler will run in the thread that called
+'sigaction'.
+
+Likewise, 'system-async-mark' takes a second, optional, argument that
+specifies the thread that the async should run in.  When it is
+omitted, the async will run in the thread that called
+'system-async-mark'.
+
+C code can use the new functions scm_sigaction_for_thread and
+scm_system_async_mark_for_thread to pass the new thread argument.
+
+** The function 'system-async' is deprecated.
+
+You can now pass any zero-argument procedure to 'system-async-mark'.
+The function 'system-async' will just return its argument unchanged
+now.
+
+** New functions 'call-with-blocked-asyncs' and
+   'call-with-unblocked-asyncs'
+
+The expression (call-with-blocked-asyncs PROC) will call PROC and will
+block execution of system asyncs for the current thread by one level
+while PROC runs.  Likewise, call-with-unblocked-asyncs will call a
+procedure and will unblock the execution of system asyncs by one
+level for the current thread.
+
+Only system asyncs are affected by these functions.
+
+** The functions 'mask-signals' and 'unmask-signals' are deprecated.
+
+Use 'call-with-blocked-asyncs' or 'call-with-unblocked-asyncs'
+instead.  Those functions are easier to use correctly and can be
+nested.
+
+** New function 'unsetenv'.
+
+** New macro 'define-syntax-public'.
+
+It works like 'define-syntax' and also exports the defined macro (but
+only on top-level).
+
+** There is support for Infinity and NaNs.
+
+Following PLT Scheme, Guile can now work with infinite numbers, and
+'not-a-numbers'.
+
+There is new syntax for numbers: "+inf.0" (infinity), "-inf.0"
+(negative infinity), "+nan.0" (not-a-number), and "-nan.0" (same as
+"+nan.0").  These numbers are inexact and have no exact counterpart.
+
+Dividing by an inexact zero returns +inf.0 or -inf.0, depending on the
+sign of the dividend.  The infinities are integers, and they answer #t
+for both 'even?' and 'odd?'. The +nan.0 value is not an integer and is
+not '=' to itself, but '+nan.0' is 'eqv?' to itself.
+
+For example
+
+    (/ 1 0.0)
+    => +inf.0
+
+    (/ 0 0.0)
+    => +nan.0
+
+    (/ 0)
+    ERROR: Numerical overflow
+
+Two new predicates 'inf?' and 'nan?' can be used to test for the
+special values.
+
+** Inexact zero can have a sign.
+
+Guile can now distinguish between plus and minus inexact zero, if your
+platform supports this, too.  The two zeros are equal according to
+'=', but not according to 'eqv?'.  For example
+
+    (- 0.0)
+    => -0.0
+
+    (= 0.0 (- 0.0))
+    => #t
+
+    (eqv? 0.0 (- 0.0))
+    => #f
+
+** We now have uninterned symbols.
+
+The new function 'make-symbol' will return a uninterned symbol.  This
+is a symbol that is unique and is guaranteed to remain unique.
+However, uninterned symbols can not yet be read back in.
+
+Use the new function 'symbol-interned?' to check whether a symbol is
+interned or not.
+
+** pretty-print has more options.
+
+The function pretty-print from the (ice-9 pretty-print) module can now
+also be invoked with keyword arguments that control things like
+maximum output width.  See its online documentation.
+
+** Variables have no longer a special behavior for `equal?'.
+
+Previously, comparing two variables with `equal?' would recursivly
+compare their values.  This is no longer done.  Variables are now only
+`equal?' if they are `eq?'.
+
+** `(begin)' is now valid.
+
+You can now use an empty `begin' form.  It will yield #<unspecified>
+when evaluated and simply be ignored in a definition context.
+
+** Removed: substring-move-left!, substring-move-right!
+
+Use `substring-move!' instead.
+
+** Deprecated: procedure->macro
+
+Change your code to use either procedure->memoizing-macro or, probably better,
+to use r5rs macros.  Also, be aware that macro expansion will not be done
+during evaluation, but prior to evaluation.
+
+** Soft ports now allow a `char-ready?' procedure
+
+The vector argument to `make-soft-port' can now have a length of
+either 5 or 6.  (Previously the length had to be 5.)  The optional 6th
+element is interpreted as an `input-waiting' thunk -- i.e. a thunk
+that returns the number of characters that can be read immediately
+without the soft port blocking.
+
+** New debugging feature: breakpoints.
+
+Guile now has breakpoints.  For details see the `Debugging Features'
+chapter in the reference manual.
+
+** Deprecated: undefine
+
+There is no replacement for undefine.
+
+* Changes to the C interface
+
+** New function: scm_effective_version
+
+Returns the "effective" version number.  This is just the normal full
+version string without the final micro-version number.  See "Changes
+to the distribution" above.
+
+** The function scm_call_with_new_thread has a new prototype.
+
+Instead of taking a list with the thunk and handler, these two
+arguments are now passed directly:
+
+    SCM scm_call_with_new_thread (SCM thunk, SCM handler);
+
+This is an incompatible change.
+
+** The value 'scm_mask_ints' is no longer writable.
+
+Previously, you could set scm_mask_ints directly.  This is no longer
+possible.  Use scm_c_call_with_blocked_asyncs and
+scm_c_call_with_unblocked_asyncs instead.
+
+** New functions scm_c_call_with_blocked_asyncs and
+   scm_c_call_with_unblocked_asyncs
+
+Like scm_call_with_blocked_asyncs etc. but for C functions.
+
+** New snarfer macro SCM_DEFINE_PUBLIC.
+
+This is like SCM_DEFINE, but also calls scm_c_export for the defined
+function in the init section.
+
+** The snarfer macro SCM_SNARF_INIT is now officially supported.
+
+** New macros SCM_VECTOR_REF and SCM_VECTOR_SET.
+
+Use these in preference to SCM_VELTS.
+
+** The SCM_VELTS macros now returns a read-only vector. For writing,
+use the new macros SCM_WRITABLE_VELTS or SCM_VECTOR_SET.  The use of
+SCM_WRITABLE_VELTS is discouraged, though.
+
+** Garbage collector rewrite.
+
+The garbage collector is cleaned up a lot, and now uses lazy
+sweeping. This is reflected in the output of (gc-stats); since cells
+are being freed when they are allocated, the cells-allocated field
+stays roughly constant.
+
+For malloc related triggers, the behavior is changed. It uses the same
+heuristic as the cell-triggered collections.  It may be tuned with the
+environment variables GUILE_MIN_YIELD_MALLOC.  This is the percentage
+for minimum yield of malloc related triggers. The default is 40.
+GUILE_INIT_MALLOC_LIMIT sets the initial trigger for doing a GC. The
+default is 200 kb.
+
+Debugging operations for the freelist have been deprecated, along with
+the C variables that control garbage collection.  The environment
+variables GUILE_MAX_SEGMENT_SIZE, GUILE_INIT_SEGMENT_SIZE_2,
+GUILE_INIT_SEGMENT_SIZE_1, and GUILE_MIN_YIELD_2 should be used.
+
+** The function scm_definedp has been renamed to scm_defined_p
+
+The name scm_definedp is deprecated.
+
+** The struct scm_cell has been renamed to scm_t_cell
+
+This is in accordance to Guile's naming scheme for types.  Note that
+the name scm_cell is now used for a function that allocates and
+initializes a new cell (see below).
+
+** New functions for memory management
+
+A new set of functions for memory management has been added since the
+old way (scm_must_malloc, scm_must_free, etc) was error prone and
+indeed, Guile itself contained some long standing bugs that could
+cause aborts in long running programs.
+
+The new functions are more symmetrical and do not need cooperation
+from smob free routines, among other improvements.
+
+The new functions are scm_malloc, scm_realloc, scm_calloc, scm_strdup,
+scm_strndup, scm_gc_malloc, scm_gc_calloc, scm_gc_realloc,
+scm_gc_free, scm_gc_register_collectable_memory, and
+scm_gc_unregister_collectable_memory.  Refer to the manual for more
+details and for upgrading instructions.
+
+The old functions for memory management have been deprecated.  They
+are: scm_must_malloc, scm_must_realloc, scm_must_free,
+scm_must_strdup, scm_must_strndup, scm_done_malloc, scm_done_free.
+
+** New function: scm_str2string
+
+This function creates a scheme string from a 0-terminated C string.  The input
+string is copied.
+
+** Declarations of exported features are marked with SCM_API.
+
+Every declaration of a feature that belongs to the exported Guile API
+has been marked by adding the macro "SCM_API" to the start of the
+declaration.  This macro can expand into different things, the most
+common of which is just "extern" for Unix platforms.  On Win32, it can
+be used to control which symbols are exported from a DLL.
+
+If you `#define SCM_IMPORT' before including <libguile.h>, SCM_API
+will expand into "__declspec (dllimport) extern", which is needed for
+linking to the Guile DLL in Windows.
+
+There are also SCM_RL_IMPORT, QT_IMPORT, SCM_SRFI1314_IMPORT, and
+SCM_SRFI4_IMPORT, for the corresponding libraries.
+
+** SCM_NEWCELL and SCM_NEWCELL2 have been deprecated.
+
+Use the new functions scm_cell and scm_double_cell instead.  The old macros
+had problems because with them allocation and initialization was separated and
+the GC could sometimes observe half initialized cells.  Only careful coding by
+the user of SCM_NEWCELL and SCM_NEWCELL2 could make this safe and efficient.
+
+** CHECK_ENTRY, CHECK_APPLY and CHECK_EXIT have been deprecated.
+
+Use the variables scm_check_entry_p, scm_check_apply_p and scm_check_exit_p
+instead.
+
+** SRCBRKP has been deprecated.
+
+Use scm_c_source_property_breakpoint_p instead.
+
+** Deprecated: scm_makmacro
+
+Change your code to use either scm_makmmacro or, probably better, to use r5rs
+macros.  Also, be aware that macro expansion will not be done during
+evaluation, but prior to evaluation.
+
+** Removed from scm_root_state: def_inp, def_outp, def_errp, together
+with corresponding macros scm_def_inp, scm_def_outp and scm_def_errp.
+These were undocumented and unused copies of the standard ports at the
+time that Guile was initialised.  Normally the current ports should be
+used instead, obtained from scm_current_input_port () etc.  If an
+application needs to retain earlier ports, it should save them in a
+gc-protected location.
+
+** Removed compile time option MEMOIZE_LOCALS
+
+Now, caching of local variable positions during memoization is mandatory.
+However, the option to disable the caching has most probably not been used
+anyway.
+
+** Removed compile time option SCM_RECKLESS
+
+Full number of arguments checking of closures is mandatory now.  However, the
+option to disable the checking has most probably not been used anyway.
+
+** Removed compile time option SCM_CAUTIOUS
+
+Full number of arguments checking of closures is mandatory now.  However, the
+option to disable the checking has most probably not been used anyway.
+
+** Deprecated configure flags USE_THREADS and GUILE_ISELECT
+
+Previously, when the C preprocessor macro USE_THREADS was defined,
+libguile included a thread API.  This API is now always included, even
+when threads are not really supported.  Thus, you don't need to test
+for USE_THREADS.
+
+Analogously, GUILE_ISELECT was defined when the function
+scm_internal_select was provided by Guile.  This function is now
+always defined, and GUILE_ISELECT with it.
+
+** Removed definitions:  scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify,
+s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify, scm_m_0_ify, s_1_ify,
+scm_m_1_ify, scm_debug_newcell,        scm_debug_newcell2, scm_tc16_allocated,
+SCM_SET_SYMBOL_HASH, SCM_IM_NIL_IFY, SCM_IM_T_IFY, SCM_IM_0_COND,
+SCM_IM_0_IFY, SCM_IM_1_IFY, SCM_GC_SET_ALLOCATED, scm_debug_newcell,
+scm_debug_newcell2, scm_substring_move_left_x, scm_substring_move_right_x,
+long_long, ulong_long, scm_sizet, SCM_WNA, 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, moddata, registered_mods,
+scm_register_module_xxx, scm_registered_modules,
+scm_clear_registered_modules, scm_wta, *top-level-lookup-closure*,
+scm_top_level_lookup_closure_var, scm_system_transformer, scm_eval_3,
+scm_eval2, SCM_SETAND_CAR, SCM_SETOR_CAR, SCM_SETAND_CDR, SCM_SETOR_CDR,
+SCM_FREEP, SCM_NFREEP, SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK,
+SCM_GCTYP16, SCM_GCCDR, scm_remember, scm_protect_object,
+scm_unprotect_object, root_module_lookup_closure, scm_sym_app,
+scm_sym_modules, module_prefix, make_modules_in_var,
+beautify_user_module_x_var, try_module_autoload_var, scm_module_full_name,
+scm_the_root_module, scm_make_module, scm_ensure_user_module,
+scm_load_scheme_module, scm_port, scm_ptob_descriptor, scm_port_rw_active,
+scm_close_all_ports_except, scm_rstate, scm_rng, scm_i_rstate,
+SCM_SLOPPY_STRINGP, SCM_RWSTRINGP, SCM_STRING_UCHARS, SCM_STRING_CHARS,
+scm_read_only_string_p, scm_makstr, scm_makfromstr,
+scm_make_shared_substring, scm_tc7_substring, SCM_SLOPPY_CONSP,
+SCM_SLOPPY_NCONSP, scm_tc7_ssymbol, scm_tc7_msymbol, scm_tcs_symbols,
+sym_huh, scm_variable_set_name_hint, scm_builtin_variable, SCM_VARVCELL,
+SCM_UDVARIABLEP, SCM_DEFVARIABLEP, scm_internal_with_fluids,
+scm_make_gsubr, scm_make_gsubr_with_generic, scm_create_hook, list*,
+SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4, SCM_LIST5,
+SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9, scm_listify, scm_sloppy_memq,
+scm_sloppy_memv, scm_sloppy_member, scm_end_of_file_key,
+scm_read_and_eval_x, scm_mkbig, scm_big2inum, scm_adjbig, scm_normbig,
+scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl, SCM_FIXNUM_BIT,
+scm_subr_entry, SCM_SUBR_DOC, scm_make_subr_opt, scm_make_subr,
+scm_make_subr_with_generic, setjmp_type, setjmp_type,
+scm_call_catching_errors, scm_make_smob_type_mfpe, scm_set_smob_mfpe,
+scm_strprint_obj, scm_read_0str, scm_eval_0str, SCM_CHARS, SCM_UCHARS,
+SCM_SETCHARS, SCM_SLOPPY_SUBSTRP, SCM_SUBSTR_STR, SCM_SUBSTR_OFFSET,
+SCM_LENGTH_MAX, SCM_LENGTH, SCM_SETLENGTH, SCM_ROSTRINGP, SCM_ROLENGTH,
+SCM_ROCHARS, SCM_ROUCHARS, SCM_SUBSTRP, SCM_COERCE_SUBSTR, scm_strhash,
+scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
+scm_intern_obarray_soft, scm_intern_obarray, scm_intern, scm_intern0,
+scm_sysintern, scm_sysintern0, scm_sysintern0_no_module_lookup,
+scm_symbol_value0, scm_string_to_obarray_symbol, scm_intern_symbol,
+scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
+scm_symbol_bound_p, scm_symbol_set_x, scm_gentemp,
+scm_init_symbols_deprecated, s_vector_set_length_x, scm_vector_set_length_x,
+scm_contregs, scm_debug_info, scm_debug_frame, SCM_DSIDEVAL, SCM_OPDIRP,
+scm_fport, scm_option, SCM_CONST_LONG, SCM_VCELL, SCM_GLOBAL_VCELL,
+SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT, scm_srcprops, scm_srcprops_chunk,
+scm_info_frame, scm_stack, scm_array, scm_array_dim, SCM_ARRAY_CONTIGUOUS,
+SCM_HUGE_LENGTH, SCM_FUNC_NAME, SCM_WTA, RETURN_SCM_WTA,
+SCM_VALIDATE_NUMBER_COPY, SCM_VALIDATE_NUMBER_DEF_COPY,
+SCM_VALIDATE_STRINGORSUBSTR, SCM_VALIDATE_ROSTRING,
+SCM_VALIDATE_ROSTRING_COPY, SCM_VALIDATE_NULLORROSTRING_COPY,
+SCM_VALIDATE_RWSTRING, SCM_VALIDATE_OPDIR, DIGITS, scm_small_istr2int,
+scm_istr2int, scm_istr2flo, scm_istring2number, scm_istr2int,
+scm_istr2flo, scm_istring2number, scm_vtable_index_vcell, scm_si_vcell,
+SCM_ECONSP, SCM_NECONSP, SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL,
+SCM_GLOC_VAL_LOC, scm_make_gloc, scm_gloc_p, scm_tc16_variable
+
 Changes since Guile 1.4:
 
 * Changes to the distribution
 
-** New SRFI modules:
+** A top-level TODO file is included.
+
+** Guile now uses a versioning scheme similar to that of the Linux kernel.
+
+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.
+
+** New preprocessor definitions are available for checking versions.
+
+version.h now #defines SCM_MAJOR_VERSION, SCM_MINOR_VERSION, and
+SCM_MICRO_VERSION to the appropriate integer values.
+
+** 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.
+
+** Guile is much more likely to work on 64-bit architectures.
+
+Guile now compiles and passes "make check" with only two UNRESOLVED GC
+cases on Alpha and ia64 based machines now.  Thanks to John Goerzen
+for the use of a test machine, and thanks to Stefan Jahn for ia64
+patches.
+
+** New functions: setitimer and getitimer.
+
+These implement a fairly direct interface to the libc functions of the
+same name.
+
+** The #. reader extension is now disabled by default.
+
+For safety reasons, #. evaluation is disabled by default.  To
+re-enable it, set the fluid read-eval? to #t.  For example:
+
+  (fluid-set! read-eval? #t)
+
+but make sure you realize the potential security risks involved.  With
+read-eval?  enabled, reading a data file from an untrusted source can
+be dangerous.
+
+** New SRFI modules have been added:
+
+SRFI-0 `cond-expand' is now supported in Guile, without requiring
+using a module.
+
+(srfi srfi-1) is a library containing many useful pair- and list-processing
+  procedures.
 
 (srfi srfi-2) exports and-let*.
 
+(srfi srfi-4) implements homogeneous numeric vector datatypes.
+
 (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.
@@ -20,17 +601,48 @@ Changes since Guile 1.4:
 
 (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 the-last-stack fluid.  This fluid can be useful during debugger
-inspection or when re-throwing an error.
+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)
 
@@ -40,7 +652,7 @@ 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)
@@ -50,55 +662,8 @@ On systems that support it, there is also a compatibility module named
   (oop goops composite-slot)
 
 The Guile Object Oriented Programming System (GOOPS) has been
-integrated into Guile.
-
-Type
-
-  (use-modules (oop goops))
-
-access GOOPS bindings.
-
-We're now ready to try some basic GOOPS functionality.
-
-Generic functions
-
-  (define-method (+ (x <string>) (y <string>))
-    (string-append x y))
-
-  (+ 1 2) --> 3
-  (+ "abc" "de") --> "abcde"
-
-User-defined types
-
-  (define-class <2D-vector> ()
-    (x #:init-value 0 #:accessor x-component #:init-keyword #:x)
-    (y #:init-value 0 #:accessor y-component #:init-keyword #:y))
-
-  (define-method write ((obj <2D-vector>) port)
-    (display (format #f "<~S, ~S>" (x-component obj) (y-component obj))
-            port))
-
-  (define v (make <2D-vector> #:x 3 #:y 4))
-  v --> <3, 4>
-
-  (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))))
-
-  (+ v v) --> <6, 8>
-
-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>
-
-  (is-a? v <2D-vector>) --> #t
-
-See further in the GOOPS manual and tutorial in the `doc' directory,
-in info (goops.info) and texinfo formats.
+integrated into Guile.  For further information, consult the GOOPS
+manual and tutorial in the `doc' directory.
 
 ** New module (ice-9 rdelim).
 
@@ -119,21 +684,33 @@ future.
 Alternatively, if guile-scsh is installed, the (scsh rdelim) module
 can be used for similar functionality.
 
-** New module (ice-9 match)
+** New module (ice-9 rw)
+
+This is a subset of the (scsh rw) module from guile-scsh.  Currently
+it defines two procedures:
+
+*** New function: read-string!/partial str [port_or_fdes [start [end]]]
+
+     Read characters from a port or file descriptor into a string STR.
+     A port must have an underlying file descriptor -- a so-called
+     fport.  This procedure is scsh-compatible and can efficiently read
+     large strings.
+
+*** New function: write-string/partial str [port_or_fdes [start [end]]]
 
-This module includes Andrew K. Wright's pattern matcher:
+     Write characters from a string STR to a port or file descriptor.
+     A port must have an underlying file descriptor -- a so-called
+     fport.  This procedure is mostly compatible and can efficiently
+     write large strings.
 
-(use-modules (ice-9 match))
+** New module (ice-9 match)
 
-(match '(+ 1 2)
-  (('+ x) x)
-  (('+ x y) `(add ,x ,y))
-  (('- x y) `(sub ,x ,y)))  => (add 1 2)
+This module includes Andrew K. Wright's pattern matcher.  See
+ice-9/match.scm for brief description or
 
-See ice-9/match.scm for brief description or
-http://www.star-lab.com/wright/code.html for complete documentation.
+    http://www.star-lab.com/wright/code.html
 
-This module requires SLIB to be installed and available from Guile.
+for complete documentation.
 
 ** New module (ice-9 buffered-input)
 
@@ -167,12 +744,51 @@ manuals.
 
 See the README file in the `doc' directory for more details.
 
+** There are a couple of examples in the examples/ directory now.
+
 * Changes to the stand-alone interpreter
 
-** Evaluation of "()", the empty list, is now an error.
+** New command line option `--use-srfi'
+
+Using this option, SRFI modules can be loaded on startup and be
+available right from the beginning.  This makes programming portable
+Scheme programs easier.
+
+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.
+
+Example:
+$ guile --use-srfi=8,13
+guile> (receive (x z) (values 1 2) (+ 1 2))
+3
+guile> (string-pad "bla" 20)
+"                 bla"
+
+** Guile now always starts up in the `(guile-user)' module.
+
+Previously, scripts executed via the `-s' option would run in the
+`(guile)' module and the repl would run in the `(guile-user)' module.
+Now every user action takes place in the `(guile-user)' module by
+default.
+
+* Changes to Scheme functions and syntax
+
+** Character classifiers work for non-ASCII characters.
+
+The predicates `char-alphabetic?', `char-numeric?',
+`char-whitespace?', `char-lower?', `char-upper?' and `char-is-both?'
+no longer check whether their arguments are ASCII characters.
+Previously, a character would only be considered alphabetic when it
+was also ASCII, for example.
 
-Previously, you could for example write (cons 1 ()); now you need to
-be more explicit and write (cons 1 '()).
+** Previously deprecated Scheme functions have been removed:
+
+  tag - no replacement.
+  fseek - replaced by seek.
+  list* - replaced by cons*.
 
 ** It's now possible to create modules with controlled environments
 
@@ -184,26 +800,48 @@ Example:
 (eval '(+ 1 2) m) --> 3
 (eval 'load m) --> ERROR: Unbound variable: load
 
-* Changes to Scheme functions and syntax
-
-** The empty combination is no longer valid 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
-libraries to satisfy requests for a module.  For example, the module
+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.
-What you should do instead now is to write a small Scheme file that
-explicitly calls `dynamic-link' to load the shared library and
-`dynamic-call' to initialize it.
+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".
@@ -212,20 +850,29 @@ For example, place this into a file "foo/bar.scm"
 
     (define-module (foo bar))
 
-    (dynamic-call "foobar_init" (dynamic-link "libguile-foo-bar"))
+    (load-extension "libguile-foo-bar" "foobar_init")
 
-The file name passed to `dynamic-link' should not contain an
-extension.  It will be provided automatically.
+** 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 now 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'.
+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 particularily
+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
@@ -242,17 +889,79 @@ 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 behaviour, the forms `define-module',
+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.
 
+Also, `export' will no longer silently re-export bindings imported
+from a used module.  It will emit a `deprecation' warning and will
+cease to perform any re-export in the next version.  If you actually
+want to re-export bindings, use the new `re-export' in place of
+`export'.  The new `re-export' will not make copies of variables when
+rexporting them, as `export' did wrongly.
+
+** Module system now allows selection and renaming of imported bindings
+
+Previously, when using `use-modules' or the `#:use-module' clause in
+the `define-module' form, all the bindings (association of symbols to
+values) for imported modules were added to the "current module" on an
+as-is basis.  This has been changed to allow finer control through two
+new facilities: selection and renaming.
+
+You can now select which of the imported module's bindings are to be
+visible in the current module by using the `:select' clause.  This
+clause also can be used to rename individual bindings.  For example:
+
+  ;; import all bindings no questions asked
+  (use-modules (ice-9 common-list))
+
+  ;; import four bindings, renaming two of them;
+  ;; the current module sees: every some zonk-y zonk-n
+  (use-modules ((ice-9 common-list)
+                :select (every some
+                         (remove-if     . zonk-y)
+                        (remove-if-not . zonk-n))))
+
+You can also programmatically rename all selected bindings using the
+`:renamer' clause, which specifies a proc that takes a symbol and
+returns another symbol.  Because it is common practice to use a prefix,
+we now provide the convenience procedure `symbol-prefix-proc'.  For
+example:
+
+  ;; import four bindings, renaming two of them specifically,
+  ;; and all four w/ prefix "CL:";
+  ;; the current module sees: CL:every CL:some CL:zonk-y CL:zonk-n
+  (use-modules ((ice-9 common-list)
+                :select (every some
+                         (remove-if     . zonk-y)
+                        (remove-if-not . zonk-n))
+                :renamer (symbol-prefix-proc 'CL:)))
+
+  ;; import four bindings, renaming two of them specifically,
+  ;; and all four by upcasing.
+  ;; the current module sees: EVERY SOME ZONK-Y ZONK-N
+  (define (upcase-symbol sym)
+    (string->symbol (string-upcase (symbol->string sym))))
+
+  (use-modules ((ice-9 common-list)
+                :select (every some
+                         (remove-if     . zonk-y)
+                        (remove-if-not . zonk-n))
+                :renamer upcase-symbol))
+
+Note that programmatic renaming is done *after* individual renaming.
+Also, the above examples show `use-modules', but the same facilities are
+available for the `#:use-module' clause of `define-module'.
+
+See manual for more info.
+
 ** 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 
+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.
@@ -294,17 +1003,17 @@ 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.
 
-** Escape procedures created by call-with-current-continuation now
-accept any number of arguments, as required by R5RS.
+** Continuations created by call-with-current-continuation now accept
+any number of arguments, as required by R5RS.
 
-** New function `call-with-deprecation'
+** New function `issue-deprecation-warning'
 
-Call a thunk, displaying a deprecation message at the first call:
+This function is used to display the deprecation messages that are
+controlled by GUILE_WARN_DEPRECATION as explained in the README.
 
   (define (id x)
-    (call-with-deprecation "`id' is deprecated.  Use `identity' instead."
-      (lambda ()
-       (identity x))))
+    (issue-deprecation-warning "`id' is deprecated.  Use `identity' instead.")
+    (identity x))
 
   guile> (id 1)
   ;; `id' is deprecated.  Use `identity' instead.
@@ -312,6 +1021,13 @@ Call a thunk, displaying a deprecation message at the first call:
   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'
 
 This function returns a new `procedure with setter' P that can be used
@@ -336,19 +1052,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
@@ -368,58 +1071,15 @@ 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
-
-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: 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.  It will:
-
-        * attempt to fill the entire string, unless the START and/or
-          END arguments are supplied.  i.e., START defaults to 0 and
-          END defaults to `(string-length str)'
-
-        * use the current input port if PORT_OR_FDES is not supplied.
-
-        * read any characters that are currently available, without
-          waiting for the rest (short reads are possible).
-
-        * wait for as long as it needs to for the first character to
-          become available, unless the port is in non-blocking mode
-
-        * return `#f' if end-of-file is encountered before reading any
-          characters, otherwise return the number of characters read.
-
-        * return 0 if the port is in non-blocking mode and no characters
-          are immediately available.
-
-        * return 0 if the request is for 0 bytes, with no end-of-file
-          check
+    (define (bar)
+      ...)
 
 ** New function: object->string OBJ
 
@@ -436,12 +1096,11 @@ 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.  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.
+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
 
@@ -524,27 +1183,45 @@ Return the argument.
 
 ** 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
+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)) =>
+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,
@@ -576,9 +1253,150 @@ If you have old code using the old syntax, import
 
   (use-modules (oop goops old-define-method) (oop goops))
 
-* Changes to the gh_ interface
+** Deprecated function: builtin-variable
+   Removed function: builtin-bindings
 
-* Changes to the scm_ interface
+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.
+
+** Bugfixes for (ice-9 getopt-long)
+
+This module is now tested using test-suite/tests/getopt-long.test.
+The following bugs have been fixed:
+
+*** Parsing for options that are specified to have `optional' args now checks
+if the next element is an option instead of unconditionally taking it as the
+option arg.
+
+*** An error is now thrown for `--opt=val' when the option description
+does not specify `(value #t)' or `(value optional)'.  This condition used to
+be accepted w/o error, contrary to the documentation.
+
+*** The error message for unrecognized options is now more informative.
+It used to be "not a record", an artifact of the implementation.
+
+*** The error message for `--opt' terminating the arg list (no value), when
+`(value #t)' is specified, is now more informative.  It used to be "not enough
+args".
+
+*** "Clumped" single-char args now preserve trailing string, use it as arg.
+The expansion used to be like so:
+
+    ("-abc5d" "--xyz") => ("-a" "-b" "-c" "--xyz")
+
+Note that the "5d" is dropped.  Now it is like so:
+
+    ("-abc5d" "--xyz") => ("-a" "-b" "-c" "5d" "--xyz")
+
+This enables single-char options to have adjoining arguments as long as their
+constituent characters are not potential single-char options.
+
+** (ice-9 session) procedure `arity' now works with (ice-9 optargs) `lambda*'
+
+The `lambda*' and derivative forms in (ice-9 optargs) now set a procedure
+property `arglist', which can be retrieved by `arity'.  The result is that
+`arity' can give more detailed information than before:
+
+Before:
+
+       guile> (use-modules (ice-9 optargs))
+       guile> (define* (foo #:optional a b c) a)
+       guile> (arity foo)
+       0 or more arguments in `lambda*:G0'.
+
+After:
+
+        guile> (arity foo)
+        3 optional arguments: `a', `b' and `c'.
+        guile> (define* (bar a b #:key c d #:allow-other-keys) a)
+        guile> (arity bar)
+        2 required arguments: `a' and `b', 2 keyword arguments: `c'
+        and `d', other keywords allowed.
+        guile> (define* (baz a b #:optional c #:rest r) a)
+        guile> (arity baz)
+        2 required arguments: `a' and `b', 1 optional argument: `c',
+        the rest in `r'.
+
+* Changes to the C interface
+
+** Types have been renamed from scm_*_t to scm_t_*.
+
+This has been done for POSIX sake.  It reserves identifiers ending
+with "_t".  What a concept.
+
+The old names are still available with status `deprecated'.
+
+** scm_t_bits (former scm_bits_t) is now a unsigned type.
+
+** Deprecated features 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_makfromstr
+
+Use scm_mem2string instead.
+
+** 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 functions: scm_call_0, scm_call_1, scm_call_2, scm_call_3
+
+Call a procedure with the indicated number of arguments.
+
+Example:
+
+  scm_call_1 (proc, arg1);
+
+** New functions: scm_apply_0, scm_apply_1, scm_apply_2, scm_apply_3
+
+Call a procedure with the indicated number of arguments and a list
+of arguments.
+
+Example:
+
+  scm_apply_1 (proc, arg1, args);
+
+** New functions: scm_list_1, scm_list_2, scm_list_3, scm_list_4, scm_list_5
+
+Create a list of the given number of elements.
+
+** Renamed function: scm_listify has been replaced by scm_list_n.
+
+** Deprecated macros: SCM_LIST0, SCM_LIST1, SCM_LIST2, SCM_LIST3, SCM_LIST4,
+SCM_LIST5, SCM_LIST6, SCM_LIST7, SCM_LIST8, SCM_LIST9.
+
+Use functions scm_list_N instead.
 
 ** New function: scm_c_read (SCM port, void *buffer, scm_sizet size)
 
@@ -634,7 +1452,7 @@ 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, 
+** New functions: scm_remember_upto_here_1, scm_remember_upto_here_2,
 scm_remember_upto_here
 
 These functions replace the function scm_remember.
@@ -665,26 +1483,26 @@ of this variable is (and has been) not fully safe anyway.
 
 Use these instead of SCM_LENGTH_MAX.
 
-** New macros:  SCM_CONTINUATION_LENGTH, SCM_CCLO_LENGTH, SCM_STACK_LENGTH, 
+** 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_STRING_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, SCM_UCHARS, SCM_ROCHARS, SCM_ROUCHARS or
 SCM_VELTS.
 
-** New macros:  SCM_SET_BIGNUM_BASE, SCM_SET_STRING_CHARS, 
+** 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
 
@@ -700,9 +1518,9 @@ Use instead of SCM_COERCE_SUBSTR.
 
 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, 
+** 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,
@@ -722,7 +1540,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.
@@ -769,10 +1587,6 @@ 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
 
@@ -796,6 +1610,139 @@ Use scm_object_to_string instead.
 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.
+
+** 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 mysterious 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).
+
+** Change in behavior: scm_num2long, scm_num2ulong
+
+The scm_num2[u]long functions don't any longer accept an inexact
+argument.  This change in behavior is motivated by concordance with
+R5RS: It is more common that a primitive doesn't want to accept an
+inexact for an exact.
+
+** New functions: scm_short2num, scm_ushort2num, scm_int2num,
+   scm_uint2num, scm_size2num, scm_ptrdiff2num, scm_num2short,
+   scm_num2ushort, scm_num2int, scm_num2uint, scm_num2ptrdiff,
+   scm_num2size.
+
+These are conversion functions between the various ANSI C integral
+types and Scheme numbers.  NOTE: The scm_num2xxx functions don't
+accept an inexact argument.
+
+** New functions: scm_float2num, scm_double2num,
+   scm_num2float, scm_num2double.
+
+These are conversion functions between the two ANSI C float types and
+Scheme numbers.
+
+** New number validation macros:
+   SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,INT,UINT}[_DEF]
+
+See above.
+
+** New functions: scm_gc_protect_object, scm_gc_unprotect_object
+
+These are just nicer-named old scm_protect_object and
+scm_unprotect_object.
+
+** Deprecated functions: scm_protect_object, scm_unprotect_object
+
+** New functions: scm_gc_[un]register_root, scm_gc_[un]register_roots
+
+These functions can be used to register pointers to locations that
+hold SCM values.
+
+** Deprecated function: scm_create_hook.
+
+Its sins are: misleading name, non-modularity and lack of general
+usefulness.
+
 \f
 Changes since Guile 1.3.4:
 
@@ -906,7 +1853,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
@@ -945,7 +1894,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
 
@@ -985,11 +1934,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
@@ -1176,13 +2120,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
 
@@ -1454,7 +2398,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:
@@ -1964,7 +2908,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.
@@ -2442,7 +3386,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!.
@@ -2476,7 +3420,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
@@ -2554,10 +3498,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")
@@ -2572,10 +3516,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
@@ -2584,17 +3528,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,
@@ -2614,11 +3558,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.
 
@@ -2924,7 +3868,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
@@ -3309,7 +4253,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.
 
@@ -3341,7 +4285,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
@@ -3359,7 +4303,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.
 
@@ -3434,7 +4378,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
@@ -3981,7 +4925,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
 
@@ -4604,7 +5548,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.
 
@@ -4622,7 +5566,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])
@@ -4741,7 +5685,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.
@@ -4867,17 +5811,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
@@ -5049,7 +5993,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
@@ -5057,7 +6001,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..."
 
@@ -5466,7 +6410,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
@@ -5483,4 +6427,3 @@ Local variables:
 mode: outline
 paragraph-separate: "[         \f]*$"
 end:
-