[Top][All Lists]

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

GNU Guile 1.9.8 released (beta)

From: Ludovic Courtès
Subject: GNU Guile 1.9.8 released (beta)
Date: Wed, 17 Feb 2010 19:21:00 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

We are pleased to announce GNU Guile release 1.9.8.  This is the next
pre-release of what will eventually become the 2.0 release series.  It
provides many new noteworthy features, most notably the addition of a
compiler and virtual machine.  We encourage you to test them and provide
feedback to address@hidden'.

The Guile web page is located at, and
among other things, it contains a link to the Guile FAQ and pointers to
the mailing lists.

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.

Here are the compressed sources:   (4.9MB)

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:

bbdfe868bb1cffb2b170aa8e55aa1f39  guile-1.9.8.tar.gz
9b1ef8f920db0a4119e18f19141698782c650aa3  guile-1.9.8.tar.gz

[*] 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-1.9.8.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 EA52ECF4

and rerun the `gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.65
  Automake 1.11.1
  Libtool 2.2.6b
  Gnulib v0.0-3448-g6078aa4

This is a new release series with many new features and differences
compared to 1.8.  The complete list of changes compared to the 1.8.x
series is available in the `NEWS' file.

Changes since the 1.9.7 pre-release:

  ** Struct optimizations

  Structs underly many types in Guile, including records and objects. This
  release speeds up struct access and creation.

  ** Add libffi dependency

  Libffi is now required, to build the foreign function interface. See, for more information on libffi.

  We are not aware of a platform that Guile runs on for which libffi is

  ** Foreign function interface

  This release comes with a new `(system foreign)' module.  Currently it
  provides a low level "foreign function interface" (FFI), which allows
  users to write Scheme code to invoke C code, without writing a single
  line of C code.

  The `dynamic-link' and `dynamic-func' procedures, which have been
  available for a long time, can be used to get the address of a C
  function as a "foreign" object at the Scheme level; using libffi, Guile
  can construct calls to these functions.

  The arguments to a C function may be integers, floating point numbers,
  pointers, and structs.  Numbers are passed using their normal Scheme
  representations, and pointers and structs are represented as foreign
  objects.  Foreign objects can be converted back and forth to/from a
  bytevector.  They can have an associated foreign finalizer (e.g., a
  procedure that will reclaim any associated resources when the object
  becomes unreachable); alternatively, they can be finalized using a

  The `(system foreign)' API is currently low-level and possibly
  inconvenient.  It will be extended to provide higher-level constructs.

  ** Incompatible changes to the foreign value interface introduced in 1.9.7

  The API in <libguile/foreign.h> changed since 1.9.7.  C extensions need

  ** `dynamic-wind' compilation

  `dynamic-wind' now has special support from the compiler and VM.  The
  compiler is able to inline the body of a `dynamic-wind', making it more
  efficient.  The run-time support is provided by the `wind' and `unwind'
  VM instructions.

  ** New module: `(ice-9 vlist)'

  This module provides an implementation of Bagwell's VLists and
  VList-based hash lists ("VHashes").  VLists are a list data structure
  that provides constant-time random access and length computation
  logarithmic in the number of elements.  VLists also use less storage
  space than standard Scheme linked lists.

  VHashes are a functional dictionary type similar to association lists.
  However, unlike association lists, accessing a value given its key is
  typically a constant-time operation.  VHashes are now used in a few
  places of the compiler.

  ** New procedures: `getaddrinfo' and family

  Bindings for the POSIX getaddrinfo(3) host name and service lookup
  function are available.  This function is now recommended over
  `gethostname' and friends as it's more expressive and can return a
  sorted list of addresses, as opposed to a single address.

  ** Tutorial deleted

  The tutorial was removed.  It was incomplete, outdated, and contained C
  examples that were no longer valid.  The reference manual, on the other
  hand, contains up-to-date examples and documentation.

  ** And of course, the usual collection of bugfixes

  Interested users should see the ChangeLog for more information.

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 1.9.x.

Guile versions with an odd middle number, e.g., 1.9.*, 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 Courtès, on behalf of the Guile team.

Attachment: pgpdjuEjAwwzq.pgp
Description: PGP signature

reply via email to

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