*** empty log message ***
[bpt/guile.git] / NEWS
diff --git a/NEWS b/NEWS
index 9e571ae..458e9c3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -121,6 +121,11 @@ 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.
 
+** Support for SRFI 61, extended cond syntax for multiple valuesm has
+   been added.
+
+This SRFI is always available.
+
 ** Support for require-extension, SRFI-55, has been added.
 
 The SRFI-55 special form `require-extension' has been added.  It is
@@ -195,6 +200,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.
 
@@ -320,6 +340,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
@@ -685,17 +724,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 +738,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.
 
@@ -1213,6 +1283,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: