guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] branch master updated: Update NEWS


From: Andy Wingo
Subject: [Guile-commits] branch master updated: Update NEWS
Date: Mon, 13 Jan 2020 14:31:22 -0500

This is an automated email from the git hooks/post-receive script.

wingo pushed a commit to branch master
in repository guile.

The following commit(s) were added to refs/heads/master by this push:
     new dfa4e98  Update NEWS
dfa4e98 is described below

commit dfa4e984329a0f1a424a29a02c86867eee76e2f8
Author: Andy Wingo <address@hidden>
AuthorDate: Mon Jan 13 20:30:00 2020 +0100

    Update NEWS
    
    * NEWS: Fold incremental alpha entries into a cumulative 3.0.0 entry.
---
 NEWS | 145 ++++++++++++++++++++++++++-----------------------------------------
 1 file changed, 56 insertions(+), 89 deletions(-)

diff --git a/NEWS b/NEWS
index a561c85..6c520cf 100644
--- a/NEWS
+++ b/NEWS
@@ -5,95 +5,7 @@ See the end for copying conditions.
 Please send Guile bug reports to address@hidden.
 
 
-Changes since alpha 2.9.9 (since 2.9.8):
-
-* Notable changes
-
-** `define-module' #:autoload no longer pulls in the whole module
-
-One of the ways that a module can use another is "autoloads".  For
-example:
-
-  (define-module (a) #:autoload (b) (make-b))
-
-In this example, module `(b)' will only be imported when the `make-b'
-identifier is referenced.  However besides the imprecision about when a
-given binding is actually referenced, this mechanism used to cause the
-whole imported module to become available, not just the specified
-bindings.  This has now been changed to only import the specified bindings.
-
-This is a backward-incompatible change.  The fix is to mention all
-bindings of interest in the autoload clause.  Feedback is welcome.
-
-** `guard' no longer unwinds the stack for clause tests
-
-SRFI-34, and then R6RS and R7RS, defines a `guard' form that is a
-shorthand for `with-exception-handler'.  The cond-like clauses for the
-exception handling are specified to run with the continuation of the
-`guard', while any re-propagation of the exception happens with the
-continuation of the original `raise'.
-
-In practice, this means that one needs full `call-with-continuation' to
-implement the specified semantics, to be able to unwind the stack to the
-cond clauses, then rewind if none match.  This is not only quite
-expensive, it is also error-prone as one usually doesn't want to rewind
-dynamic-wind guards in an exceptional situation.  Additionally, as
-continuations bind tightly to the current thread, it makes it impossible
-to migrate a subcomputation with a different thread if a `guard' is live
-on the stack, as is done in Fibers.
-
-Guile now works around these issues by running the test portion of the
-guard expressions within the original `raise' continuation, and only
-unwinding once a test matches.  This is an incompatible semantic change
-but we think the situation is globally much better, and we expect that
-very few people will be affected by the change.
-
-** Improve SRFI-43 vector-fill!
-
-SRFI-43 vector-fill! now has the same performance whether an optional
-range is provided or not, and is also provided in core.  As a side
-effect, vector-fill! and vector_fill_x no longer work on non-vector
-rank-1 arrays.  Such cases were handled incorrectly before; for example,
-prior to this change:
-
-  (define a (make-vector 10 'x))
-  (define b (make-shared-array a (lambda (i) (list (* 2 i))) 5))
-  (vector-fill! b 'y)
-
-  => #1(y y y x x)
-
-This is now an error.  Instead, use array-fill!.
-
-** Fix compilation on 32-bit targets
-
-A compile error introduced in 2.9.3 prevented compilation on 32-bit
-targets.  This has been fixed.
-
-** Fix a bug in closure conversion
-
-Thanks for Stefan Israelsson Tampe for the report.
-
-** Fix omission in R7RS support
-
-Somewhat embarrassingly, the R7RS support added earlier in 2.9 failed to
-include an implementation of `define-library'.  This oversight has been
-corrected :)
-
-** Optionally allow duplicate field names in core records
-
-See the new #:allow-duplicate-field-names? keyword argument to
-`make-record-type' in the manual, for more.  This restores a needed
-feature to R6RS records.
-
-** Fix default value of thread-local fluids
-
-Before, `fluid-ref' on an unbound thread-local fluid was returning #f
-instead of the default value of the fluid.  Thanks to Rob Browning for
-the fix!
-
-
-
-Changes in alpha 2.9.x (since the stable 2.2 series):
+Changes in 3.0.0 (since the stable 2.2 series):
 
 * Notable changes
 
@@ -197,6 +109,29 @@ via `throw'.  These will probably migrate over time to
 
 See "Exceptions" in the manual, for full details on the new API.
 
+** `guard' no longer unwinds the stack for clause tests
+
+SRFI-34, and then R6RS and R7RS, defines a `guard' form that is a
+shorthand for `with-exception-handler'.  The cond-like clauses for the
+exception handling are specified to run with the continuation of the
+`guard', while any re-propagation of the exception happens with the
+continuation of the original `raise'.
+
+In practice, this means that one needs full `call-with-continuation' to
+implement the specified semantics, to be able to unwind the stack to the
+cond clauses, then rewind if none match.  This is not only quite
+expensive, it is also error-prone as one usually doesn't want to rewind
+dynamic-wind guards in an exceptional situation.  Additionally, as
+continuations bind tightly to the current thread, it makes it impossible
+to migrate a subcomputation with a different thread if a `guard' is live
+on the stack, as is done in Fibers.
+
+Guile now works around these issues by running the test portion of the
+guard expressions within the original `raise' continuation, and only
+unwinding once a test matches.  This is an incompatible semantic change
+but we think the situation is globally much better, and we expect that
+very few people will be affected by the change.
+
 ** Optimization of top-level bindings within a compilation unit
 
 At optimization level 2 and above, Guile's compiler is now allowed to
@@ -278,6 +213,38 @@ objects.  This means that users who #:re-export an 
imported binding that
 was already marked as #:replace by another module will now see warnings,
 as they need to use #:re-export-and-replace instead.
 
+** `define-module' #:autoload no longer pulls in the whole module
+
+One of the ways that a module can use another is "autoloads".  For
+example:
+
+  (define-module (a) #:autoload (b) (make-b))
+
+In this example, module `(b)' will only be imported when the `make-b'
+identifier is referenced.  However besides the imprecision about when a
+given binding is actually referenced, this mechanism used to cause the
+whole imported module to become available, not just the specified
+bindings.  This has now been changed to only import the specified bindings.
+
+This is a backward-incompatible change.  The fix is to mention all
+bindings of interest in the autoload clause.  Feedback is welcome.
+
+** Improve SRFI-43 vector-fill!
+
+SRFI-43 vector-fill! now has the same performance whether an optional
+range is provided or not, and is also provided in core.  As a side
+effect, vector-fill! and vector_fill_x no longer work on non-vector
+rank-1 arrays.  Such cases were handled incorrectly before; for example,
+prior to this change:
+
+  (define a (make-vector 10 'x))
+  (define b (make-shared-array a (lambda (i) (list (* 2 i))) 5))
+  (vector-fill! b 'y)
+
+  => #1(y y y x x)
+
+This is now an error.  Instead, use array-fill!.
+
 ** `iota' in core and SRFI-1 `iota' are the same
 
 Previously, `iota' in core would not accept start and step arguments and



reply via email to

[Prev in Thread] Current Thread [Next in Thread]