From: ludo@gnu.org (Ludovic Courtès)
To: guile-user@gnu.org, guile-devel@gnu.org
Subject: GNU Guile 2.0.7 released
Date: Fri, 30 Nov 2012 01:34:40 +0100 [thread overview]
Message-ID: <87wqx3h2s7.fsf@inria.fr> (raw)
[-- Attachment #1: Type: text/plain, Size: 10735 bytes --]
We are pleased to announce GNU Guile release 2.0.7, the next maintenance
release for the 2.0.x stable series.
The Guile web page is located at http://gnu.org/software/guile/ .
Guile is an implementation of the Scheme programming language, with
support for many SRFIs, packaged for use in a wide variety of
environments. In addition to implementing the R5RS Scheme standard and
a large subset of R6RS, Guile includes a module system, full access to
POSIX system calls, networking support, multiple threads, dynamic
linking, a foreign function call interface, and powerful string
processing.
Guile can run interactively, as a script interpreter, and as a Scheme
compiler to VM bytecode suitable for stand-alone applications. It is
also packaged as a library so that applications can easily incorporate a
complete Scheme interpreter/VM. An application can use Guile as an
extension language, a clean and powerful configuration language, or as
multi-purpose "glue" to connect primitives provided by the application.
Here are the compressed sources:
ftp://ftp.gnu.org/gnu/guile/guile-2.0.7.tar.gz (6.9MB)
ftp://ftp.gnu.org/gnu/guile/guile-2.0.7.tar.xz (4.3MB)
Here are the GPG detached signatures[*]:
ftp://ftp.gnu.org/gnu/guile/guile-2.0.7.tar.gz.sig
ftp://ftp.gnu.org/gnu/guile/guile-2.0.7.tar.xz.sig
Use a mirror for higher download bandwidth:
http://www.gnu.org/order/ftp.html
Here are the MD5 and SHA1 checksums:
c18d48ba90296fb346f4cf2779f41598 guile-2.0.7.tar.gz
30ff9e94663a2e2098b52f8ce9d050b9 guile-2.0.7.tar.xz
4425cc1a60ffe5637972a328880f98746c2a0f5b guile-2.0.7.tar.gz
cd6b061e76e36c6e75083168febab4807f1eadab guile-2.0.7.tar.xz
[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact. First, be sure to download both the .sig file
and the corresponding tarball. Then, run a command like this:
gpg --verify guile-2.0.7.tar.gz.sig
If that command fails because you don't have the required public key,
then run this command to import it:
gpg --keyserver keys.gnupg.net --recv-keys EA52ECF4
and rerun the 'gpg --verify' command.
This release was bootstrapped with the following tools:
Autoconf 2.69
Automake 1.12.2
Libtool 2.4.2
Gnulib v0.0-7695-g26c0590
This release provides many bug fixes, performance improvements, and some
new features. Here are the highlights, taken from the `NEWS' file:
* 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' and `par-for-each' have been rewritten and can
now use all cores.
** `GUILE_LOAD_PATH' et al can now add directories to the end of the path
`GUILE_LOAD_PATH' and `GUILE_LOAD_COMPILED_PATH' can now be used to add
directories to both ends of the load path. If the special path
component `...' (ellipsis) is present in these environment variables,
then the default path is put in place of the ellipsis, otherwise the
default path is placed at the end. See "Environment Variables" in the
manual for details.
** `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, 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?' or `eqv?' with a constant argument
The compiler simplifies calls to `equal?' or `eqv?' with a constant
argument to use `eq?' 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
Previously, in R6RS modules, Guile incorrectly ignored components of
SRFI module names after the SRFI number, making it impossible to specify
sub-libraries. This release corrects this, bringing us into accordance
with SRFI 97.
** `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
You can follow Guile development in the Git repository and on the Guile
mailing lists. Guile builds from the `master' branch of Git have
version number 2.1.x.
Guile versions with an odd middle number, e.g., 2.1.*, are unstable
development versions. Even middle numbers indicate stable versions.
This has been the case since the 1.3.* series.
Please report bugs to `bug-guile@gnu.org'. We also welcome reports of
successful builds, which can be sent to the same email address.
Ludovic, on behalf of the Guile team.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
reply other threads:[~2012-11-30 0:34 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wqx3h2s7.fsf@inria.fr \
--to=ludo@gnu.org \
--cc=guile-devel@gnu.org \
--cc=guile-user@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).