guile-commits
[Top][All Lists]
Advanced

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

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


From: Andy Wingo
Subject: [Guile-commits] 01/58: Update NEWS for 2.2.3
Date: Tue, 7 Aug 2018 06:58:28 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 94c3a7fb639bdc974e3425df0ff13b3afb4bd67a
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 cc885e0..5f05c06 100644
--- a/NEWS
+++ b/NEWS
@@ -64,7 +64,7 @@ Notably, the `pkg-config' file is now `guile-3.0'.
 
 Changes in 2.2.3 (since 2.2.2):
 
-* New interfaces
+* New interfaces and functionality
 
 ** (web uri) module has better support for RFC 3986
 
@@ -78,6 +78,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
@@ -131,7 +178,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.
@@ -148,6 +195,47 @@ Use the new `struct-ref/unboxed' and `struct-set!/unboxed' 
instead.
 
 * 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
+fixed.
+
+** 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]