diff options
author | Andy Wingo <wingo@igalia.com> | 2017-12-01 11:34:58 +0100 |
---|---|---|
committer | Andy Wingo <wingo@igalia.com> | 2017-12-01 11:34:58 +0100 |
commit | ca4d16c7dc130d684f4ae70f5ed30af8a9a0af6f (patch) | |
tree | ca4a5358cbc2504cedbdf496eb23cc9f000d0fbe /NEWS | |
parent | 19c0e302430af50d1b41316b929159d592f27ce3 (diff) |
Update NEWS for 2.2.3
* NEWS: Update.
Diffstat (limited to 'NEWS')
-rw-r--r-- | NEWS | 92 |
1 files changed, 90 insertions, 2 deletions
@@ -8,7 +8,7 @@ Please send Guile bug reports to bug-guile@gnu.org. 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' 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 |