This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=6119a9059543e1985b8dd504e70d7a690db62ec2
The branch, master has been updated
via 6119a9059543e1985b8dd504e70d7a690db62ec2 (commit)
via cfb42b4c8a391446fc6c2a8c41dfd8ad0489fda7 (commit)
via e15f3e3328dc79ceeb8dacbfba6fed056ae7bfef (commit)
from 9de674e6e63ed1576c5b0660ac709f430822dbcf (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -
commit 6119a9059543e1985b8dd504e70d7a690db62ec2
Author: Andy Wingo
Date: Fri May 2 17:47:20 2014 +0200
CSE does scalar replacement of aggregates
* module/language/cps/effects-analysis.scm (effects-clobber): New
helper.
(length): Only depend on &cdr.
(synthesize-definition-effects!): New interface.
* module/language/cps/cse.scm (compute-available-expressions): Don't
count out constructors here -- we'll do that below.
(compute-defs): Add a comment.
(compute-equivalent-subexpressions): Synthesize getter calls at
constructor/setter sites, so that (set-car! x y) can cause a
future (car x) to just reference y. The equiv-labels set now stores
the defined vars, so there is no need for the defs vector.
(cse, apply-cse): Adapt to compute-equivalent-subexpressions change.
commit cfb42b4c8a391446fc6c2a8c41dfd8ad0489fda7
Author: Andy Wingo
Date: Fri May 2 17:29:39 2014 +0200
More inlinable effects-analysis procedures
* module/language/cps/effects-analysis.scm (exclude-effects)
(effect-free?, constant?): Define to be inlinable.
(allocate-struct/immediate): Add effects.
commit e15f3e3328dc79ceeb8dacbfba6fed056ae7bfef
Author: Andy Wingo
Date: Fri May 2 11:13:34 2014 +0200
Update NEWS
* NEWS: Update.
---
Summary of changes:
NEWS | 65 +++---
module/language/cps/cse.scm | 110 ++
module/language/cps/effects-analysis.scm | 51 +-
3 files changed, 184 insertions(+), 42 deletions(-)
diff --git a/NEWS b/NEWS
index 2c13fb7..408f3f9 100644
--- a/NEWS
+++ b/NEWS
@@ -25,13 +25,28 @@ Notably, weak hash tables are now transparently
thread-safe. Ports are
also thread-safe; see "New interfaces" below for details on the changes
to the C interface.
+** Better space-safety
+
+It used to be the case that, when calling a Scheme procedure, the
+procedure and arguments were always preserved against garbage
+collection. This is no longer the case; Guile is free to collect the
+procedure and arguments if they become unreachable, or to re-use their
+slots for other local variables. Guile still offers good-quality
+backtraces by determining the procedure being called from the
+instruction pointer instead of from the value in slot 0 of an
+application frame, and by using a live variable map that allows the
+debugger to know which locals are live at all points in a frame.
+
** Off-main-thread finalization
Following Guile 2.0.6's change to invoke finalizers via asyncs, Guile
2.2 takes the additional step of invoking finalizers from a dedicated
finalizer thread, if threads are enabled. This avoids concurrency
issues between finalizers and application code, and also speeds up
-finalization.
+finalization. If your application's finalizers are not robust to the
+presence of threads, see "Foreign Objects" in the manual for information
+on how to disable automatic finalization and instead run finalizers
+manually.
** Better locale support in Guile scripts
@@ -65,6 +80,12 @@ loop that collect its results in reverse order only to
re-reverse them
at the end, now you can just recurse without worrying about stack
overflows.
+** Out-of-memory improvements
+
+Instead of aborting, failures to allocate memory will now raise an
+unwind-only `out-of-memory' exception, and cause the corresponding
+`catch' expression to run garbage collection in order to free up memory.
+
* Performance improvements
** Faster programs via new virtual machine
@@ -95,9 +116,11 @@ as well. See "Object File Format" in the manual, for full
details.
Guile's compiler now uses a Continuation-Passing Style (CPS)
intermediate language, allowing it to reason easily about temporary
values and control flow. Examples of optimizations that this permits
-are optimal contification, dead code elimination, parallel moves with at
-most one temporary, and allocation of stack slots using precise liveness
-information. For more, see "Continuation-Passing Style" in the manual.
+are optimal contificat