Fix dangling references to files that have been removed.
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 83c68c1..6cce9d2 100644 (file)
--- a/NEWS
+++ b/NEWS
 Guile NEWS --- history of user-visible changes.
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
 See the end for copying conditions.
 
-Please send Guile bug reports to bug-guile@gnu.org.
+Please send Guile bug reports to bug-guile@gnu.org.  Note that you
+must be subscribed to this list first, in order to successfully send a
+report to it.
 
-Each release reports the NEWS in the following sections:
+\f
+Changes in 1.9.0:
+
+* New modules (see the manual for details)
+
+** The `(ice-9 i18n)' module provides internationalization support
 
 * Changes to the distribution
+
+** Guile now uses Gnulib as a portability aid
+
 * Changes to the stand-alone interpreter
 * Changes to Scheme functions and syntax
-* Changes to the C interface 
+
+** A new 'memoize-symbol evaluator trap has been added.  This trap can
+be used for efficiently implementing a Scheme code coverage.
+
+** Duplicate bindings among used modules are resolved lazily.
+This slightly improves program startup times.
+
+** New thread cancellation and thread cleanup API
+See `cancel-thread', `set-thread-cleanup!', and `thread-cleanup'.
+
+* Changes to the C interface
+
+** Functions for handling `scm_option' now no longer require an argument
+indicating length of the `scm_t_option' array.
+
+
+\f
+Changes in 1.8.5 (since 1.8.4)
+
+* Infrastructure changes
+
+** Guile repository switched from CVS to Git
+
+The new repository can be accessed using
+"git-clone git://git.sv.gnu.org/guile.git", or can be browsed on-line at
+http://git.sv.gnu.org/gitweb/?p=guile.git .  See `README' for details.
+
+* New features (see the manual for details)
+
+** New `postfix' read option, for SRFI-88 keyword syntax
+** Some I/O primitives have been inlined, which improves I/O performance
+
+* Bugs fixed
+
+** `scm_add_slot ()' no longer segfaults (fixes bug #22369)
+** Fixed `(ice-9 match)' for patterns like `((_ ...) ...)'
+
+Previously, expressions like `(match '((foo) (bar)) (((_ ...) ...) #t))'
+would trigger an unbound variable error for `match:andmap'.
+
+** `(oop goops describe)' now properly provides the `describe' feature
+** Fixed `args-fold' from `(srfi srfi-37)'
+
+Previously, parsing short option names of argument-less options would
+lead to a stack overflow.
+
+** Fixed type-checking for the second argument of `eval'
+** Fixed `struct-ref' and `struct-set!' on "light structs"
+** Honor struct field access rights in GOOPS
+** Changed the storage strategy of source properties, which fixes a deadlock
+** Allow compilation of Guile-using programs in C99 mode with GCC 4.3 and later
+** Fixed build issue for GNU/Linux on IA64
+** Fixed build issues on NetBSD 1.6
+** Fixed build issue on Solaris 2.10 x86_64
+** Fixed build issue with DEC/Compaq/HP's compiler
+** Fixed `scm_from_complex_double' build issue on FreeBSD
+** Fixed `alloca' build issue on FreeBSD 6
+** Fixed shadowing of libc's <random.h> on Tru64, which broke compilation
+** Make sure all tests honor `$TMPDIR'
+
+* Changes to the distribution
+
+** New FAQ
+
+We've started collecting Frequently Asked Questions (FAQ), and will
+distribute these (with answers!) in future Guile releases.
+
+\f
+Changes in 1.8.4 (since 1.8.3)
+
+* Bugs fixed
+
+** CR (ASCII 0x0d) is (again) recognized as a token delimiter by the reader
+** Fixed a segmentation fault which occurred when displaying the
+backtrace of a stack with a promise object (made by `delay') in it.
+** Make `accept' leave guile mode while blocking
+** `scm_c_read ()' and `scm_c_write ()' now type-check their port argument
+** Fixed a build problem on AIX (use of func_data identifier)
+** Fixed a segmentation fault which occurred when hashx-ref or hashx-set! was
+called with an associator proc that returns neither a pair nor #f.
+** Secondary threads now always return a valid module for (current-module).
+** Avoid MacOS build problems caused by incorrect combination of "64"
+system and library calls.
+** `guile-snarf' now honors `$TMPDIR'
+** `guile-config compile' now reports CPPFLAGS used at compile-time
+** Fixed build with Sun Studio (Solaris 9)
+** Fixed wrong-type-arg errors when creating zero length SRFI-4
+uniform vectors on AIX.
+** Fixed a deadlock that occurs upon GC with multiple threads.
+** Fixed compile problem with GCC on Solaris and AIX (use of _Complex_I)
+** Fixed autotool-derived build problems on AIX 6.1.
+** Fixed NetBSD/alpha support
+** Fixed MacOS build problem caused by use of rl_get_keymap(_name)
+
+* New modules (see the manual for details)
+
+** `(srfi srfi-69)'
+
+* Documentation fixes and improvements
+
+** Removed premature breakpoint documentation
+
+The features described are not available in the series of 1.8.x
+releases, so the documentation was misleading and has been removed.
+
+** More about Guile's default *random-state* variable
+
+** GOOPS: more about how to use `next-method'
+
+* Changes to the distribution
+
+** Corrected a few files that referred incorrectly to the old GPL + special exception licence
+
+In fact Guile since 1.8.0 has been licensed with the GNU Lesser
+General Public License, and the few incorrect files have now been
+fixed to agree with the rest of the Guile distribution.
+
+** Removed unnecessary extra copies of COPYING*
+
+The distribution now contains a single COPYING.LESSER at its top level.
+
+\f
+Changes in 1.8.3 (since 1.8.2)
+
+* New modules (see the manual for details)
+
+** `(srfi srfi-35)'
+** `(srfi srfi-37)'
+
+* Bugs fixed
+
+** The `(ice-9 slib)' module now works as expected
+** Expressions like "(set! 'x #t)" no longer yield a crash
+** Warnings about duplicate bindings now go to stderr
+** A memory leak in `make-socket-address' was fixed
+** Alignment issues (e.g., on SPARC) in network routines were fixed
+** A threading issue that showed up at least on NetBSD was fixed
+** Build problems on Solaris and IRIX fixed
+
+* Implementation improvements
+
+** The reader is now faster, which reduces startup time
+** Procedures returned by `record-accessor' and `record-modifier' are faster
+
+
+\f
+Changes in 1.8.2 (since 1.8.1):
+
+* New procedures (see the manual for details)
+
+** set-program-arguments
+** make-vtable
+
+* Bugs fixed
+
+** Fractions were not `equal?' if stored in unreduced form.
+(A subtle problem, since printing a value reduced it, making it work.)
+** srfi-60 `copy-bit' failed on 64-bit systems
+** "guile --use-srfi" option at the REPL can replace core functions
+(Programs run with that option were ok, but in the interactive REPL
+the core bindings got priority, preventing SRFI replacements or
+extensions.)
+** `regexp-exec' doesn't abort() on #\nul in the input or bad flags arg
+** `kill' on mingw throws an error for a PID other than oneself
+** Procedure names are attached to procedure-with-setters
+** Array read syntax works with negative lower bound
+** `array-in-bounds?' fix if an array has different lower bounds on each index
+** `*' returns exact 0 for "(* inexact 0)"
+This follows what it always did for "(* 0 inexact)".
+** SRFI-19: Value returned by `(current-time time-process)' was incorrect
+** SRFI-19: `date->julian-day' did not account for timezone offset
+** `ttyname' no longer crashes when passed a non-tty argument
+** `inet-ntop' no longer crashes on SPARC when passed an `AF_INET' address
+** Small memory leaks have been fixed in `make-fluid' and `add-history'
+** GOOPS: Fixed a bug in `method-more-specific?'
+** Build problems on Solaris fixed
+** Build problems on HP-UX IA64 fixed
+** Build problems on MinGW fixed
+
+\f
+Changes in 1.8.1 (since 1.8.0):
+
+* LFS functions are now used to access 64-bit files on 32-bit systems.
+
+* New procedures (see the manual for details)
+
+** primitive-_exit - [Scheme] the-root-module
+** scm_primitive__exit - [C]
+** make-completion-function - [Scheme] (ice-9 readline)
+** scm_c_locale_stringn_to_number - [C]
+** scm_srfi1_append_reverse [C]
+** scm_srfi1_append_reverse_x [C]
+** scm_log - [C]
+** scm_log10 - [C]
+** scm_exp - [C]
+** scm_sqrt - [C]
+
+* New `(ice-9 i18n)' module (see the manual for details)
+
+* Bugs fixed
+
+** Build problems have been fixed on MacOS, SunOS, and QNX.
+
+** `strftime' fix sign of %z timezone offset.
+
+** A one-dimensional array can now be 'equal?' to a vector.
+
+** Structures, records, and SRFI-9 records can now be compared with `equal?'.
+
+** SRFI-14 standard char sets are recomputed upon a successful `setlocale'.
+
+** `record-accessor' and `record-modifier' now have strict type checks.
+
+Record accessor and modifier procedures now throw an error if the
+record type of the record they're given is not the type expected.
+(Previously accessors returned #f and modifiers silently did nothing).
+
+** It is now OK to use both autoload and use-modules on a given module.
+
+** `apply' checks the number of arguments more carefully on "0 or 1" funcs.
+
+Previously there was no checking on primatives like make-vector that
+accept "one or two" arguments.  Now there is.
+
+** The srfi-1 assoc function now calls its equality predicate properly.
+
+Previously srfi-1 assoc would call the equality predicate with the key
+last.  According to the SRFI, the key should be first.
+
+** A bug in n-par-for-each and n-for-each-par-map has been fixed.
+
+** The array-set! procedure no longer segfaults when given a bit vector.
+
+** Bugs in make-shared-array have been fixed.
+
+** string<? and friends now follow char<? etc order on 8-bit chars.
+
+** The format procedure now handles inf and nan values for ~f correctly.
+
+** exact->inexact should no longer overflow when given certain large fractions.
+
+** srfi-9 accessor and modifier procedures now have strict record type checks.
+
+This matches the srfi-9 specification.
+
+** (ice-9 ftw) procedures won't ignore different files with same inode number.
+
+Previously the (ice-9 ftw) procedures would ignore any file that had
+the same inode number as a file they had already seen, even if that
+file was on a different device.
 
 \f
-Changes since the 1.6.x series:
+Changes in 1.8.0 (changes since the 1.6.x series):
 
 * Changes to the distribution
 
@@ -34,10 +293,10 @@ headers.
 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.7".  The effective version
+so the current effective-version is "1.8".  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.7.
+i.e. /usr/share/guile/1.8.
 
 Providing an unchanging version number during a stable release for
 things like the versioned share directory can be particularly
@@ -63,8 +322,8 @@ the GC.
 The default is "pthreads", unless your platform doesn't have pthreads,
 in which case "null" threads are used.
 
-See the manual for details, nodes "Initialization", "Multi-Threading"
-and "Blocking".
+See the manual for details, nodes "Initialization", "Multi-Threading",
+"Blocking", and others.
 
 ** There is the new notion of 'discouraged' features.
 
@@ -84,42 +343,10 @@ the '--disable-discouraged' option.
 (debug-enable 'warn-deprecated) switches them on and (debug-disable
 'warn-deprecated) switches them off.
  
-** New module (ice-9 serialize):
-
-(serialize FORM1 ...) and (parallelize FORM1 ...) are useful when
-you don't trust the thread safety of most of your program, but
-where you have some section(s) of code which you consider can run
-in parallel to other sections.
-
-### move rest to manual
-
-They "flag" (with dynamic extent) sections of code to be of
-"serial" or "parallel" nature and have the single effect of
-preventing a serial section from being run in parallel with any
-serial section (including itself).
-
-Both serialize and parallelize can be nested.  If so, the
-inner-most construct is in effect.
-
-NOTE 1: A serial section can run in parallel with a parallel
-section.
-
-NOTE 2: If a serial section S is "interrupted" by a parallel
-section P in the following manner: S = S1 P S2, S2 is not
-guaranteed to be resumed by the same thread that previously
-executed S1.
-
-WARNING: Spawning new threads within a serial section have
-undefined effects.  It is OK, though, to spawn threads in unflagged
-sections of code where neither serialize or parallelize is in
-effect.
+** Support for SRFI 61, extended cond syntax for multiple values has
+   been added.
 
-A typical usage is when Guile is used as scripting language in some
-application doing heavy computations.  If each thread is
-encapsulated with a serialize form, you can then put a parallelize
-form around the code performing the heavy computations (typically a
-C code primitive), enabling the computations to run in parallel
-while the scripting code runs single-threadedly.
+This SRFI is always available.
 
 ** Support for require-extension, SRFI-55, has been added.
 
@@ -156,6 +383,13 @@ The official version is good enough now.
 Support for translating the documentation into HTML is now always
 provided.  Use 'make html'.
 
+** New module (ice-9 serialize):
+
+(serialize FORM1 ...) and (parallelize FORM1 ...) are useful when you
+don't trust the thread safety of most of your program, but where you
+have some section(s) of code which you consider can run in parallel to
+other sections.  See ice-9/serialize.scm for more information.
+
 ** The configure option '--disable-arrays' has been removed.
 
 Support for arrays and uniform numeric arrays is now always included
@@ -195,6 +429,21 @@ be used with '-e'.  For example, you can now write a script like
 
 * Changes to Scheme functions and syntax
 
+** Guardians have changed back to their original semantics
+
+Guardians now behave like described in the paper by Dybvig et al.  In
+particular, they no longer make guarantees about the order in which
+they return objects, and they can no longer be greedy.
+
+They no longer drop cyclic data structures.
+
+The C function scm_make_guardian has been changed incompatibly and no
+longer takes the 'greedy_p' argument.
+
+** New function hashx-remove!
+
+This function completes the set of 'hashx' functions.
+
 ** The concept of dynamic roots has been factored into continuation
    barriers and dynamic states.
 
@@ -224,7 +473,8 @@ array creation has been deprecated.  See the manual for more details.
 
 Some non-compatible changes have been made: 
  - characters can no longer be stored into byte arrays.
- - strings and bit vectors are no longer considered to be uniform vectors.
+ - strings and bit vectors are no longer considered to be uniform numeric 
+   vectors.
  - array-rank throws an error for non-arrays instead of returning zero.
  - array-ref does no longer accept non-arrays when no indices are given.
 
@@ -320,6 +570,25 @@ Now:
     guile> #: foo
     #:foo
 
+** The printing of symbols that might look like keywords can be
+   controlled.
+
+The new printer option 'quote-keywordish-symbols' controls how symbols
+are printed that have a colon as their first or last character.  The
+default now is to only quote a symbol with #{...}# when the read
+option 'keywords' is not '#f'.  Thus:
+
+    guile> (define foo (string->symbol ":foo"))
+    guile> (read-set! keywords #f)
+    guile> foo
+    :foo
+    guile> (read-set! keywords 'prefix)
+    guile> foo
+    #{:foo}#
+    guile> (print-set! quote-keywordish-symbols #f)
+    guile> foo
+    :foo
+
 ** 'while' now provides 'break' and 'continue'
 
 break and continue were previously bound in a while loop, but not
@@ -359,41 +628,6 @@ can add the line:
 
 to your .guile init file.
 
-### move rest to manual
-
-The syntax for the :duplicates option is:
-
-  :duplicates HANDLER-NAME | (HANDLER1-NAME HANDLER2-NAME ...)
-
-Specifying multiple handlers is useful since some handlers (such as
-replace) can defer conflict resolution to others.  Each handler is
-tried until a binding is selected.
-
-Currently available duplicates handlers are:
-
-  check                     report an error for bindings with a common name
-  warn              issue a warning for bindings with a common name
-  replace           replace bindings which have an imported replacement
-  warn-override-core issue a warning for imports which override core bindings
-                    and accept the override
-  first                     select the first encountered binding (override)
-  last              select the last encountered binding (override)
-
-These two are provided by the (oop goops) module:
-  
-  merge-generics     merge generic functions with a common name
-                    into an <extended-generic>
-  merge-accessors    merge accessors with a common name
-
-The default duplicates handler is:
-
-  (replace warn-override-core warn last)
-
-A recommended handler (which is likely to correspond to future Guile
-behavior) can be installed with:
-
-  (default-duplicate-binding-handler '(replace warn-override-core check))
-
 ** New define-module option: :replace
 
 :replace works as :export, but, in addition, marks the binding as a
@@ -419,74 +653,12 @@ When two imported bindings conflict and they are both generic
 functions, the two functions can now be merged automatically.  This is
 activated with the 'duplicates' handler 'merge-generics'.
 
-### move the rest to the manual
-
-It is sometimes tempting to use GOOPS accessors with short names.
-For example, it is tempting to use the name `x' for the x-coordinate
-in vector packages.
-
-Assume that we work with a graphical package which needs to use two
-independent vector packages for 2D and 3D vectors respectively.  If
-both packages export `x' we will encounter a name collision.
-
-This can now be resolved automagically with the duplicates handler
-`merge-generics' which gives the module system license to merge all
-generic functions sharing a common name:
-
-(define-module (math 2D-vectors)
-  :use-module (oop goops)
-  :export (x y ...))
-                 
-(define-module (math 3D-vectors)
-  :use-module (oop goops)
-  :export (x y z ...))
-
-(define-module (my-module)
-  :use-module (math 2D-vectors)
-  :use-module (math 3D-vectors)
-  :duplicates merge-generics)
-
-x in (my-module) will now share methods with x in both imported
-modules.
-
-There will, in fact, now be three distinct generic functions named
-`x': x in (2D-vectors), x in (3D-vectors), and x in (my-module).  The
-last function will be an <extended-generic>, extending the previous
-two functions.
-
-Let's call the imported generic functions the "ancestor functions".  x
-in (my-module) is, in turn, a "descendant function" of the imported
-functions, extending its ancestors.
-
-For any generic function G, the applicable methods are selected from
-the union of the methods of the descendant functions, the methods of G
-itself and the methods of the ancestor functions.
-
-This, ancestor functions share methods with their descendants and vice
-versa.  This implies that x in (math 2D-vectors) can will share the
-methods of x in (my-module) and vice versa, while x in (math 2D-vectors)
-doesn't share the methods of x in (math 3D-vectors), thus preserving
-modularity.
-
-Sharing is dynamic, so that adding new methods to a descendant implies
-adding it to the ancestor.
-
-If duplicates checking is desired in the above example, the following
-form of the :duplicates option can be used instead:
-
-  :duplicates (merge-generics check)
-
 ** 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.
 
-** New feature, 'futures': future, make-future, future-ref
-
-Futures are like promises, but begin execution immediately in a new
-thread.  See the "Futures" section in the reference manual.
-
 ** New threading functions: parallel, letpar, par-map, and friends
 
 These are convenient ways to run calculations in parallel in new
@@ -495,11 +667,11 @@ threads.  See "Parallel forms" in the manual for details.
 ** New function 'try-mutex'.
 
 This function will attempt to lock a mutex but will return immediately
-instead if blocking and indicate failure.
+instead of blocking and indicate failure.
 
 ** Waiting on a condition variable can have a timeout.
 
-The funtion 'wait-condition-variable' now takes a third, optional
+The function 'wait-condition-variable' now takes a third, optional
 argument that specifies the point in time where the waiting should be
 aborted.
 
@@ -623,7 +795,7 @@ equal to a floating point number.  For example:
     (inexact->exact 1.234)
     => 694680242521899/562949953421312
 
-When you want the old behavior, use 'round' explicitely:
+When you want the old behavior, use 'round' explicitly:
 
     (inexact->exact (round 1.234))
     => 1
@@ -685,17 +857,12 @@ 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.
 
-* The functions make-keyword-from-dash-symbol and keyword-dash-symbol
-  have been discouraged.
+** The functions make-keyword-from-dash-symbol and keyword-dash-symbol
+   have been discouraged.
 
 They are relics from a time where a keyword like #:foo was used
 directly as a Tcl option "-foo" and thus keywords were internally
@@ -704,9 +871,45 @@ without the dash.
 
 Use symbol->keyword and keyword->symbol instead.
 
+** The `cheap' debug option is now obsolete
+
+Evaluator trap calls are now unconditionally "cheap" - in other words,
+they pass a debug object to the trap handler rather than a full
+continuation.  The trap handler code can capture a full continuation
+by using `call-with-current-continuation' in the usual way, if it so
+desires.
+
+The `cheap' option is retained for now so as not to break existing
+code which gets or sets it, but setting it now has no effect.  It will
+be removed in the next major Guile release.
+
+** Evaluator trap calls now support `tweaking'
+
+`Tweaking' means that the trap handler code can modify the Scheme
+expression that is about to be evaluated (in the case of an
+enter-frame trap) or the value that is being returned (in the case of
+an exit-frame trap).  The trap handler code indicates that it wants to
+do this by returning a pair whose car is the symbol 'instead and whose
+cdr is the modified expression or return value.
 
 * Changes to the C interface
 
+** The functions scm_hash_fn_remove_x and scm_hashx_remove_x no longer
+   take a 'delete' function argument.
+
+This argument makes no sense since the delete function is used to
+remove a pair from an alist, and this must not be configurable.
+
+This is an incompatible change.
+
+** The GH interface is now subject to the deprecation mechanism
+
+The GH interface has been deprecated for quite some time but now it is
+actually removed from Guile when it is configured with
+--disable-deprecated.
+
+See the manual "Transitioning away from GH" for more information.
+
 ** A new family of functions for converting between C values and
    Scheme values has been added.
 
@@ -942,54 +1145,66 @@ prevent a potential memory leak:
   {
     char *mem;
 
-    scm_frame_begin (0);
+    scm_dynwind_begin (0);
 
     mem = scm_malloc (100);
-    scm_frame_unwind_handler (free, mem, SCM_F_WIND_EXPLICITELY);
+    scm_dynwind_unwind_handler (free, mem, SCM_F_WIND_EXPLICITLY);
 
     /* MEM would leak if BAR throws an error.
-       SCM_FRAME_UNWIND_HANDLER frees it nevertheless.  
+       SCM_DYNWIND_UNWIND_HANDLER frees it nevertheless.  
      */
 
     bar ();
   
-    scm_frame_end ();
+    scm_dynwind_end ();
 
-    /* Because of SCM_F_WIND_EXPLICITELY, MEM will be freed by 
-       SCM_FRAME_END as well. 
+    /* Because of SCM_F_WIND_EXPLICITLY, MEM will be freed by 
+       SCM_DYNWIND_END as well. 
     */
   }
 
-For full documentation, see the node "Frames" in the manual.
+For full documentation, see the node "Dynamic Wind" in the manual.
 
-** New function scm_frame_free
+** New function scm_dynwind_free
 
-This function calls 'free' on a given pointer when a frame is left.
-Thus the call to scm_frame_unwind_handler above could be replaced with
-simply scm_frame_free (mem).
+This function calls 'free' on a given pointer when a dynwind context
+is left.  Thus the call to scm_dynwind_unwind_handler above could be
+replaced with simply scm_dynwind_free (mem).
 
-** New way to block and unblock asyncs
+** 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 functions scm_dynwind_block_asyncs and scm_dynwind_unblock_asyncs
 
 In addition to scm_c_call_with_blocked_asyncs you can now also use
-scm_frame_block_asyncs in a 'frame' (see above).  Likewise for
-scm_c_call_with_unblocked_asyncs and scm_frame_unblock_asyncs.
+scm_dynwind_block_asyncs in a 'dynwind context' (see above).  Likewise for
+scm_c_call_with_unblocked_asyncs and scm_dynwind_unblock_asyncs.
 
 ** The macros SCM_DEFER_INTS, SCM_ALLOW_INTS, SCM_REDEFER_INTS,
    SCM_REALLOW_INTS have been deprecated.
 
 They do no longer fulfill their original role of blocking signal
 delivery.  Depending on what you want to achieve, replace a pair of
-SCM_DEFER_INTS and SCM_ALLOW_INTS with a frame that locks a mutex,
-blocks asyncs, or both.
+SCM_DEFER_INTS and SCM_ALLOW_INTS with a dynwind context that locks a
+mutex, blocks asyncs, or both.  See node "Critical Sections" in the
+manual.
+
+** 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 way to temporarily set the current input, output or error ports
 
-C code can now use scm_frame_current_<foo>_port in a 'frame' (see
-above).  <foo> is one of "input", "output" or "error".
+C code can now use scm_dynwind_current_<foo>_port in a 'dynwind
+context' (see above).  <foo> is one of "input", "output" or "error".
 
 ** New way to temporarily set fluids
 
-C code can now use scm_frame_fluid in a 'frame' (see
+C code can now use scm_dynwind_fluid in a 'dynwind context' (see
 above) to temporarily set the value of a fluid.
 
 ** New types scm_t_intmax and scm_t_uintmax.
@@ -1054,17 +1269,6 @@ arguments are now passed directly:
 
 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
@@ -1173,13 +1377,11 @@ function as the callback instead of a SCM value.
 
 Use scm_std_select, scm_std_sleep, scm_std_usleep instead.
 
-** SCM_DEFER_INTS and SCM_ALLOW_INTS have been deprecated.
-
-Use, for example, scm_frame_critical_section to mark critical
-sections.
+** The GC can no longer be blocked.
 
-SCM_REDEFER_INTS and SCM_REALLOW_INTS are deprecated as well, of
-course.
+The global flags scm_gc_heap_lock and scm_block_gc have been removed.
+The GC can now run (partially) concurrently with other code and thus
+blocking it is not well defined.
 
 ** Many definitions have been removed that were previously deprecated.
 
@@ -1215,6 +1417,16 @@ 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,
 SCM_CHARS, SCM_LENGTH, SCM_SET_STRING_CHARS, SCM_SET_STRING_LENGTH.
 
+* Changes to bundled modules
+
+** (ice-9 debug)
+
+Using the (ice-9 debug) module no longer automatically switches Guile
+to use the debugging evaluator.  If you want to switch to the
+debugging evaluator (which is needed for backtrace information if you
+hit an error), please add an explicit "(debug-enable 'debug)" to your
+code just after the code to use (ice-9 debug).
+
 \f
 Changes since Guile 1.4:
 
@@ -1537,7 +1749,7 @@ 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.
+library and initialize it explicitly.
 
 The shared libraries themselves should be installed in the usual
 places for shared libraries, with names like "libguile-foo-bar".
@@ -7096,7 +7308,7 @@ Until then, gtcltk-lib provides trivial, low-maintenance functionality.
 \f
 Copyright information:
 
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2006 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