[Top][All Lists]

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

GNU Guile 2.1.4 released [beta]

From: Andy Wingo
Subject: GNU Guile 2.1.4 released [beta]
Date: Wed, 14 Sep 2016 13:41:01 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

We are pleased to announce GNU Guile release 2.1.4.

Guile 2.1.4 is the fourth pre-release in what will eventually become the
2.2 release series.  We encourage you to test this release and provide
feedback to address@hidden

This release adds an atomic reference facility and fixes many small
bugs.  See the full NEWS below, for 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, with
support for many SRFIs, packaged for use in a wide variety of
environments.  In addition to implementing the R5RS Scheme standard,
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.  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 2.1.4 can be installed in parallel with Guile 2.0.x; see

A more detailed NEWS summary follows these details on how to get the
Guile sources.

Here are the compressed sources:   (17MB)   (10MB)

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-2.1.4.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 

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.69
  Automake 1.15
  Libtool 2.4.6
  Gnulib v0.1-800-g68b6ade
  Makeinfo 6.1

Changes in 2.1.4 (changes since the 2.1.3 alpha release):

* Notable changes
** C99 required

Following Emacs, you must use a C99-capable compiler when building
Guile.  In the future we also expect require C99 to use Guile's C
interface, at least for `stdint' support.

* New interfaces
** Implement R6RS custom binary input/output ports

See "Custom Ports" in the manual.

** Implement R6RS output-buffer-mode
** Implement R6RS bytevector->string, string->bytevector

See "R6RS Transcoders" in the manual.

** Thread-safe atomic boxes (references)

See "Atomics" in the manual.

** File descriptor finalizers

See "Ports and File Descriptors" in the manual.

* Performance improvements
** Added unboxing support for `logxor'
** Better integer unboxing

* Incompatible changes
** Statically scoped module duplicate handlers

It used to be that if a module did not specify a #:duplicates handler,
when a name was first referenced in that module and multiple imported
modules provide that name, the value of the
`default-duplicate-binding-handlers' parameter would be used to resolve
the duplicate bindings.  We have changed so that instead a module
defaults to the set of handlers described in the manual.  If the module
specifies #:duplicates, of course we use that.  The
`default-duplicate-binding-handlers' parameter now simply accesses the
handlers of the current module, instead of some global value.

* Bug fixes
** Better MinGW support

`system*' is now supported on MinGW targets.

** Avoid flushing buffers on ftell

Fixes regression relative to Guile 2.0.

** HTTP library does not require ETag lists to be qstrings

** Fix bug importing specific bindings with #:select

It used to be that if #:select didn't find a binding in the public
interface of a module, it would actually grovel in the module's
unexported private bindings.  This was not intended and is now fixed.

** Stronger thread-safety guarantees for port implementations

See "I/O Extensions" in the manual for notes on threads and port

** Fix fixnum-range checks in R6RS fixnum bitops

** Fix `monitor' macro

** Fix bug with GUILE_INSTALL_LOCALE=1 and default port encodings

If GUILE_INSTALL_LOCALE is unset in the environment or set to 1, Guile
will call setlocale() to install the locale.  However it was neglecting
to set the default port encoding to the locale's encoding.  This is

** Various compiler bug fixes

reply via email to

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