1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-09 23:40:29 +02:00

Update `NEWS'.

* NEWS: Add news for 2.0.7.
This commit is contained in:
Ludovic Courtès 2012-11-29 22:38:23 +01:00
parent 4d599c2441
commit 13fac28218

176
NEWS
View file

@ -5,6 +5,182 @@ See the end for copying conditions.
Please send Guile bug reports to bug-guile@gnu.org. Please send Guile bug reports to bug-guile@gnu.org.
Changes in 2.0.7 (since 2.0.6):
* Notable changes
** SRFI-105 curly infix expressions are supported
Curly infix expressions as described at
http://srfi.schemers.org/srfi-105/srfi-105.html are now supported by
Guile's reader. This allows users to write things like {a * {b + c}}
instead of (* a (+ b c)). SRFI-105 support is enabled by using the
`#!curly-infix' directive in source code, or the `curly-infix' reader
option. See the manual for details.
** Reader options may now be per-port
Historically, `read-options' and related procedures would manipulate
global options, affecting the `read' procedure for all threads, and all
current uses of `read'.
Guile can now associate `read' options with specific ports, allowing
different ports to use different options. For instance, the
`#!fold-case' and `#!no-fold-case' reader directives have been
implemented, and their effect is to modify the current read options of
the current port only; similarly for `#!curly-infix'. Thus, it is
possible, for instance, to have one port reading case-sensitive code,
while another port reads case-insensitive code.
** Futures may now be nested
Futures may now be nested: a future can itself spawn and then `touch'
other futures. In addition, any thread that touches a future that has
not completed now processes other futures while waiting for the touched
future to completed. This allows all threads to be kept busy, and was
made possible by the use of delimited continuations (see the manual for
details.)
Consequently, `par-map' has been rewritten and can now use all cores.
** `load-in-vicinity' search for `.go' files in `%load-compiled-path'
Previously, `load-in-vicinity' would look for compiled files in the
auto-compilation cache, but not in `%load-compiled-path'. This is now
fixed. This affects `load', and the `-l' command-line flag. See
<http://bugs.gnu.org/12519> for details.
** Extension search order fixed, and LD_LIBRARY_PATH preserved
Up to 2.0.6, Guile would modify the `LD_LIBRARY_PATH' environment
variable (or whichever is relevant for the host OS) to insert its own
default extension directories in the search path (using GNU libltdl
facilities was not possible here.) This approach was problematic in two
ways.
First, the `LD_LIBRARY_PATH' modification would be visible to
sub-processes, and would also affect future calls to `dlopen', which
could lead to subtle bugs in the application or sub-processes. Second,
when the installation prefix is /usr/local, the `LD_LIBRARY_PATH'
modification would typically end up inserting /usr/lib before
/usr/local/lib in the search path, which is often the opposite of
system-wide settings such as `ld.so.conf'.
Both issues have now been fixed.
** `make-vtable-vtable' is now deprecated
Programs should instead use `make-vtable' and `<standard-vtable>'.
** The `-Wduplicate-case-datum' and `-Wbad-case-datum' are enabled
These recently introduced warnings have been documented and are now
enabled by default when auto-compiling.
** Optimize calls to `equal?' with a constant argument
The compiler simplifies calls to `equal?' with a constant argument to
use `eq?' or `eqv?' instead, when applicable.
* Manual updates
** SRFI-9 records now documented under "Compound Data Types"
The documentation of SRFI-9 record types has been moved in the "Compound
Data Types", next to Guile's other record APIs. A new section
introduces the various record APIs, and describes the trade-offs they
make. These changes were made in an attempt to better guide users
through the maze of records API, and to recommend SRFI-9 as the main
API.
The documentation of Guile's raw `struct' API has also been improved.
** (ice-9 and-let-star) and (ice-9 curried-definitions) now documented
These modules were missing from the manual.
* New interfaces
** New "functional record setters" as a GNU extension of SRFI-9
The (srfi srfi-9 gnu) module now provides three new macros to deal with
"updates" of immutable records: `define-immutable-record-type',
`set-field', and `set-fields'.
The first one allows record type "functional setters" to be defined;
such setters keep the record unchanged, and instead return a new record
with only one different field. The remaining macros provide the same
functionality, and also optimize updates of multiple or nested fields.
See the manual for details.
** web: New `http-get*', `response-body-port', and `text-content-type?'
procedures
These procedures return a port from which to read the response's body.
Unlike `http-get' and `read-response-body', they allow the body to be
processed incrementally instead of being stored entirely in memory.
The `text-content-type?' predicate allows users to determine whether the
content type of a response is textual.
See the manual for details.
** `string-split' accepts character sets and predicates
The `string-split' procedure can now be given a SRFI-14 character set or
a predicate, instead of just a character.
** R6RS SRFI support --- FIXME
5d7c55b R6RS srfi library names should ignore first identifier after the :n
acc1d8e Preserve additional R6RS library name components after srfi :n
** `define-public' is no a longer curried definition by default
The (ice-9 curried-definitions) should be used for such uses. See the
manual for details.
* Build fixes
** Remove reference to `scm_init_popen' when `fork' is unavailable
This fixes a MinGW build issue (http://bugs.gnu.org/12477).
** Fix race between installing `guild' and the `guile-tools' symlink
* Bug fixes
** Procedures returned by `eval' now have docstrings
(http://bugs.gnu.org/12173)
** web client: correctly handle uri-query, etc. in relative URI headers
(http://bugs.gnu.org/12827)
** Fix docs for R6RS `hashtable-copy'
** R6RS `string-for-each' now accepts multiple string arguments
** Fix out-of-range error in the compiler's CSE pass
(http://bugs.gnu.org/12883)
** Add missing R6RS `open-file-input/output-port' procedure
** Futures: Avoid creating the worker pool more than once
** Fix invalid assertion about mutex ownership in threads.c
(http://bugs.gnu.org/12719)
** Have `SCM_NUM2FLOAT' and `SCM_NUM2DOUBLE' use `scm_to_double'
** The `scandir' procedure now uses `lstat' instead of `stat'
** Fix `generalized-vector->list' indexing bug with shared arrays
(http://bugs.gnu.org/12465)
** web: Change `http-get' to try all the addresses for the given URI
** Implement `hash' for structs
(http://lists.gnu.org/archive/html/guile-devel/2012-10/msg00031.html)
** `read' now adds source properties for data types beyond pairs
** Improve error reporting in `append!'
** In fold-matches, set regexp/notbol unless matching string start
** Don't stat(2) and access(2) the .go location before using it
** SRFI-19: use zero padding for hours in ISO 8601 format, not blanks
** web: Fix uri-encoding for strings with no unreserved chars, and octets 0-15
** More robust texinfo alias handling
** Optimize `format' and `simple-format'
(http://bugs.gnu.org/12033)
** Angle of -0.0 is pi, not zero
Changes in 2.0.6 (since 2.0.5): Changes in 2.0.6 (since 2.0.5):
* Notable changes * Notable changes