Guile

Project GNU's extension language

(News)


About Guile
What is Guile?
Recent news
Mailing lists

Documentation
Manuals
FAQ's

Download
Getting Guile
Snapshots
Repository

Projects
Core
GUI
File Formats
Networking
Tools
Applications

Development
Project Summary
Helping out
Cool ideas

Resources
Guile Resources
Scheme Resources

What's the latest news?

What's the latest news?

2008-05-07
We are please to announce GNU Guile release 1.8.5. This is the next maintenance release for the 1.8 stable series.

You can find it here:

ftp://ftp.gnu.org/gnu/guile/guile-1.8.5.tar.gz

Its SHA1 checksum is

3ef611cf5c4998a5bdfc7935765bb68730038614 guile-1.8.5.tar.gz
This is primarily a bugfix release. Here are the highlights, taken from the `NEWS' file:
  • Infrastructure changes
    • Guile repository switched from CVS to Git

      The new repository can be accessed using "git-clone git://git.sv.gnu.org/guile.git", or can be browsed on-line at http://git.sv.gnu.org/gitweb/?p=guile.git. See `README' for details.

    • Add support for `pkg-config'

      See "Autoconf Support" in the manual for details.

  • New modules (see the manual for details)
    • `(srfi srfi-88)'
  • New features (see the manual for details)
    • New `postfix' read option, for SRFI-88 keyword syntax
    • Some I/O primitives have been inlined, which improves I/O performance
    • New object-based traps infrastructure

      This is a GOOPS-based infrastructure that builds on Guile's low-level evaluator trap calls and facilitates the development of debugging features like single-stepping, breakpoints, tracing and profiling. See the `Traps' node of the manual for details.

    • New support for working on Guile code from within Emacs

      Guile now incorporates the `GDS' library (previously distributed separately) for working on Guile code from within Emacs. See the `Using Guile In Emacs' node of the manual for details.

  • Bugs fixed
    • `scm_add_slot ()' no longer segfaults (fixes bug #22369)
    • Fixed `(ice-9 match)' for patterns like `((_ ...) ...)'

      Previously, expressions like `(match '((foo) (bar)) (((_ ...) ...) #t))' would trigger an unbound variable error for `match:andmap'.

    • `(oop goops describe)' now properly provides the `describe' feature
    • Fixed `args-fold' from `(srfi srfi-37)'

      Previously, parsing short option names of argument-less options would lead to a stack overflow.

    • `(srfi srfi-35)' is now visible through `cond-expand'
    • Fixed type-checking for the second argument of `eval'
    • Fixed type-checking for SRFI-1 `partition'
    • Fixed `struct-ref' and `struct-set!' on "light structs"
    • Honor struct field access rights in GOOPS
    • Changed the storage strategy of source properties, which fixes a deadlock
    • Allow compilation of Guile-using programs in C99 mode with GCC 4.3 and later
    • Fixed build issue for GNU/Linux on IA64
    • Fixed build issues on NetBSD 1.6
    • Fixed build issue on Solaris 2.10 x86_64
    • Fixed build issue with DEC/Compaq/HP's compiler
    • Fixed `scm_from_complex_double' build issue on FreeBSD
    • Fixed `alloca' build issue on FreeBSD 6
    • Removed use of non-portable makefile constructs
    • Fixed shadowing of libc's on Tru64, which broke compilation
    • Make sure all tests honor `$TMPDIR'
  • Changes to the distribution
    • New FAQ

      We've started collecting Frequently Asked Questions (FAQ), and will distribute these (with answers!) in future Guile releases.

2008-02-19
We are please to announce GNU Guile release 1.8.4. This is the next maintenance release for the 1.8 stable series.

You can find it here:

ftp://ftp.gnu.org/gnu/guile/guile-1.8.4.tar.gz

Its SHA1 checksum is

1e80fe242acfde2bfa39fd1e8409a8f010e24e2b guile-1.8.4.tar.gz
This is primarily a bugfix release. Here are the highlights, taken from the `NEWS' file:
  • Bugs fixed
    • CR (ASCII 0x0d) is (again) recognized as a token delimiter by the reader
    • Fixed a segmentation fault which occurred when displaying the backtrace of a stack with a promise object (made by `delay') in it.
    • Make `accept' leave guile mode while blocking
    • `scm_c_read ()' and `scm_c_write ()' now type-check their port argument
    • Fixed a build problem on AIX (use of func_data identifier)
    • Fixed a segmentation fault which occurred when hashx-ref or hashx-set! was called with an associator proc that returns neither a pair nor #f.
    • Secondary threads now always return a valid module for (current-module).
    • Avoid MacOS build problems caused by incorrect combination of "64" system and library calls.
    • `guile-snarf' now honors `$TMPDIR'
    • `guile-config compile' now reports CPPFLAGS used at compile-time
    • Fixed build with Sun Studio (Solaris 9)
    • Fixed wrong-type-arg errors when creating zero length SRFI-4 uniform vectors on AIX.
    • Fixed a deadlock that occurs upon GC with multiple threads.
    • Fixed compile problem with GCC on Solaris and AIX (use of _Complex_I)
    • Fixed autotool-derived build problems on AIX 6.1.
    • Fixed NetBSD/alpha support
    • Fixed MacOS build problem caused by use of rl_get_keymap(_name)
  • New modules (see the manual for details)
    • `(srfi srfi-69)'
  • Documentation fixes and improvements
    • Removed premature breakpoint documentation

      The features described are not available in the series of 1.8.x releases, so the documentation was misleading and has been removed.

    • More about Guile's default *random-state* variable
    • GOOPS: more about how to use `next-method'
  • Changes to the distribution
    • Corrected a few files that referred incorrectly to the old GPL + special exception licence

      In fact Guile since 1.8.0 has been licensed with the GNU Lesser General Public License, and the few incorrect files have now been fixed to agree with the rest of the Guile distribution.

    • Removed unnecessary extra copies of COPYING*

      The distribution now contains a single COPYING.LESSER at its top level.

2007-10-16
We are pleased to announce Guile release 1.8.3. This is the next maintenance release for the 1.8 stable series.

You can find it here:

ftp://ftp.gnu.org/gnu/guile/guile-1.8.3.tar.gz

Its SHA1 checksum is

26cf7b70d4caff8fe2a5fbcc363f2457bc591c2b guile-1.8.3.tar.gz
This is primarily a bugfix release. Here are the highlights, taken from the `NEWS' file:
  • New modules (see the manual for details)
    • (srfi srfi-35)
    • (srfi srfi-37)
  • Bugs fixed
    • The `(ice-9 slib)' module now works as expected
    • Expressions like "(set! 'x #t)" no longer yield a crash
    • Warnings about duplicate bindings now go to stderr
    • A memory leak in `make-socket-address' was fixed
    • Alignment issues (e.g., on SPARC) in network routines were fixed
    • A threading issue that showed up at least on NetBSD was fixed
    • Build problems on Solaris and IRIX fixed
  • Implementation improvements
    • The reader is now faster, which reduces startup time
    • Procedures returned by `record-accessor' and `record-modifier' are faster

2007-07-16
We are pleased to announce Guile release 1.8.2. This is the next maintenance release for the 1.8 stable series.

You can find it here:

ftp://ftp.gnu.org/gnu/guile/guile-1.8.2.tar.gz

Its SHA1 checksum is

b5c624b152a45f302e185e20a468a02f2eb73e38 guile-1.8.2.tar.gz
This is primarily a bugfix release. Please see the NEWS file for a full summary of the changes, but here are the highlights:
  • New procedures (see the manual for details)
    • set-program-arguments
    • make-vtable
  • Incompatible changes
    • The body of a top-level `define' no longer sees the binding being created

      In a top-level `define', the binding being created is no longer visible from the `define' body. This breaks code like "(define foo (begin (set! foo 1) (+ foo 1)))", where `foo' is now unbound in the body. However, such code was not R5RS-compliant anyway, per Section 5.2.1.

  • Bugs fixed
    • Fractions were not `equal?' if stored in unreduced form.
    • srfi-60 `copy-bit' failed on 64-bit systems
    • "guile --use-srfi" option at the REPL can replace core functions
    • `regexp-exec' doesn't abort() on #\nul in the input or bad flags arg
    • `kill' on mingw throws an error for a pid other than oneself
    • Procedure names are attached to procedure-with-setters
    • Array read syntax works with negative lower bound
    • `array-in-bounds?' fix if an array has different lower bounds on each index
    • `*' returns exact 0 for "(* inexact 0)"
    • SRFI-19: Value returned by `(current-time time-process)' was incorrect
    • SRFI-19: `date->julian-day' did not account for timezone offset
    • `ttyname' no longer crashes when passed a non-tty argument
    • `inet-ntop' no longer crashes on SPARC when passed an `AF_INET' address
    • Small memory leaks have been fixed in `make-fluid' and `add-history'
    • GOOPS: Fixed a bug in `method-more-specific?'
    • Build problems on Solaris fixed
    • Build problems on HP-UX IA64 fixed
    • Build problems on MinGW fixed

2006-10-06
We are pleased to announce Guile release 1.8.1. This is the next maintenance release for the 1.8 stable series.

You can find it here:

ftp://ftp.gnu.org/gnu/guile/guile-1.8.1.tar.gz

Its SHA1 checksum is

184555def153fdbc322045b1fdd90a7b23a84fbd guile-1.8.1.tar.gz
This is primarily a bugfix release. Please see the NEWS file for a full summary of the changes, but here are the highlights:
  • LFS functions are now used to access 64-bit files on 32-bit systems.
  • New procedures (see the manual for details)
    • primitive-_exit - [Scheme] the-root-module
    • scm_primitive__exit - [C]
    • make-completion-function - [Scheme] (ice-9 readline)
    • scm_c_locale_stringn_to_number - [C]
    • scm_srfi1_append_reverse [C]
    • scm_srfi1_append_reverse_x [C]
    • scm_log - [C]
    • scm_log10 - [C]
    • scm_exp - [C]
    • scm_sqrt - [C]
  • Bugs fixed
    • Build problems have been fixed on MacOS, SunOS, and QNX.
    • A one-dimensional array can now be 'equal?' to a vector.
    • Structures, records, and SRFI-9 records can now be compared with `equal?'.
    • SRFI-14 standard char sets are recomputed upon a successful `setlocale'.
    • `record-accessor' and `record-modifier' now have strict type checks.
    • It is now OK to use both autoload and use-modules on a given module.
    • The evaluator checks the number of arguments more correctly.
    • The srfi-1 assoc function now calls its equality predicate properly.
    • A bug in n-par-for-each and n-for-each-par-map has been fixed.
    • The array-set! procedure no longer segfaults when given a bit vector.
    • Bugs in make-shared-array have been fixed.
    • string<? and friends now follow char<? etc. order on 8-bit chars.
    • The format procedure now handles inf and nan values correctly for ~f.
    • exact->inexact should no longer overflow when given certain large fractions.
    • srfi-9 accessor and modifier procedures now have strict record type checks.
    • The (ice-9 ftw) procedures will no longer ignore files with the same inode number on different devices.

2006-05-28
We are pleased to announce Guile release 1.6.8. This is the next maintenance release for the old 1.6 stable series. The current stable series is 1.8.

You can find it here:

ftp://ftp.gnu.org/gnu/guile/guile-1.6.8.tar.gz

Its SHA1 checksum is

5c244f730d7aaee32db4b0cc77b688f74a5caa71 guile-1.6.8.tar.gz
This is primarily a bugfix release. Please see the NEWS file for a full summary of the changes, but here are the highlights:
  • Guile 1.6 should build correctly when using GCC 4.0.
  • The readline-set! procedure should now work.
  • Multi-line #!!# comments can end without a trailing newline.
  • Guile now relies on the upstream SLIB code (guile.init) to handle the load process. Previously Guile relied on its own copy of that code, which was incorrect, at least for more recent versions of SLIB. See NEWS for more information.
  • The R5RS numerator and denominator procedures have been added.
  • In the past, a value that was printed (using `display' or `write') would be incorrectly protected from GC for a while afterward. This has been fixed.
  • The number->string's procedure should now handle polar format complex numbers with invalid angles more correctly.
  • Some 8-bit char problems have been fixed in string-index, split-string, and other string procedures.
  • When cons* and list are called via apply, they should no longer clobber the source list.
  • The array-map! procedure allows the omission of source arguments.
  • Certain operations involving complex numbers could result in an inappropriate division by zero. This has been fixed.
  • The lset-adjoin procedure should now use the provided equality predicate when appropriate.
  • The behavior of the lset-union procedure should now more closely match the SRFI-1 specification whenever the first list argument is empty.
  • The lset= procedure should now consistently pass arguments to the equality predicate in the correct order.
  • A new 2005 leap second has been added to the SRFI-19 code.
  • New parameter versions of current-output-port, etc. have been added to the SRFI-39 implementation.
  • The make-stack procedure can now correctly construct a stack from a continuation.
  • String output port performance has been improved.

2006-02-12
We are pleased to announce the release of Guile 1.8.0. It can be found here:

ftp://ftp.gnu.org/gnu/guile/guile-1.8.0.tar.gz

Its SHA1 checksum is

22462680feeda1e5400195c01dee666162503d66 guile-1.8.0.tar.gz

The NEWS file is quite long. Here are the most interesting entries:

    Changes since 1.6:
  • Guile is now licensed with the GNU Lesser General Public License.
  • The manual is now licensed with the GNU Free Documentation License.
  • We now use GNU MP for bignums.
  • We now have exact rationals, such as 1/3.
  • We now use native POSIX threads for real concurrent threads.
  • There is a new way to initalize Guile that allows one to use Guile from threads that have not been created by Guile.
  • Mutexes and condition variables are now always fair. A recursive mutex must be requested explicitely.
  • The low-level thread API has been removed.
  • There is now support for copy-on-write substrings and mutation-sharing substrings.
  • A new family of functions for converting between C values and Scheme values has been added that is future-proof and thread-safe.
  • The INUM macros like SCM_MAKINUM have been deprecated.
  • The macros SCM_STRINGP, SCM_STRING_CHARS, SCM_STRING_LENGTH, SCM_SYMBOL_CHARS, and SCM_SYMBOL_LENGTH have been deprecated.
  • There is a new way to deal with non-local exits and re-entries in C code, which is nicer than scm_internal_dynamic_wind.
  • There are new malloc-like functions that work better than scm_must_malloc, etc.
  • There is a new way to access all kinds of vectors and arrays from C that is efficient and thread-safe.
  • The concept of dynamic roots has been factored into continuation barriers and dynamic states.
See NEWS and the manual for more details.

2006-02-12
We are pleased to announce the release of Guile 1.7.91. This is a release candidate for Guile 1.8.

2005-03-09
We are pleased to announce the release of Guile 1.7.2. This is a 'technology preview' for the upcoming Guile 1.8.

2004-12-21
We are pleased to announce Guile release 1.6.7. This is the next maintenance release for the 1.6 stable series. You can find it here. This is primarily a bugfix release. Please see the NEWS file for a full summary of the changes, but here are the highlights:

  • A build problem has been fixed. Previously, on some systems, the build would fail when libguile-ltdl couldn't be found during the build.
  • The array-map! and array-map-in-order! functions now allow a single source argument. In prior versions, calls with just one source array were rejected.
  • A string->number overflow for bases other than 2, 10 and 16 has been fixed. Among other things, this affected octal literal constants.
  • The argument order for the equality predicate passed to the SRFI-1 functions alist-delete and alist-delete! now matches the SRFI-1 specification.
  • In accordance with the SRFI-13 specification, the functions string-any and string-every now make a tail call to their predicate function upon reaching the last character in the string.

2004-11-29
We are pleased to announce Guile release 1.6.6. This is the next maintenance release for the 1.6 stable series. You can find it here. This is primarily a bugfix release. Please see the NEWS file for a full summary of the changes, but here are the highlights:

  • SRFI-39 should work now. A file was missing from the distribution.
  • A libltdl related build problem has been fixed.
  • A bug in uvec_equalp has been fixed.
  • In scm_charnames and scm_charnums, sp is now an alias for space.

2004-10-05
We are pleased to announce Guile release 1.6.5. This is the next maintenance release for the 1.6 stable series. You can find it here. This is primarily a bugfix release. Please see the NEWS file for a full summary of the changes, but here are the highlights:

  • SRFI-31 has been added (special form `rec' for recursive evaluation). Try (use-modules (srfi srfi-31)).
  • SRFI-39 has been added (parameter objects)
  • SRFI-19 has been fixed: date-week-number now correctly respects the requested day of week starting the week.
  • SRFI-4 has been overhauled. Bugs have been fixed, and performance may be improved in certain situations. Among other things, large values in 64-bit homogeneous vectors should print correctly now.
  • In the srfi-1 module's delete and delete! functions, the order of the arguments to the "=" procedure now matches the SRFI-1 specification.
  • Bugs have been fixed that prevented the (re)generation of psyntax.pp.
  • The use of scm_must_realloc() for memory which is scanned by GC could trigger a GC scan of a free()d block of memory. This has been fixed.
  • array-map! and array-map-in-order! now require at least one source array. Previously a call without any source arrays like (array-map! array proc) would cause a segfault. Now such calls are properly rejected.
  • gethost no longer causes an exception when trying to throw an exception.
  • call-with-output-string won't segv on a closed port. Now an exception is raised.
  • open-pipe, open-input-pipe and open-output-pipe used to leave an extra copy of their pipe file descriptor in the child, which was normally harmless, but could prevent the parent seeing eof or a broken pipe immediately. This has been fixed.
  • Properties set with set-source-properties! can now be read back correctly with source-properties.
  • Guile is now compiled with -fno-strict-aliasing when gcc is detected.
  • The --enable-htmldoc option has been removed from 'configure', because support for translating the documentation into HTML is now always provided. Use 'make html'.

(But what is Guile?)