Recent News Atom feed

GNU Guile 3.0.9 released

Ludovic Courtès — January 25, 2023

We are pleased to announce the release of GNU Guile 3.0.9! This release fixes a number of bugs and adds several new features, among which:

  • New bindings for POSIX functionality, including bindings for the at family of functions (openat, statat, etc.), a new spawn procedure that wraps posix_spawn and that system* now uses, and the ability to pass flags such as O_CLOEXEC to the pipe procedure.
  • A new bytevector-slice procedure.
  • Reduced memory consumption for the linker and assembler.

For full details, see the NEWS entry, and check out the download page.

Happy Guile hacking!

GNU Guile 3.0.8 released

Andy Wingo — February 11, 2022

We are delighted to announce the release of GNU Guile 3.0.8. This release adds support for cross-module inlining: allowing small functions and constants defined in one module to be inlined into their uses in other modules. Guile 3.0.8 also fixes a number of bugs.

For full details, see the NEWS entry. See the release note for signatures, download links, and all the rest. Onwards and upwards!

GNU Guile 3.0.7 released

Andy Wingo — May 10, 2021

We are humbled to announce the release of GNU Guile 3.0.7. This release fixes a number of bugs, a couple of which were introduced in the previous release. For full details, see the NEWS entry. See the release note for signatures, download links, and all the rest. Happy hacking!

GNU Guile 3.0.6 released

Andy Wingo — April 28, 2021

We are pleased to announce the release of GNU Guile 3.0.6. This release improves source-location information for compiled code, removes the dependency on libltdl, fixes some important bugs, adds an optional bundled "mini-gmp" library, as well as the usual set of minor optimizations and bug fixes. For full details, see the NEWS entry. See the release note for signatures, download links, and all the rest. Happy hacking!

GNU Guile 3.0.5 released

Andy Wingo — January 7, 2021

We are delighted to announce the release of GNU Guile 3.0.5. This release adds optimizations that can turn chains of repeated comparisons, such as those produced by the case and (sometimes) the match macros, into efficient O(1) table dispatches. For full details, see the NEWS entry. See the release note for signatures, download links, and all the rest. Happy hacking!

GNU Guile 3.0.4 released

Ludovic Courtès — June 24, 2020

We are pleased but also embarrassed to announce GNU Guile 3.0.4. This release fixes the SONAME of libguile-3.0.so, which was wrongfully bumped in 3.0.3. Distributions should use 3.0.4.

Apologies for the inconvenience!

GNU Guile 3.0.3 released

Ludovic Courtès — June 21, 2020

We are pleased to announce GNU Guile 3.0.3, the third bug-fix release of the new 3.0 stable series! This release represents 170 commits by 17 people since version 3.0.2.

The highlight of this release is the addition of a new baseline compiler, used at optimizations levels -O1 and -O0. The baseline compiler is designed to generate code fast, for applications where compilation speed matters more than execution time of the generated code. It is around ten times faster than the optimizing continuation-passing style (CPS) compiler.

This version also includes a new pipeline procedure to create shell-like process pipelines, improvements to the bitvector interface, and bug fixes for JIT compilation on ARMv7 machines.

See the release announcement for details and the download page to give it a go!

GNU Guile 3.0.2 released

Ludovic Courtès — March 27, 2020

We are pleased to announce GNU Guile 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.

Among other things, this release fixes a heap corruption bug that could lead to random crashes and a rare garbage collection issue in multi-threaded programs.

It also adds a new module implementing SRFI-171 transducers.

See the release announcement for details and the download page to give it a go!

GNU Guile 3.0.1 released

Ludovic Courtès — March 8, 2020

We are pleased to announce GNU Guile 3.0.1, the first bug-fix release of the new 3.0 stable series! This release represents 45 commits by 7 people since version 3.0.0.

Among the bug fixes is a significant performance improvement for applications making heavy use of bignums, such as the compiler. Also included are fixes for an embarrassing bug in the include directive, for the hash procedure when applied to keywords and some other objects, portability fixes, and better R7RS support.

See the release announcement for details and the download page to give it a go!

GNU Guile 2.2.7 released

Ludovic Courtès — March 7, 2020

We are pleased to announce GNU Guile 2.2.7, the seventh bug-fix release of the “legacy” 2.2 series (the current stable series is 3.0). This release represents 17 commits by 5 people since version 2.2.6. Among the bug fixes is a significant performance improvement for applications making heavy use of bignums, such as the compiler.

See the release announcement for details.

GNU Guile 3.0.0 released

Andy Wingo — January 16, 2020

We are ecstatic and relieved to announce the release of GNU Guile 3.0.0. This is the first release in the new stable 3.0 release series.

See the release announcement for full details and a download link.

The principal new feature in Guile 3.0 is just-in-time (JIT) native code generation. This speeds up the performance of all programs. Compared to 2.2, microbenchmark performance is around twice as good on the whole, though some individual benchmarks are up to 32 times as fast.

Comparison of microbenchmark performance for Guile 3.0 versus 2.2

For larger use cases, notably, this finally makes the performance of "eval" as written in Scheme faster than "eval" written in C, as in the days of Guile 1.8.

Other new features in 3.0 include support for interleaved definitions and expressions in lexical contexts, native support for structured exceptions, better support for the R6RS and R7RS Scheme standards, along with a pile of optimizations. See the NEWS file for a complete list of user-visible changes.

Guile 3.0.0 and all future releases in the 3.0.x series are parallel-installable with other stable release series (e.g. 2.2). As the first release in a new stable series, we anticipate that Guile 3.0.0 might have build problems on uncommon platforms; bug reports are very welcome. Send any bug reports you might have as email at to bug-guile@gnu.org.

Happy hacking with Guile 3!

GNU Guile 2.9.9 (beta) released

Andy Wingo — January 13, 2020

We are delighted to announce the release of GNU Guile 2.9.9. This is the ninth and final pre-release of what will eventually become the 3.0 release series.

See the release announcement for full details and a download link.

This release fixes a number of bugs, omissions, and regressions. Notably, it fixes the build on 32-bit systems.

We plan to release a final Guile 3.0.0 on 17 January: this Friday! Please do test this prerelease; build reports, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.9.8 (beta) released

Andy Wingo — January 2, 2020

We are delighted to announce the release of GNU Guile 2.9.8. This is the eighth and possibly final pre-release of what will eventually become the 3.0 release series.

See the release announcement for full details and a download link.

This release fixes an error in libguile that could cause Guile to crash in some particular conditions, and was notably experienced by users compiling Guile itself on Ubuntu 18.04.

We plan to release a final Guile 3.0.0 on 17 January, though we may require another prerelease in the meantime. However until then, note that GNU Guile 2.9.8 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

As always, experience reports with GNU Guile 2.9.8, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.9.7 (beta) released

Andy Wingo — December 13, 2019

We are delighted to announce GNU Guile 2.9.7, the seventh and hopefully penultimate beta release in preparation for the upcoming 3.0 stable series. See the release announcement for full details and a download link.

This release makes Guile go faster. Compared to 2.9.6 there are some significant improvements:

Comparison of microbenchmark performance for Guile 2.9.6 and 2.9.7

The cumulative comparison against 2.2 is finally looking like we have no significant regressions:

Comparison of microbenchmark performance for Guile 2.2.6 and 2.9.7

Now we're on the home stretch! Hopefully we'll get out just one more prerelease and then release a stable Guile 3.0.0 in January. However until then, note that GNU Guile 2.9.7 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

As always, experience reports with GNU Guile 2.9.7, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.9.6 (beta) released

Andy Wingo — December 6, 2019

We are delighted to announce GNU Guile 2.9.6, the sixth beta release in preparation for the upcoming 3.0 stable series. See the release announcement for full details and a download link.

This release fixes bugs caught by users of the previous 2.9.5 prerelease, and adds some optimizations as well as a guile-3 feature for cond-expand.

In this release, we also took the opportunity to do some more rigorous benchmarking:

Comparison of microbenchmark performance for Guile 2.2.6 and 2.9.6

GNU Guile 2.9.6 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

As always, experience reports with GNU Guile 2.9.6, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.9.5 (beta) released

Andy Wingo — November 22, 2019

We are delighted to announce GNU Guile 2.9.5, the fifth beta release in preparation for the upcoming 3.0 stable series. See the release announcement for full details and a download link.

Besides the usual set of optimizations, this release adds an --r6rs option for better R6RS support out of the box, and also adds a new --r7rs corresponding to R&RS. Guile's core exception handling has also been rebased onto the raise-exception and with-exception-handler primitives, enabling better compatibility going forward with structured exception objects, which are more common in the broader Scheme community than Guile's old throw and catch.

GNU Guile 2.9.5 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

Experience reports with GNU Guile 2.9.5, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.9.4 (beta) released

Andy Wingo — August 25, 2019

We are delighted to announce GNU Guile 2.9.4, the fourth beta release in preparation for the upcoming 3.0 stable series. See the release announcement for full details and a download link.

This release enables inlining of references to top-level definitions within a compilation unit, speeding up some programs by impressive amounts. It also improves compilation of floating-point routines like sin, implements the Ghuloum/Dybvig "Fixing Letrec (reloaded)" algorithm, and allows mixed definitions and expressions within lexical contours, as is the case at the top level. Try it out, it's good times!

GNU Guile 2.9.4 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

Experience reports with GNU Guile 2.9.4, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.9.3 (beta) released

Andy Wingo — August 3, 2019

We are delighted to announce GNU Guile 2.9.3, the third beta release in preparation for the upcoming 3.0 stable series. See the release announcement for full details and a download link.

This release improves the quality of the just-in-time (JIT) native code generation, resulting in up to 50% performance improvements on some workloads. See the article "Fibs, lies, and benchmarks" for an in-depth discussion of some of the specific improvements.

GNU Guile 2.9.3 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

Experience reports with GNU Guile 2.9.3, good or bad, are very welcome; send them to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile 2.2.6 released

Ludovic Courtès — June 30, 2019

We are pleased to announce GNU Guile 2.2.6, the sixth bug-fix release in the new 2.2 stable release series. This release represents 11 commits by 4 people since version 2.2.5. First and foremost, it fixes a regression introduced in 2.2.5 that would break Guile’s built-in HTTP server.

See the release announcement for details.

GNU Guile 2.2.5 released

Ludovic Courtès — June 20, 2019

We are pleased to announce GNU Guile 2.2.5, the fifth bug-fix release in the new 2.2 stable release series. This release represents 100 commits by 11 people since version 2.2.4. It fixes bugs that had accumulated over the last few months, notably in the SRFI-19 date and time library and in the (web uri) module. This release also greatly improves performance of bidirectional pipes, and introduces the new get-bytevector-some! binary input primitive that made it possible.

Guile 2.2.5 can be downloaded from the usual places.

See the release announcement for details.

Besides, we remind you that Guile 3.0 is in the works, and that you can try out version 2.9.2, which is the latest beta release of what will become 3.0.

Enjoy!

Join the Guile and Guix Days in Strasbourg, June 21–22!

Ludovic Courtès — May 28, 2019

We’re organizing Guile Days at the University of Strasbourg, France, co-located with the Perl Workshop, on June 21st and 22nd.

Guile Days 2019

Update: The program is now complete, view the schedule on-line.

The schedule is not complete yet, but we can already announce a couple of events:

  • Getting Started with GNU Guix will be an introductory hands-on session to Guix, targeting an audience of people who have some experience with GNU/Linux but are new to Guix.
  • During a “code buddy” session, experienced Guile programmers will be here to get you started programming in Guile, and to answer questions and provide guidance while you hack at your pace on the project of your choice.

If you’re already a Guile or Guix user or developer, consider submitting by June 8th, on the web site, talks on topics such as:

  • The neat Guile- or Guix-related project you’ve been working on.

  • Cool Guile hacking topics—Web development, databases, system development, graphical user interfaces, shells, you name it!

  • Fancy Guile technology—concurrent programming with Fibers, crazy macrology, compiler front-ends, JIT compilation and Guile 3, development environments, etc.

  • Guixy things: on Guix subsystems, services, the Shepherd, Guile development with Guix, all things OS-level in Guile, Cuirass, reproducible builds, bootstrapping, Mes and Gash, all this!

You can also propose hands-on workshops, which could last anything from an hour to a day. We expect newcomers at this event, people who don’t know Guile and Guix and want to learn about it. Consider submitting introductory workshops on Guile and Guix!

We encourage submissions from people in communities usually underrepresented in free software, including women, people in sexual minorities, or people with disabilities.

We want to make this event a pleasant experience for everyone, and participation is subject to a code of conduct.

Many thanks to the organizers of the Perl Workshop and to the sponsors of the event: RENATER, Université de Strasbourg, X/Stra, and Worteks.

GNU Guile 2.9.2 (beta) released

Andy Wingo — May 23, 2019

We are delighted to announce GNU Guile 2.9.2, the second beta release in preparation for the upcoming 3.0 stable series. See the release announcement for full details and a download link.

This release extends just-in-time (JIT) native code generation support to the ia32, ARMv7, and AArch64 architectures. Under the hood, we swapped out GNU Lightning for a related fork called Lightening, which was better adapted to Guile's needs.

GNU Guile 2.9.2 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

Users on the architectures that just gained JIT support are especially encouraged to report experiences (good or bad) to guile-devel@gnu.org. If you know you found a bug, please do send a note to bug-guile@gnu.org. Happy hacking!

GNU Guile at FOSDEM

Ludovic Courtès — January 29, 2019

GNU Guile will be present this year again at FOSDEM, which is just a few days away. The Guiler’s lair this time (in addition to the Guix Days right before FOSDEM for some of us!) will be the minimalist languages track. Among the great talks this Saturday, don’t miss:

We’re looking forward to meeting you in Brussels!

GNU Guile 2.9.1 (beta) released

Andy Wingo — October 10, 2018

We are delighted to announce GNU Guile 2.9.1, the first beta release in preparation for the upcoming 3.0 stable series.

This release adds support for just-in-time (JIT) native code generation, speeding up all Guile programs. Currently support is limited to x86-64 platforms, but will expand to all architectures supported by GNU Lightning.

GNU Guile 2.9.1 is a beta release, and as such offers no API or ABI stability guarantees. Users needing a stable Guile are advised to stay on the stable 2.2 series.

See the release announcement for full details and a download link. Happy hacking, and please do any bugs you might find to bug-guile@gnu.org.

GNU Guile 2.2.4 released

Ludovic Courtès — July 2, 2018

We are delighted to announce GNU Guile 2.2.4, the fourth bug-fix release in the new 2.2 stable release series. It fixes many bugs that had accumulated over the last few months, in particular bugs that could lead to crashes of multi-threaded Scheme programs. This release also brings documentation improvements, the addition of SRFI-71, and better GDB support.

See the release announcement for full details and a download link. Enjoy!

GNU Guile 2.2.3 released

Andy Wingo — December 1, 2017

We are delighted to announce GNU Guile 2.2.3, the third bug-fix release in the new 2.2 stable release series. Besides the usual pile of bug fixes, we think you will be most delighted by two things. The first is that the compiler is faster, especially on large Scheme files. The second is that finally, when you paste a multi-lined expression into the REPL, it now takes up only one history entry, and any tabs in that pasted entry no longer trigger bogus and annoying auto-complete attempts.

See the release announcement for full details and a download link. Enjoy!

GNU Guile 2.2.2 released

Andy Wingo — April 21, 2017

We sheepishly announce GNU Guile 2.2.2, a quick bug-fix after the recent 2.2.1 release. This release restores our ability to compile with libgc 7.2, and restores the ability of syntax objects to be structurally compared with equal?.

See the release announcement for full details and a download link.

GNU Guile 2.2.1 released

Andy Wingo — April 19, 2017

We are delighted to announce GNU Guile 2.2.1, the first bug-fix release in the new 2.2 stable release series. This release adds a "sandbox" facility that can run code from untrusted users. It also includes a compiler and runtime change that ensures that attempts to mutate literal constants will always throw an exception. Before this change, the mutation would either succeed, potentially corrupting further use of that constant or other constants sharing structure with it, or cause a segmentation fault if that data happened to be mapped read-only.

See the release announcement for full details and a download link.

GNU Guile 2.2.0 released

Andy Wingo — March 16, 2017

We are pleased to announce GNU Guile 2.2.0, the first of a new stable release series. More than 6 years in the making, Guile 2.2 includes a new optimizing compiler and high-performance register virtual machine. Compared to the old 2.0 series, real-world programs often show a speedup of 30% or more with Guile 2.2.

Besides bringing the compiler and virtual machine, Guile 2.2 removes limitations on you and your programs by lowering memory usage, speeding up the "eval" interpreter, providing better support for multi-core programming, and last but not least, removing any fixed stack size limit. With Guile 2.2, you can recurse to your heart's content!

Not only does Guile 2.2 run fast, it also supports the creation of user-space concurrency facilities that have millions of lightweight "fibers" running at the same time. When a fiber goes to read or write on a port, and that operation would block, concurrency libraries built on Guile can now cause the calling fiber to suspend and only resume when the I/O operation can progress. In the mean-time, these concurrency facilities can schedule other fibers. Guile has not blessed any one library (yet?) but for some examples, see 8sync, guile-a-sync, and Fibers. Also check out the Fibers manual for a full discussion.

See the release announcement for full details and a download link. If you are migrating from earlier versions of Guile, be sure to read the NEWS from the release announcement for exhaustive information on user-visible changes relative to the previous stable series.

This release is parallel-installable with the 2.0 series. See Parallel Installations in the manual, for more. Many Guile libraries and applications already support 2.2; Ludovic Courtès mentions that Guix is ready for Guile 2.2, for example. Give your favorite application a try and if you have problems, check the NEWS for what steps to take to fix it, and pop by #guile if you need help.

GNU Guile 2.1.8 released

Andy Wingo — March 10, 2017

We are delighted to announce GNU Guile release 2.1.8, the next pre-release in what will become the 2.2 stable series.

This release fixes a number of portability bugs. We hope this is the last pre-release before starting the stable 2.2.0 series. With luck, we will follow up with a 2.2.0 within a week or so, so any testing you can perform on this release is very welcome.

See the release announcement for full details and a download link.

GNU Guile 2.1.7 released

Andy Wingo — February 18, 2017

We are pleased to announce GNU Guile release 2.1.7, the next pre-release in what will become the 2.2 stable series.

This release fixes bugs related to migrating coroutines between threads. It is an incremental release along the path to 2.2. We hope to be able to release a final 2.2.0 within a few weeks.

See the release announcement for full details and a download link.

GNU Guile 2.0.14 released

Ludovic Courtès — February 13, 2017

We are delighted to announce GNU Guile release 2.0.14, a bug-fix release of the 2.0 stable series.

First and foremost, this version supports reproducible compilation of .go files and of Guile itself, thereby fixing a long-standing bug. Other noteworthy changes include fixes to number output routines of the (ice-9 i18n) module, and assorted documentation improvements.

See the release announcement for full details and go to this page for downloads.

GNU Guile at FOSDEM

Ludovic Courtès — January 10, 2017

GNU Guile has its own session at FOSDEM this year again. The schedule is now available. Talks cover a range of topics:

FOSDEM takes place in Brussels, Belgium, on the 4th and 5th of February, with the Guile track all day long on Sunday 5th. Hope to see you there!

GNU Guile 2.1.5 released

Andy Wingo — December 9, 2016

We are delighted to announce GNU Guile release 2.1.5, the next pre-release in what will become the 2.2 stable series.

This release improves Guile's parallelism and concurrency primitives, with the goal of providing Guile users with the tools they need to build custom concurrency and parallelism abstractions that suit their needs.

See the release announcement for full details and a download link.

GNU Guile 2.0.13 released [security fixes]

Christopher Allan Webber — October 12, 2016

We've just released a new version of GNU Guile, version 2.0.13, which is a security release for Guile (see the original announcement).

This handles a significant security vulnerability affecting the live REPL, CVE-2016-8606. Due to the nature of this bug, Guile applications themselves in general aren't vulnerable, but Guile developers are. Arbitrary Scheme code may be used to attack your system in this scenario. (A more minor security issue is also addressed, CVE-2016-8605.)

There is also a lesson here that applies beyond Guile: the presumption that "localhost" is only accessible by local users can't be guaranteed by modern operating system environments. If you are looking to provide local-execution-only, we recommend using Unix domain sockets or named pipes. Don't rely on localhost plus some port.

To give context, Guile supports a nice live-hacking feature where a user can expose a REPL to connect to, through Geiser or so on. This allows Guile users to hack programs even while programs are running.

When using the live hacking feature, the default in Guile has been to expose a port over localhost to which code may be passed. The assumption for this is that only a local user may write to localhost, so it should be safe. Unfortunately, users simultaneously developing Guile and operating modern browsers are vulnerable to a combination of an HTML form protocol attack and a DNS rebinding attack. How to combine these attacks is published in the article How to steal any developer's local database.

In Guile's case, the general idea is that you visit some site which presumably loads some JavaScript code (or tricks the developer into pressing a button which performs a POST), and the site operator switches the DNS from their own IP to 127.0.0.1. Then a POST is done from the website to 127.0.0.1 with the body containing Scheme code. This code is then executed by the Guile interpreter on the listening port.

The version we are releasing mitigates this problem by detecting incoming HTTP connections and closing them before executing any code.

However, there is a better long term solution, which is already available even to users of older versions of Guile: Guile supports Unix domain sockets in POSIX environments. For example, users may run the command:

guile --listen=/tmp/guile-socket 

to open and listen to a socket at /tmp/guile-socket. Geiser users may then connect using M-x geiser-connect-local. This is considerably safer.

We hope that other program authors take heed of this lesson as well: many programs make use of localhost + port as a way of limiting connections. Unfortunately, in today's complex networked environment, this isn't a safe assumption. It's very difficult to predict what programs may provide a way of chaining requests to an application listening on localhost, and certainly difficult on a system where web browsers are involved. Take heed!

(This post originally appeared on the guile-users mailing list.)

GNU Guile 2.1.4 released (beta)

Andy Wingo — September 14, 2016

We are delighted to announce GNU Guile release 2.1.4, the next pre-release in what will become the 2.2 stable series.

This release fixes many small bugs, adds an atomic reference facility, and improves the effectiveness of integer unboxing in the compiler. See the release announcement for full details and a download link.

GNU Guile 2.0.12 released

Andy Wingo — July 14, 2016

We are delighted to announce the availability of GNU Guile 2.0.12, a maintenance release in the current stable 2.0 series.

This release packages together many bug fixes that have accumulated over the last two years while the Guile team was otherwise busy working on the upcoming 2.2 series and on building the Guix package manager and GNU system distribution.

See the release notes for a list of user-visible changes in this release and a download link.

GNU Guile 2.1.3 released (beta)

Andy Wingo — June 19, 2016

We are delighted to announce GNU Guile release 2.1.3, the next pre-release in what will become the 2.2 stable series.

This release rewrites the ports facility to better support non-blocking concurrent input and output. See the newly rewritten "Input and Output" section of the manual for all details, and the release announcement for a download link.

GNU Guile 2.1.2 released (beta)

Andy Wingo — February 3, 2016

We are chuffed to announce GNU Guile release 2.1,2, the next pre-release in what will become the 2.2 stable series. This release features unboxed arithmetic and dramatically faster build times, along with a number of small speed and memory improvements.

See the original announcement at https://lists.gnu.org/archive/html/guile-user/2016-02/msg00022.html for full details.

GNU Guile 2.1.6 released

Andy Wingo — January 19, 2016

We are delighted to announce GNU Guile release 2.1.6, the next pre-release in what will become the 2.2 stable series.

This release fixes bugs related to threads and interrupts. It is an incremental release along the path to 2.2. It also includes some floating-point performance improvements thanks to David Thompson.

See the release announcement for full details and a download link.

GNU Guile FOSDEM schedule available!

Ludovic Courtès — December 30, 2015

The schedule of GNU Guile's developer room at FOSDEM is now available on-line! It features 10 talks covering different projects including Guile-SSH, wisp, GNU Guix, and more. The Guile session will be followed by a session about the Lua programming language; a panel on the future of small languages will make the transition between the two.

FOSDEM takes place on January 30–31 in Brussels, Belgium, with the Guile session starting on Saturday morning. Hope to see you there!

Give a talk in GNU Guile's track at FOSDEM!

Ludovic Courtès — November 23, 2015

GNU Guile will have its own developer room at FOSDEM 2016, which will take place in Brussels, Belgium, 30–31 January 2016.

Now is the time to submit a proposal for a talk in our devroom! We welcome all kinds of talks, be it about functional programming with Guile, experience reports on embedding Guile in your application, Web development with Guile, GNU Guix development, and more—Guile has very diverse use cases, and this devroom should reflect that.

We look forward to reading your proposal and to meeting you! :-)

GNU Guile 2.1.1 released

Andy Wingo — November 4, 2015

We are delighted to announce GNU Guile release 2.1,1, the first pre-release in what will become the 2.2 stable series. This release features a new compiler and virtual machine that offer important performance improvements. It also removes all limitations on stack sizes: users are free to recurse to their hearts' content, using the stack as a data structure, as it was meant to be.

See the original announcement for full details.

GNU Guile 2.0.11 released

Ludovic Courtès — March 21, 2014

We are pleased to announce GNU Guile release 2.0.11, the next maintenance release for the 2.0.x stable series.

This release fixes an embarrassing regression introduced in 2.0.10 in the C functions to access SRFI-4 vectors.

See the original announcement for details.

GNU Guile 2.0.10 released

Ludovic Courtès — March 18, 2014

We are pleased to announce GNU Guile release 2.0.10, the next maintenance release for the 2.0.x stable series.

This release contains 253 commits by 11 people over 11 months.

In addition to many (long overdue!) bug fixes, this release brings new features, including an implementation of the SRFI-43 vector library and the SRFI-64 test suite API, some support for the new R7RS Scheme standard, and a GDB extension for Guile debugging.

See the original announcement at https://lists.gnu.org/archive/html/guile-devel/2014-03/msg00041.html for more details.

Guile 2.0 just turned 3 years old!

Ludovic Courtès — February 20, 2014

Last week was Guile 2.0's third anniversary. Guile 2 was a major milestone for Guile and so, like in previousyears, we organized a birthday potluck---a hack fest where Guilers brought their freshly cooked dishes.

The Potluck Dishes

This year again we got a variety of fine dishes. Here's the menu:

  • David Thompson brought a neat module for functional reactive programming (FRP). The module is currently used in guile-2d, David's game engine.
  • Mike Gran joined the party with an entertaining midi to WAV converter. The code uses produces chiptune---a sound reminiscent of the 80's video games.
  • Andy Wingo came up with compost, a native compiler for leaf functions. Compost can generate ELF binaries for leaf functions written in a subset of Scheme. By using it to optimize the inner loops of the OpenGL particle simulation he wrote last year, Andy was able to achieve a speedup of 80x! Compost is available on Gitorious.
  • Panicz Maciej Godek and Drcz brought a Pandora game clone to the party, based on the SLAYER game engine.
  • Alex Sassmannshausen's dish actually relates to food: food-guile is a program that suggests meals taken from a collection of recipes, and according to various constraints.
  • Doug Evans came up with a patch to improve SIGINT handling in GDB's Guile support---the ability to extend GDB with Guile code, which Doug committed in GDB a couple of weeks ago.
  • Another GDB-related dish is Ludovic Courtès' GDB pretty-printer for Guile's SCM values. This GDB extension, written in Guile, allows GDB to display the SCM values manipulated by libguile in a human-friendly way.

This has been another pleasant potluck. Thanks to all the participants, and happy birthday Guile 2!

GSoC: Guile-Emacs and Emacsy

Ludovic Courtès — May 28, 2013

There will be two exciting Guile-related projects going on as part of GSoC this year:

  • Guile-Emacs. BT Templeton will continue the excellent work that has been done on Guile and Emacs integration. Previous GSoCs focused on providing a full-fledged Emacs Lisp front-end to Guile’s compiler and VM. This project focuses on the missing piece: replacing the Emacs Lisp interpreter in Emacs by Guile.
  • Emacsy is another approach to the Emacs/Guile vision: Shane Celis will work on a framework, Emacsy, that will allow application developers to easily “emacsify” them–i.e., by providing the mechanisms for a “key-lookup-execute-command loop” similar to that of Emacs, with Guile inside.

See the initial discussion for details.

Happy hacking!

GNU Guile 2.0.9 released

Ludovic Courtès — April 10, 2013

We are pleased to announce GNU Guile release 2.0.9, the next maintenance release for the 2.0.x stable series.

This release represents 347 commits by 15 people over 4 months.

In addition to a number of bug fixes and portability improvements, this release brings new features, including an implementation of SRFI-41 streams and SRFI-45 promises, additional keyword parameters for procedures that open files, new HTTP client procedures, improvement to the numerics code, and bindings for the sendfile libc function.

See the original announcement at http://lists.gnu.org/archive/html/guile-devel/2013-04/msg00133.html for more details.

Two years of Guile 2.0

Andy Wingo — February 19, 2013

February the 16th marked the second anniversary of Guile 2.0. Guile 2 was a major upgrade to Guile's performance and expressiveness as a language, and has become a pleasant foundation for its users.

To celebrate, we organized a little birthday hack-feast -- a communal potluck of programs that Guilers brought together to share with each other. Like last year, many people took on the challenge to come up with a dish, in one month.

The Potluck's Dishes

  • Daniel Hartwig and Andy Wingo hacked out a binding to OpenGL, using the dynamic FFI to generate an interface from the OpenGL specification. They promise to release a first version soon, but for now, interested hackers should check out the guile-figl page at gitorious. Andy built a little demo around Figl, putting a bunch of particles in orbit around a central gravitational well. Check out his blog entry for more.
  • Stefan Tampe conjured up a neat distributed computation system based on the ZeroMQ messaging library. The DOCUMENTATION file over at the gitorious page has all the lovely details.
  • John Darrington announced version 0.0 of a optimizing calculator for statisticians based on GNU PSPP. The aim was not to bind PSPP directly, but to draw on its algorithms, while providing a more friendly Scheme-based interface. The source code is available in a [git://de.cellform.com/pspp-experimental Git repo] at his site.
  • Nala Ginrut hacked together a small web framework inspired by Ruby's Sinatra. It comes with a small blog example to get you up and running. The code is available on Gitorious.
  • Mark Witmer wrote XCB bindings for Guile, implemented as a language front-end for Guile's compiler whose input is the XML files used XCB.
  • Ludovic Courtès came up with a Boot-to-Guile QEMU image. The image boots a Linux-Libre kernel with an initrd containing a copy of Guile, and where the +/init+ file is a Scheme program. The image's build process is fully automated with GNU Guix. This is a preview of what the Guix-based GNU distribution will soon use.
  • Noah Lavine did some development work on the next generation of Guile's compiler and virtual machine, updating the continuation-passing-style intermediate language to the latest version of the development virtual machine. This work will make Guile faster and more amenable to native compilation. Peruse the wip-rtp-cps branch for the nitties and the gritties.
  • Aleix Conchillo filled in two important missing pieces from Guile's web tool suite, implementing a JSON parser and emitter and an XML-RPC server and client. Check out the code at the guile-json and guile-xmlrpc projects on GitHub.

Conclusion

Well, there you have it. We hope you enjoy digesting these programs as much as we enjoyed writing them, and we hope to see you at our table next year.

Happy birthday, Guile 2!

GNU Guile 2.0.7 released

Ludovic Courtès — November 30, 2012

We are pleased to announce GNU Guile 2.0.7, the next maintenance release of the 2.0.x stable series.

As usual, this release brings many bug fixes along with new features such as support for SRFI-105 curly infix expressions and per-port reader options, nested futures for parallel computations, and functional setters for SRFI-9 records.

See the original announcement at http://lists.gnu.org/archive/html/guile-devel/2012-11/msg00211.html for more details.

GNU Guile 2.0.6 released

Ludovic Courtès — July 7, 2012

We are pleased to announce GNU Guile 2.0.6, the next maintenance release of the 2.0.x stable series.

This release provides many bug fixes, as well a new features: the introduction of a new common-subexpression elemination (CSE) pass in the compiler, improved effect analysis and new optimizations in the compiler's partial evaluator (peval), new functions in the web modules, localized number output with (ice-9 format), and more.

See the original announcement at http://lists.gnu.org/archive/html/guile-devel/2012-07/msg00036.html for more details.

Happy birthday Guile 2.0!

Ludovic Courtès — February 16, 2012

Today is the first anniversary of GNU Guile 2.0 [0]. To celebrate it, several hackers several hackers took on the challenge to come up in one week with a neat hack:

• Ian Price quickly came up with GDBM bindings, written with Guile’s dynamic foreign function interface (FFI): <http://lists.gnu.org/archive/html/guile-user/2012-02/msg00020.html>.

• Nala Ginrut wrote BIG, for “Bash Inner Guile”, which extends Bash with the ability to evaluate Scheme expressions: <http://lists.gnu.org/archive/html/guile-user/2012-02/msg00026.html>.

• Mike Gran polished his port of GNU Zile to Guile: <http://lists.gnu.org/archive/html/guile-user/2012-02/msg00033.html>.

Shortly after, he released a new version, along with an implementation of Tetris in Scheme that uses GNU Guile-Ncurses: <http://lists.gnu.org/archive/html/guile-user/2012-02/msg00041.html>.

• Ludovic Courtès brought Guile-GCC, which allows GCC to be extended in Guile: <http://gcc.gnu.org/ml/gcc/2012-02/msg00323.html>.

Happy birthday Guile 2.0, and happy GNU hacking!

[0] http://lists.gnu.org/archive/html/guile-devel/2011-02/msg00173.html
[1] http://lists.gnu.org/archive/html/guile-user/2012-02/msg00019.html

GNU Guile 2.0.4 released

Ludovic Courtès — January 30, 2012

We are pleased to announce GNU Guile 2.0.3, the fourth maintenance release of the 2.0.x stable series.

This release provides many bug fixes, including better portability and an improved compatibility with version 1.8, garbage-collection-related performance improvements, and some new features such as a better random state seed, functional file system traversal procedures, and syntax parameters.

See the original announcement at http://lists.gnu.org/archive/html/guile-devel/2012-01/msg00521.html for more details.

GNU Guile 2.0.5 released

Ludovic Courtès — January 30, 2012

GNU Guile 2.0.5 was just released, to fix the incorrect binary interface information (SONAME) found in libguile in 2.0.4. It does not contain other changes.

Please be sure to upgrade to 2.0.5 if you already installed 2.0.4.
We apologize for the inconvenience.

Guile 2.0 manual available from your bookstore!

Ludovic Courtès — December 14, 2011

The manual of GNU Guile 2.0 has been published under ISBN 978-1-906966-15-7 by Network Theory, Ltd, a UK-based publisher, and is now available from any good bookstore! See http://www.network-theory.co.uk/guile/manual/ for more details.

It is a paperback of the Guile 2.0.3 reference manual, covering almost all the aspects of using Guile from Scheme and C, its modules, as well as its internals, and a discussion of the project's history and rationale.

The book is fairly impressive: 918 pages, 1.4 kg (3.0 lb), reflecting 15 years of work by more than 20 writers.

If you were looking for a present for your beloved, this is surely a good candidate. :-)

Thanks to Brian Gough for making it possible!

GNU Guile 2.0.3 released

Ludovic Courtès — October 22, 2011

We are pleased to announce GNU Guile 2.0.3, the third maintenance release of the 2.0.x stable series.

The main highlight of this release is the compiler's new optimizer, based on a partial evaluator. It provides the usual optimizations: procedure inlining, copy propagation, and constant folding. The new REPL `,optimize' command allows users to see how it would optimize a given expression.

The release also comes with a few new features and many bug fixes.

See https://lists.gnu.org/archive/html/guile-devel/2011-10/msg00034.html for the original announcement.

GNU Guile 2.0.2 released

Ludovic Courtès — July 2, 2011

We are pleased to announce GNU Guile 2.0.2, the second maintenance release of the new 2.0.x stable series.

This release contains a few new features, optimizations, and bug fixes. More importantly, the `guile-tools' program has been renamed `guild'. "Its intended future use is for a CPAN-like system for Guile wizards and journeyfolk to band together to share code; hence the name", says Andy Wingo.

See the original announcement at http://lists.gnu.org/archive/html/guile-devel/2011-07/msg00017.html for details. Don't miss http://lists.gnu.org/archive/html/guile-devel/2011-06/msg00026.html for our plans to build the guildhall.

Join us now, share the software, and be a part of the guild!

GNU Guile 2.0.1 released

Ludovic Courtès — April 28, 2011

We are pleased to announce GNU Guile 2.0.1, the first and overdue maintenance release of the brand new 2.0.x stable series.

This release contains many bug fixes along with some new features. See the original announcement at http://lists.gnu.org/archive/html/guile-devel/2011-04/msg00233.html for details.

GNU Guile 2.0.0 released!

Ludovic Courtès — February 16, 2011

We are pleased to announce GNU Guile 2.0.0, the first of a new stable series, after 16 pre-releases on almost 3 years. We're very excited about all the new things in there. We hope you'll like it too and come up with neat ideas to guilify GNU!

In a nutshell, compared to the 1.8 stable series, Guile 2.0 brings a new compiler infrastructure and VM, which can compile Scheme (and ECMAScript, and Emacs Lisp) to bytecode, a new powerful REPL and integrated debugger, native support for hygienic macros, Unicode, good R6RS compatibility, a dynamic foreign function interface (FFI), use of the Boehm-Demers-Weiser GC, and many, many new modules and improvements.

See http://gnu.org/software/guile/news.html and the original announcement at http://lists.gnu.org/archive/html/guile-devel/2011-02/msg00173.html for details.

Many thanks to the numerous contributors and testers, and a special thanks to Andy Wingo for initiating the 1.9/2.0 adventure and for his tireless work adding all these bells and whistles that make Guile 2.0 so nice.

GNU Guile 1.9.15 released, last call before 2.0!

Ludovic Courtès — February 2, 2011

We are pleased to announce GNU Guile 1.9.15, the sixteenth and last pre-release before 2.0, featuring a compiler and virtual machine, and a large set of exciting new features. Yes, that's right, the last one: 2.0 is due on February 16th!

This pre-release comes with many bug fixes and improvements, including faster Unicode I/O with better error reporting, improved math functions, and better R6RS compatibility.

See http://lists.gnu.org/archive/html/guile-devel/2011-02/msg00041.html for the original announcement.

Last but not least, if you're around, don't miss Andy Wingo's Guile talk at FOSDEM this Saturday: http://fosdem.org/2011/schedule/event/guile .

GNU Guile 1.9.14 released

Ludovic Courtès — December 17, 2010

We are pleased to announce GNU Guile 1.9.14, the fifteenth and one of the last pre-releases before 2.0, featuring a compiler and virtual machine, and a large set of exciting new features. As usual feedback, bug reports, etc., are all welcome!

In addition to bug fixes, this release adds modules for dealing with HTTP, including a built-in web server, support for fine-grain parallelism using "futures", and this Summer of Code work on the Emacs Lisp compiler.

See http://lists.gnu.org/archive/html/guile-devel/2010-12/msg00031.html for the original announcement.

GNU Guile 1.8.8 released

Ludovic Courtès — December 13, 2010

We are pleased to announce GNU Guile release 1.8.8. This is a bug-fix release of the 1.8 stable series. See http://lists.gnu.org/archive/html/guile-devel/2010-12/msg00023.html for the original announcement.

Note that development effort is currently spent on the 1.9 unstable
series, which will lead to the 2.0 stable series within a couple of
months. The 1.9 series provides many new noteworthy features, most
notably the addition of a compiler and virtual machine. Users are
encouraged to test it and provide feedback

GNU Guile 1.9.13 released

Ludovic Courtès — October 17, 2010

We are pleased to announce GNU Guile 1.9.13, the fourteenth and one of the last pre-releases before 2.0, featuring a compiler and virtual machine and a large set of exciting new features. As usual feedback, bug reports, portability issues, etc., are all welcome!

Among others, this release comes with new debugging facilities at the REPL (breakpoints, tracepoints, stepping), several new SRFI implementations, and many bug fixes.

See http://lists.gnu.org/archive/html/guile-devel/2010-10/msg00075.html for the original announcement.

GNU Guile 1.9.12 released

Ludovic Courtès — September 4, 2010

We are pleased to announce GNU Guile 1.9.12, the thirteenth and one of the last pre-releases before 2.0, featuring a compiler and virtual machine and a large set of exciting new features. As usual feedback, bug reports, portability issues, etc., are all welcome!

Summer holidays in this hemisphere reduced the release pace, though the list of news and bug fixes is pretty long. These changes bring us closer to our expectations for 2.0.

Among other things 1.9.12 comes with a new "recursive REPL" for debugging (similar to Emacs' recursive editing levels), improvements to the dynamic foreign function interface (FFI), and various R6RS bug fixes.

See http://lists.gnu.org/archive/html/guile-devel/2010-09/msg00033.html for the original announcement.

GNU Guile 1.9.11, the very last pre-release?

Ludovic Courtès — June 2, 2010

We are pleased to announce GNU Guile 1.9.11, the twelfth and probably last pre-release before 2.0, featuring a compiler and virtual machine and a large set of exciting new features. As usual feedback, bug reports, portability issues, etc., are all welcome!

Granted, we already said last month that 1.9.10 may be the last pre-release. But there's been such a wealth of contributions, improvements, and bug fixes that publishing another pre-release made a lot of sense.

To name a few: the R6RS `library' form and most of the R6RS standard libraries were added, there are new modules for SXML pattern matching and for code coverage reports, and the mechanics of macro expansion have been harmonized between the compiler, the expander, and the evaluator.

See http://lists.gnu.org/archive/html/guile-devel/2010-06/msg00013.html for the original announcement.

The story of GNU, Guile, and Emacs

Ludovic Courtès — April 22, 2010

From its inception Guile was aimed to become the extension language of the GNU System, including eventually that of Emacs. While the latter is not yet a reality, the idea is in the GNU hacker Zeitgeist.

Recently, Emacs developers discussed about a possible integration of Guile in Emacs, which led to interesting discussions: http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00665.html .

GNU Guile 1.9.10, the last pre-release?

Ludovic Courtès — April 15, 2010

We are pleased to announce GNU Guile 1.9.10, the eleventh and probably last pre-release before 2.0, featuring a compiler and virtual machine and a large set of exciting new features. As usual feedback, bug reports, portability issues, etc., are all welcome!

This release focuses on documentation updates, better integration of Emacs Lisp's nil, and the addition of Dominique Boucher's `lalr-scm' parser generator.

See http://lists.gnu.org/archive/html/guile-devel/2010-04/msg00094.html for the original announcement.

GNU Guile 1.9.9 released, getting closer!

Ludovic Courtès — March 19, 2010

We are pleased to announce GNU Guile 1.9.9, the tenth pre-release of what will soon become the 2.0 stable series, featuring a compiler and virtual machine. If you haven't tried it yet, please do and report back!

This release adds support for delimited and composable continuations, a powerful mechanism that allows part of a program's control flow to be captured and reinstated. Besides, the release focuses on performance and usability improvements as well as bug fixes.

See http://lists.gnu.org/archive/html/guile-devel/2010-03/msg00055.html for the announcement.

GNU Guile 1.9.8 released!

Ludovic Courtès — February 17, 2010

We are pleased to announce GNU Guile 1.9.8. It is the ninth pre-release of what will eventually become the 2.0 stable series, featuring a compiler and virtual machine.

This release brings us closer to 2.0, bringing a new dynamic "foreign function interface" (FFI), an implementation of Phil Bagwell's vlists and hash lists, and the usual collection of optimizations, bug fixes, and portability improvements. See http://lists.gnu.org/archive/html/guile-devel/2010-02/msg00030.html for the announcement.

GNU Guile 1.9.7 released!

Ludovic Courtès — January 19, 2010

We are pleased to announce GNU Guile 1.9.7. It is the eighth pre-release of what will eventually become the 2.0 stable series, featuring a compiler and virtual machine.

This release improves the efficiency of function call dispatch in the VM, adds a new debugger, new profiling and tracing commands at the REPL, as well as new modules (SSAX, Texinfo). See http://lists.gnu.org/archive/html/guile-devel/2010-01/msg00092.html for the complete announcement.

GNU Guile 1.9.6 released!

Ludovic Courtès — December 16, 2009

We are pleased to announce GNU Guile 1.9.6. It is the seventh pre-release of what will eventually become the 2.0 stable series, featuring a compiler and virtual machine.

This release includes a wealth of exciting new features, including a new `eval' written in Scheme (a meta-circular evaluator), integrated dispatch of GOOPS methods in the VM, and –last but not least– an Emacs Lisp compiler! See http://lists.gnu.org/archive/html/guile-devel/2009-12/msg00035.html for the complete announcement.

GNU Guile 1.9.5 released!

Ludovic Courtès — November 18, 2009

We are pleased to announce GNU Guile 1.9.5. It is the sixth pre-release of what will eventually become the 2.0 stable series, featuring a compiler and virtual machine.

This release provides, among other things, support for `case-lambda' (multiple-arity procedures), a more efficient calling convention for procedures with keyword and optional arguments, better support for Emacs Lisp's `nil', and new compiler warnings.

See the announcement at http://lists.gnu.org/archive/html/guile-devel/2009-11/msg00065.html for details.

GNU Guile 1.9.4 released

Ludovic Courtès — October 16, 2009

We are pleased to announce GNU Guile 1.9.4. It is the fifth pre-release of what will eventually become the 2.0 stable series, featuring a compiler and virtual machine.

This release provides assorted improvements and bug fixes. See the announcement at http://lists.gnu.org/archive/html/guile-devel/2009-10/msg00075.html for details.

GNU Guile 1.9.3 is out!

Ludovic Courtès — September 16, 2009

We are pleased to announce GNU Guile 1.9.3. It is the fourth pre-release of what will eventually become the 2.0 stable series, featuring a compiler and virtual machine.

The highlights of this release are Unicode support (use `?' instead of `lambda'!) and the switch to libgc, the Boehm-Demers-Weiser conservative garbage collector.

The original announcement is available at http://lists.gnu.org/archive/html/guile-devel/2009-09/msg00090.html .

GNU Guile 1.9.2 released!

Ludovic Courtès — August 15, 2009

GNU Guile 1.9.2 has been released today. It is the third pre-release of what will eventually become the 2.0 stable series. Compared to the 1.8 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 `guile-devel@gnu.org'.

The original announcement can be read at http://lists.gnu.org/archive/html/guile-devel/2009-08/msg00111.html .