[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GNU Guile 2.0.3 released
GNU Guile 2.0.3 released
Sat, 22 Oct 2011 17:43:33 +0200
Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.90 (gnu/linux)
We are pleased to announce GNU Guile release 2.0.3, 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
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:
Here are the GPG detached signatures[*]:
To reduce load on the main server, use a mirror listed at:
Here are the MD5 and SHA1 checksums:
[*] You can use either of the above signature files 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.3.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:
This release contains compiler improvements, bug fixes, and some new
features. Here are the highlights, taken from the `NEWS' file:
Changes in 2.0.3 (since 2.0.2):
* Speed improvements
** Guile has a new optimizer, `peval'.
`Peval' is a partial evaluator that performs constant folding, dead code
elimination, copy propagation, and inlining. By default it runs on
every piece of code that Guile compiles, to fold computations that can
happen at compile-time, so they don't have to happen at runtime.
If we did our job right, the only impact you would see would be your
programs getting faster. But if you notice slowdowns or bloated code,
please send a mail to address@hidden with details.
Thanks to William R. Cook, Oscar Waddell, and Kent Dybvig for inspiring
peval and its implementation.
You can see what peval does on a given piece of code by running the new
`,optimize' REPL meta-command, and comparing it to the output of
`,expand'. See "Compile Commands" in the manual, for more.
** Fewer calls to `stat'.
Guile now stats only the .go file and the .scm file when loading a fresh
* Notable changes
** New module: `(web client)', a simple synchronous web client.
See "Web Client" in the manual, for more.
** Users can now install compiled `.go' files.
See "Installing Site Packages" in the manual.
** Remove Front-Cover and Back-Cover text from the manual.
The manual is still under the GNU Free Documentation License, but no
longer has any invariant sections.
** More helpful `guild help'.
`guild' is Guile's multi-tool, for use in shell scripting. Now it has a
nicer interface for querying the set of existing commands, and getting
help on those commands. Try it out and see!
** New macro: `define-syntax-rule'
`define-syntax-rule' is a shorthand to make a `syntax-rules' macro with
one clause. See "Syntax Rules" in the manual, for more.
** The `,time' REPL meta-command now has more precision.
The output of this command now has microsecond precision, instead of
** `(ice-9 match)' can now match records.
See "Pattern Matching" in the manual, for more on matching records.
** New module: `(language tree-il debug)'.
This module provides a tree-il verifier. This is useful for people that
generate tree-il, usually as part of a language compiler.
** New functions: `scm_is_exact', `scm_is_inexact'.
These provide a nice C interface for Scheme's `exact?' and `inexact?',
* Bugs fixed
See the git log (or the ChangeLog) for more details on these bugs.
** Fix order of importing modules and resolving duplicates handlers.
** Fix a number of bugs involving extended (merged) generics.
** Fix invocation of merge-generics duplicate handler.
** Fix write beyond array end in arrays.c.
** Fix read beyond end of hashtable size array in hashtab.c.
** (web http): Locale-independent parsing and serialization of dates.
** Ensure presence of Host header in HTTP/1.1 requests.
** Fix take-right and drop-right for improper lists.
** Fix leak in get_current_locale().
** Fix recursive define-inlinable expansions.
** Check that srfi-1 procedure arguments are procedures.
** Fix r6rs `map' for multiple returns.
** Fix scm_tmpfile leak on POSIX platforms.
** Fix a couple of leaks (objcode->bytecode, make-boot-program).
** Fix guile-lib back-compatibility for module-stexi-documentation.
** Fix --listen option to allow other ports.
** Fix scm_to_latin1_stringn for substrings.
** Fix compilation of untyped arrays of rank not 1.
** Fix unparse-tree-il of <dynset>.
** Fix reading of #||||#.
** Fix segfault in GOOPS when class fields are redefined.
** Prefer poll(2) over select(2) to allow file descriptors above FD_SETSIZE.
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 address@hidden'. We also welcome reports of
successful builds, which can be sent to the same email address.
Ludovic, on behalf of the Guile team.
Description: PGP signature
|[Prev in Thread]
||[Next in Thread]|
- GNU Guile 2.0.3 released,
Ludovic Courtès <=