[Top][All Lists]

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

[Guile-commits] 01/01: Update NEWS for 2.2.3

From: Andy Wingo
Subject: [Guile-commits] 01/01: Update NEWS for 2.2.3
Date: Fri, 1 Dec 2017 05:35:15 -0500 (EST)

wingo pushed a commit to branch stable-2.2
in repository guile.

commit ca4d16c7dc130d684f4ae70f5ed30af8a9a0af6f
Author: Andy Wingo <address@hidden>
Date:   Fri Dec 1 11:34:58 2017 +0100

    Update NEWS for 2.2.3
    * NEWS: Update.
 NEWS | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 90 insertions(+), 2 deletions(-)

diff --git a/NEWS b/NEWS
index 7620cfd..a78f2fc 100644
--- a/NEWS
+++ b/NEWS
@@ -8,7 +8,7 @@ Please send Guile bug reports to address@hidden
 Changes in 2.2.3 (since 2.2.2):
-* New interfaces
+* New interfaces and functionality
 ** (web uri) module has better support for RFC 3986
@@ -22,6 +22,53 @@ Identifiers" in the manual, for more.
 These procedures should be used when accessing struct fields with type
 `u' (unboxed).  See "Structure Basics" in the manual, for full details.
+** Improved support for arrays with non-zero lower bounds
+Thanks to work by Daniel Llorens, Guile no longer exhibits buggy
+behavior in "sort" or "sort!" on arrays with non-zero lower dimension
+bounds.  Arrays with non-zero lower dimension bounds are now allowed for
+array-slice-for-each, and truncated-print now supports bitvectors and
+arrays with non-zero lower bounds.  General arrays are now supported as
+well for random:hollow-sphere!.
+** Add `uintptr_t' and `intptr_t' to FFI types.
+See "Foreign Types" in the manual for full details.
+* Compiler improvements
+** Improve speed of compiler backend for functions without loops
+This is a marginal speed improvement, especially for code compiled with
+optimization level "-O1" or below.
+** Disable slot pre-coloring for optimization level "-O1" or below
+This improves the speed of the compiler backend.
+** Improve complexity of constant subexpression elimination pass
+This is a large speed improvement when compiling large files with the
+default "-O2" pass.
+** CPS conversion avoids generating return arity adapters if possible
+In Guile, the expression in (define a EXP) may return 1 or more values.
+This value elision in "value" context is implicit earlier in the Guile
+compiler, in Tree-IL, but is made explicit in the CPS middle-end
+language by the addition of the equivalent of explicit call-with-values
+continuations that ignore additional values.  However in many cases we
+can avoid generating these extra continuations if we know that EXP is
+single-valued, as is the case for example for constants or variable
+references or the like.
+Although these "arity-adapting continuations" would be removed by dead
+code elimination at optimization level "-O2" or above, they were still
+being needlessly generated in the first place.  Guile now avoids
+generating them, speeding up not only the optimizer at -O2 but also the
+entire compiler pipeline at -O1 or below, as well as improving the
+residual code at -O1 or below.
 * New deprecations
 ** Using `uri?' as a predicate on relative-refs deprecated
@@ -75,7 +122,7 @@ slot values manually on initialization.
 ** Struct fields with opaque ("o") protection deprecated
 Struct fields are declared with a "protection", meaning read-only ('r'),
-read-write ('w'), or opaque ('o').  There is also "hidden" ('o') which
+read-write ('w'), or opaque ('o').  There is also "hidden" ('h') which
 is read-write but which isn't initialized by arguments passed to
 `make-struct/no-tail', but that's a detail.  Opaque struct fields were
 used to allocate storage in a struct that could only be accessed by C.
@@ -92,6 +139,47 @@ Use the new `struct-ref/unboxed' and `struct-set!/unboxed' 
 * Bug fixes
+** guile.m4 now checks for Guile 2.2 by default
+Before, it was still preferring Guile 2.0.  It now also supports the
+Guile 3.0 prereleases.
+** Fix setting breakpoints from the REPL
+** Allow GDB support to be used with GDB linked against Guile 2.0.
+** Fix deadlock in `readdir' on error.
+** Fix crash on ia64 during thread switches.
+** Fix bug inferring range of `logand' computations with negative numbers
+** Fix bug when issuing HTTP requests through proxies.
+** Refactor weak hash table implementation to be more robust
+Guile 2.2's weak hash table implementation had three big problems.  The
+first was a bug causing these tables to leak memory when they would be
+resized.  The second was that the implementation was designed so that
+tables should be visited by the mark phase of the garbage collector in
+one big piece.  This could cause the garbage collector to see too many
+newly marked objects at once, causing inefficies in garbage collection.
+Finally, the way in which lost weak references were ultimately removed
+from weak tables caused a race between the finalizer threads and the
+mutator threads, leading to unbounded excess space retention in
+pathological cases.  All of this problems have been fixed.
+** Allow garbage collection of revealed file ports
+Guile can mark a file port as "revealed" if Scheme has been given access
+to the file descriptor.  In that case, the file descriptor will not be
+closed when the port is garbage-collected.  However we had a bug that
+for revealed ports prevented the port from ever being garbage-collected,
+leading to memory leaks of Guile's internal port buffers.  This is now
+** Fix put-bytevector, unget-bytevector with start == bytevector length
 ** Enable GNU Readline 7.0's support for "bracketed paste".
 Before, when pasting an expression that contained TAB characters into

reply via email to

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