Ludovic Courtès — January 10, 2017
GNU Guile has its own session
at FOSDEM this year again. The
available. Talks cover a range of topics:
FOSDEM takes place in Brussels, Belgium, on the 4th and 5th of
track all day long on Sunday 5th. Hope to see you there!
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
announcement for full details and a download link.
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.
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:
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.)
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.
Andy Wingo — July 14, 2016
Andy Wingo — June 19, 2016
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.
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.
announcement for full details and a download link.
Ludovic Courtès — December 30, 2015
Ludovic Courtès — November 23, 2015
GNU Guile will have its own developer room at FOSDEM 2016, which will take place in Brussels, Belgium, 3031 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! :-)
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.
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.
Ludovic Courtès — March 18, 2014
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!
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” themi.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.
Ludovic Courtès — April 10, 2013
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.
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!
Ludovic Courtès — November 30, 2012
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.
Ludovic Courtès — February 16, 2012
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.
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.
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!
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.
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!
Ludovic Courtès — April 28, 2011
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.
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 .
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.
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
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.
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.
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.
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 .
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.
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.
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.
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.
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.
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.
Ludovic Courtès — October 16, 2009
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 .
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 `email@example.com'.
The original announcement can be read at http://lists.gnu.org/archive/html/guile-devel/2009-08/msg00111.html .