[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GNU Guile 3.0.2 released

From: Ludovic Courtès
Subject: GNU Guile 3.0.2 released
Date: Fri, 27 Mar 2020 16:24:05 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

We are delighted to announce GNU Guile release 3.0.2, the second bug-fix
release of the new 3.0 stable series.  This release represents 22
commits by 8 people since version 3.0.1.  See the NEWS excerpt that
follows for full details.

                             *  *  *

The Guile web page is located at, and
among other things, it contains a copy of the Guile manual and pointers
to more resources.

Guile is an implementation of the Scheme programming language, packaged
for use in a wide variety of environments.  In addition to implementing
the R5RS, R6RS, and R7RS Scheme standards, Guile includes full access to
POSIX system calls, networking support, multiple threads, dynamic
linking, a foreign function call interface, powerful string processing,
and HTTP client and server implementations.

Guile can run interactively, as a script interpreter, and as a Scheme
compiler to VM bytecode.  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.  It is easy to call Scheme code
from C code and vice versa.  Applications can add new functions, data
types, control structures, and even syntax to Guile, to create a
domain-specific language tailored to the task at hand.

Guile 3.0 can be installed in parallel with Guile 2.2.x; see

                             *  *  *

Changes in 3.0.2 (since 3.0.1)

* New interfaces and functionality

** New (srfi srfi-171) module

This module implements "tranducers" as specified in
Thanks to Linus Björnstam for this new API!

** SRFI-14 character data set upgraded to Unicode 13.0.0

* Bug fixes

** Fix heap corruption when allocating structs

This bug would cause random crashes; users are invited to upgrade.
Thanks to rr (<>) for being instrumental in
finding this bug!

** Fix race condition between 'abort-to-prompt' and stack marking

This bug could occasionally cause crashes in multi-threaded Guile
programs using delimited continuations or exceptions.

** Ensure weak sets are occasionally vacuumed

Previously, weak sets, which are used internally for interned symbols
and for ports with SCM_PORT_TYPE_NEEDS_CLOSE_ON_GC, could grow seemingly
indefinitely without being vacuumed.

** Interpret dynamic library name as literal file name first

Until now, 'dynamic-link' would always append an extension, such as
".so", to the user-provided file names.  Now, 'dynamic-link' first tries
the file name literally, and only then falls back to adding the OS
shared library file name extension.

This allows users to refer to "" instead of
"", the latter being usually provided by "-dev" packages
of GNU/Linux distributions, unlike the former.

** <libguile.h> includes <libguile/hooks.h> again

This fixes an omission in Guile 3.0.

** Fix fixpoint computation in compute-significant-bits

** Fix compilation '--without-threads'

* New deprecations

** 'tmpnam' is now deprecated

The 'tmpnam' function in the C library has been deprecated for years due
to security concerns; the Scheme procedure 'tmpnam' is now deprecated as
well, in favor of 'mkstemp!'.  In addition, a new '--disable-tmpnam'
option has been added to 'configure' for users who would like to disable
it right away.

                             *  *  *

Here are the compressed sources:   (21MB)   (11MB)   (13MB)

Here are the GPG detached signatures[*]:

Use a mirror for higher download bandwidth:

Here are the SHA256 checksums:


[*] 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-3.0.2.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 \
      --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.69
  Automake 1.16.2
  Libtool 2.4.6
  Makeinfo 6.7
  Gnulib v0.1-1157-gb03f418

Happy hacking with Guile!

Ludovic Courtès and Andy Wingo.

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]