mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 05:50:26 +02:00
Update NEWS for 2.2.3
* NEWS: Update.
This commit is contained in:
parent
19c0e30243
commit
ca4d16c7dc
1 changed files with 90 additions and 2 deletions
92
NEWS
92
NEWS
|
@ -8,7 +8,7 @@ Please send Guile bug reports to bug-guile@gnu.org.
|
||||||
|
|
||||||
Changes in 2.2.3 (since 2.2.2):
|
Changes in 2.2.3 (since 2.2.2):
|
||||||
|
|
||||||
* New interfaces
|
* New interfaces and functionality
|
||||||
|
|
||||||
** (web uri) module has better support for RFC 3986
|
** (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
|
These procedures should be used when accessing struct fields with type
|
||||||
`u' (unboxed). See "Structure Basics" in the manual, for full details.
|
`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
|
* New deprecations
|
||||||
|
|
||||||
** Using `uri?' as a predicate on relative-refs deprecated
|
** 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 with opaque ("o") protection deprecated
|
||||||
|
|
||||||
Struct fields are declared with a "protection", meaning read-only ('r'),
|
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
|
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
|
`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.
|
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
|
* 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".
|
** Enable GNU Readline 7.0's support for "bracketed paste".
|
||||||
|
|
||||||
Before, when pasting an expression that contained TAB characters into
|
Before, when pasting an expression that contained TAB characters into
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue