Guile Changelog

New in version 2.0.7

December 3rd, 2012
  • This version adds SRFI-105 curly infix expressions, per-port reader options, nested futures, functional record setters, a port interface to HTTP bodies, more optimizations, better load path and compiled load path handling, and the usual long list of bugfixes.

New in version 1.8.8 (December 14th, 2010)

  • Maintenance release for the 1.8 stable series.

New in version 1.9.9 (March 19th, 2010)

  • Faster dynamic binding with fluids
  • `fluid-ref' and `fluid-set' now have dedicated bytecode instructions.
  • Dynamic binding via `with-fluids' or `with-fluids*' no longer causes
  • recursive VM invocations, nor closure allocation of the body. Unused
  • fluid numbers are now garbage-collected.
  • Incompatible Tree-IL changes:
  • There were a number of incompatible changes made in the last cycle
  • regarding Tree-IL, Guile's high-level intermediate language. See the
  • change logs for details. If these affected you, clearly you need to
  • submit your compiler patches upstream!
  • Prompts: Delimited, composable continuations:
  • Guile now has prompts as part of its primitive language. See "Prompts"in the manual, for more information.
  • Expressions entered in at the REPL, or from the command line, are surrounded by a prompt with the default prompt tag.
  • Deprecated:`lazy-catch' was a form that captured the stack at the point of a `throw', but the dynamic state at the point of the `catch'. It was a bit
  • crazy. Please change to use `catch', possibly with a throw-handler, or`with-throw-handler'.
  • 'catch', `throw', `with-throw-handler' implemented in Scheme
  • This doesn't have any end-user impact, but we're so proud of being able to implement these constructs in terms of prompts and fluids, while not changing the user API, that we need to mention it in the NEWS. Thanks for reading!
  • Current-module tracking in the syntax expander:
  • Expanding a `begin' expression that changed the current module via an`eval-when' wasn't working, due to a bug. This was fixed.
  • Backtraces at the REPL don't show REPL frames
  • The 1.9 series has had overly verbose backtraces, which showed frames internal to the implementation of the REPL. This has been mostly fixed.
  • Please report bugs to
  • Additions to the foreign function interface (FFI)
  • The `(system foreign)' module now provides additional foreign types corresponding to C's `int', `long', `size_t', etc.
  • In addition, the `dynamic-link' procedure can now be called without any argument, in which case it returns a "global symbol handle", allowing symbols currently available to the program to be looked up.
  • Documentation of `syntax-rules' macros:
  • The documentation of macros in the manual is now separate from that of procedures. A new section on `syntax-rules' macros has been added.
  • Effective version bump to 2.0:
  • Guile has had an "effective version" for some time, typically generated as "MAJOR-VERSION.MINOR-VERSION". This release decouples the effective version from the actual version, setting it prematurely to 2.0. This should shake out any version-related distribution bugs.
  • Parallel installability fixes:
  • Guile now installs its header files to a effective-version-specific directory, and includes the effective version (e.g. 2.0) in the library name (e.g.
  • This change should be transparent to users, who should detect Guile via the guile.m4 macro, or the guile-2.0.pc pkg-config file. It will allow parallel installs for multiple versions of Guile development environments.