We are pleased to announce GNU Guile release 2.0.9, the next maintenance release for the 2.0.x stable series.
This release contains 347 commits by 15 people over 4 months. The Guile web page is located at http://gnu.org/software/guile/ . Guile is an implementation of the Scheme programming language, with support for many SRFIs, packaged for use in a wide variety of environments. In addition to implementing the R5RS Scheme standard and a large subset of R6RS, Guile includes a module system, full access to POSIX system calls, networking support, multiple threads, dynamic linking, a foreign function call interface, and powerful string processing. Guile can run interactively, as a script interpreter, and as a Scheme compiler to VM bytecode suitable for stand-alone applications. It is also packaged as a library so that applications can easily incorporate a complete Scheme interpreter/VM. An application can use Guile as an extension language, a clean and powerful configuration language, or as multi-purpose "glue" to connect primitives provided by the application. Here are the compressed sources: ftp://ftp.gnu.org/gnu/guile/guile-2.0.9.tar.gz (7.1MB) ftp://ftp.gnu.org/gnu/guile/guile-2.0.9.tar.xz (4.4MB) Here are the GPG detached signatures[*]: ftp://ftp.gnu.org/gnu/guile/guile-2.0.9.tar.gz.sig ftp://ftp.gnu.org/gnu/guile/guile-2.0.9.tar.xz.sig Use a mirror for higher download bandwidth: http://www.gnu.org/order/ftp.html Here are the MD5 and SHA1 checksums: 531839c3fe887382ca9d4774db544d34 guile-2.0.9.tar.gz a69b575d4a633bdd9118f3a4a1e97766 guile-2.0.9.tar.xz fc5d770e8b1d364b2f222a8f8c96ccf740b2956f guile-2.0.9.tar.gz a2275c23c4a03e8dbd5e500c47af694e14d2365b guile-2.0.9.tar.xz [*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this: gpg --verify guile-2.0.9.tar.gz.sig If that command fails because you don't have the required public key, then run this command to import it: gpg --keyserver keys.gnupg.net --recv-keys EA52ECF4 and rerun the 'gpg --verify' command. This release was bootstrapped with the following tools: Autoconf 2.69 Automake 1.13.1 Libtool 2.4.2 Gnulib v0.0-7865-ga828bb2 Makeinfo 5.1 This release provides new features, many bug fixes, and performance improvements. Here are the highlights, taken from the `NEWS' file: Changes in 2.0.9 (since 2.0.7): Note: 2.0.8 was a brown paper bag release that was never announced, but some mirrors may have picked it up. Please do not use it. * Notable changes ** New keyword arguments for procedures that open files The following procedures that open files now support keyword arguments to request binary I/O or to specify the character encoding for text files: `open-file', `open-input-file', `open-output-file', `call-with-input-file', `call-with-output-file', `with-input-from-file', `with-output-to-file', and `with-error-to-file'. It is also now possible to specify whether Guile should scan files for Emacs-style coding declarations. This scan was done by default in versions 2.0.0 through 2.0.7, but now must be explicitly requested. See "File Ports" in the manual for details. ** Rewritten guile.m4 The `guile.m4' autoconf macros have been rewritten to use `guild' and `pkg-config' instead of the deprecated `guile-config' (which itself calls pkg-config). There is also a new macro, `GUILE_PKG', which allows packages to select the version of Guile that they want to compile against. See "Autoconf Macros" in the manual, for more information. ** Better Windows support Guile now correctly identifies absolute paths on Windows (MinGW), and creates files on that platform according to its path conventions. See "File System" in the manual, for all details. In addition, the new Gnulib imports provide `select' and `poll' on Windows builds. As an incompatible change, systems that are missing <sys/select.h> were previously provided a public `scm_std_select' C function that defined a version of `select', but unhappily it also provided its own incompatible definitions for FD_SET, FD_ZERO, and other system interfaces. Guile should not be setting these macros in public API, so this interface was removed on those plaforms (basically only MinGW). ** Numerics improvements `number->string' now reliably outputs enough digits to produce the same number when read back in. Previously, it mishandled subnormal numbers (printing them as "#.#"), and failed to distinguish between some distinct inexact numbers, e.g. 1.0 and (+ 1.0 (expt 2.0 -52)). These problems had far-reaching implications, since the compiler uses `number->string' to serialize numeric constants into .go files. `sqrt' now produces exact rational results when possible, and handles very large or very small numbers more robustly. A number (ahem) of operations involving exact rationals have been optimized, most notably `integer-expt' and `expt'. `exact->inexact' now performs correct IEEE rounding. ** New optimizations There were a number of improvements to the partial evaluator, allowing complete reduction of forms such as: ((let ((_ 10)) (lambda () _))) ((lambda _ _)) (apply (lambda _ _) 1 2 3 '(4)) (call-with-values (lambda () (values 1 2)) (lambda _ _)) `string-join' now handles huge lists efficiently. `get-bytevector-some' now uses buffered input, which is much faster. Finally, `array-ref', `array-set!' on arrays of rank 1 or 2 is now faster, because it avoids building a rest list. Similarly, the one-argument case of `array-for-each' and `array-map!' has been optimized, and `array-copy!' and `array-fill!' are faster. ** `peek-char' no longer consumes EOF As required by the R5RS, if `peek-char' returns EOF, then the next read will also return EOF. Previously `peek-char' would consume the EOF. This makes a difference for terminal devices where it is possible to read past an EOF. ** Gnulib update Guile's copy of Gnulib was updated to v0.0-7865-ga828bb2. The following modules were imported from Gnulib: select, times, pipe-posix, fstat, getlogin, poll, and c-strcase. ** `include' resolves relative file names relative to including file Given a relative file name, `include' will look for it relative to the directory of the including file. This harmonizes the behavior of `include' with that of `load'. ** SLIB compatibility restored Guile 2.0.8 is now compatible with SLIB. You will have to use a development version of SLIB, however, until a new version of SLIB is released. ** Better ,trace REPL command Sometimes the ,trace output for nested function calls could overflow the terminal width, which wasn't useful. Now there is a limit to the amount of space the prefix will take. See the documentation for ",trace" for more information. ** Better docstring syntax supported for `case-lambda' Docstrings can now be placed immediately after the `case-lambda' or `case-lambda*' keyword. See "Case-lambda" in the manual. ** Improved handling of Unicode byte order marks See "BOM Handling" in the manual for details. ** Update predefined character sets to Unicode 6.2 ** GMP 4.2 or later required Guile used to require GMP at least version 4.1 (released in May 2002), and now requires at least version 4.2 (released in March 2006). * Manual updates ** Better SXML documentation The documentation for SXML modules was much improved, though there is still far to go. See "SXML" in manual. ** Style updates Use of "iff" was replaced with standard English. Keyword arguments are now documented consistently, along with their default values. ** An end to the generated-documentation experiment When Guile 2.0 imported some modules from Guile-Lib, they came with a system that generated documentation from docstrings and module commentaries. This produced terrible documentation. We finally bit the bullet and incorporated these modules into the main text, and will be improving them manually over time, as is the case with SXML. Help is appreciated. ** New documentation There is now documentation for `scm_array_type', and `scm_array_ref', as well as for the new `array-length' / 'scm_c_array_length' / `scm_array_length' functions. `array-in-bounds?' has better documentation as well. The `program-arguments-alist' and `program-lambda-list' functions are now documented, as well as `and=>', `exit', and `quit'. The (system repl server) module is now documented (see REPL Servers). Finally, the GOOPS class hierarchy diagram has been regenerated for the web and print output formats. * New deprecations ** Deprecate generalized vector interface The generalized vector interface, introduced in 1.8.0, is simply a redundant, verbose interface to arrays of rank 1. `array-ref' and similar functions are entirely sufficient. Thus, `scm_generalized_vector_p', `scm_generalized_vector_length', `scm_generalized_vector_ref', `scm_generalized_vector_set_x', and `scm_generalized_vector_to_list' are now deprecated. ** Deprecate SCM_CHAR_CODE_LIMIT and char-code-limit These constants were defined to 256, which is not the highest codepoint supported by Guile. Given that they were useless and incorrect, they have been deprecated. ** Deprecate `http-get*' The new `#:streaming?' argument to `http-get' subsumes the functionality of `http-get*' (introduced in 2.0.7). Also, the `#:extra-headers' argument is deprecated in favor of `#:headers'. ** Deprecate (ice-9 mapping) This module, present in Guile since 1996 but never used or documented, has never worked in Guile 2.0. It has now been deprecated and will be removed in Guile 2.2. ** Deprecate undocumented array-related C functions These are `scm_array_fill_int', `scm_ra_eqp', `scm_ra_lessp', `scm_ra_leqp', `scm_ra_grp', `scm_ra_greqp', `scm_ra_sum', `scm_ra_product', `scm_ra_difference', `scm_ra_divide', and `scm_array_identity'. * New interfaces ** SRFI-41 Streams See "SRFI-41" in the manual. ** SRFI-45 exports `promise?' SRFI-45 now exports a `promise?' procedure that works with its promises. Also, its promises now print more nicely. ** New HTTP client procedures See "Web Client" for documentation on the new `http-head', `http-post', `http-put', `http-delete', `http-trace', and `http-options' procedures, and also for more options to `http-get'. ** Much more capable `xml->sxml' See "Reading and Writing XML" for information on how the `xml->sxml' parser deals with namespaces, processed entities, doctypes, and literal strings. Incidentally, `current-ssax-error-port' is now a parameter object. ** New procedures for converting strings to and from bytevectors See "Representing Strings as Bytes" for documention on the new `(ice-9 iconv)' module and its `bytevector->string' and `string->bytevector' procedures. ** Escape continuations with `call/ec' and `let/ec' See "Prompt Primitives". ** New procedures to read all characters from a port See "Line/Delimited" in the manual for documentation on `read-string' and `read-string!'. ** New procedure `sendfile' See "File System". ** New procedure `unget-bytevector' See "R6RS Binary Input". ** New C helper: `scm_c_bind_keyword_arguments' See "Keyword Procedures". ** New command-line arguments: `--language' and `-C' See "Command-line Options" in the manual. ** New environment variables: `GUILE_STACK_SIZE', `GUILE_INSTALL_LOCALE' See "Environment Variables". ** New procedures for dealing with file names See "File System" for documentation on `system-file-name-convention', `file-name-separator?', `absolute-file-name?', and `file-name-separator-string'. ** `array-length', an array's first dimension See "Array Procedures". ** `hash-count', for hash tables See "Hash Tables". ** `round-ash', a bit-shifting operator that rounds on right-shift See "Bitwise Operations". ** New foreign types: `ssize_t', `ptrdiff_t' See "Foreign Types". ** New C helpers: `scm_from_ptrdiff_t', `scm_to_ptrdiff_t' See "Integers". ** Socket option `SO_REUSEPORT' now available from Scheme If supported on the platform, `SO_REUSEPORT' is now available from Scheme as well. See "Network Sockets and Communication". ** `current-language' in default environment Previously defined only in `(system base language)', `current-language' is now defined in the default environment, and is used to determine the language for the REPL, and for `compile-and-load'. ** New procedure: `fluid->parameter' See "Parameters", for information on how to convert a fluid to a parameter. ** New `print' REPL option See "REPL Commands" in the manual for information on the new user-customizable REPL printer. ** New variable: %site-ccache-dir The "Installing Site Packages" and "Build Config" manual sections now refer to this variable to describe where users should install their `.go' files. * Build fixes ** Fix compilation against libgc 7.3. ** Fix cross-compilation of `c-tokenize.o'. ** Fix warning when compiling against glibc 2.17. ** Fix documentation build against Texinfo 5.0. ** Fix building Guile from a directory with non-ASCII characters. ** Fix native MinGW build. ** Fix --disable-posix build. ** Fix MinGW builds with networking, POSIX, and thread support. * Bug fixes ** Fix inexact number printer. (http://bugs.gnu.org/13757) ** Fix infinite loop when parsing optional-argument short options (SRFI-37). (http://bugs.gnu.org/13176) ** web: Support non-GMT date headers in the HTTP client. (http://bugs.gnu.org/13544) ** web: support IP-literal (IPv6 address) in Host header. ** Avoid stack overflows with `par-map' and nested futures in general. (http://bugs.gnu.org/13188) ** Peek-char no longer consumes EOF. (http://bugs.gnu.org/12216) ** Avoid swallowing multiple EOFs in R6RS binary-input procedures. ** A fork when multiple threads are running will now print a warning. ** Allow for spurious wakeups from pthread_cond_wait. (http://bugs.gnu.org/10641) ** Warn and ignore module autoload failures. (http://bugs.gnu.org/12202) ** Use chmod portably in (system base compile). (http://bugs.gnu.org/10474) ** Fix response-body-port for HTTP responses without content-length. (http://bugs.gnu.org/13857) ** Allow case-lambda expressions with no clauses. (http://bugs.gnu.org/9776) ** Improve standards conformance of string->number. (http://bugs.gnu.org/11887) ** Support calls and tail-calls with more than 255 formals. ** ,option evaluates its right-hand-side. (http://bugs.gnu.org/13076) ** Structs with tail arrays are not simple. (http://bugs.gnu.org/12808) ** Make `SCM_LONG_BIT' usable in preprocessor conditionals. (http://bugs.gnu.org/13848) ** Fix thread-unsafe lazy initializations. ** Allow SMOB mark procedures to be called from parallel markers. (http://bugs.gnu.org/13611) ** Fix later-bindings-win logic in with-fluids. (http://bugs.gnu.org/13843) ** Fix duplicate removal of with-fluids. (http://bugs.gnu.org/13838) ** Support calling foreign functions of 10 arguments or more. (http://bugs.gnu.org/13809) ** Let reverse! accept arbitrary types as second argument. (http://bugs.gnu.org/13835) ** Recognize the `x86_64.*-gnux32' triplet. ** Check whether a triplet's OS part specifies an ABI. ** Recognize mips64* as having 32-bit pointers by default. ** Use portable sed constructs. (http://bugs.gnu.org/14042) ** Remove language/glil/decompile-assembly.scm. (http://bugs.gnu.org/10622) ** Use O_BINARY in `copy-file', `load-objcode', `mkstemp'. ** Use byte-oriented functions in `get-bytevector*'. ** Fix abort when iconv swallows BOM from UTF-16 or UTF-32 stream. ** Fix compilation of functions with more than 255 local variables. ** Fix `getgroups' for when zero supplementary group IDs exist. ** Allow (define-macro name (lambda ...)). ** Various fixes to the (texinfo) modules. ** guild: Gracefully handle failures to install the locale. ** Fix format string warnings for ~!, ~|, ~/, ~q, ~Q, and ~^. (http://bugs.gnu.org/13485) ** Fix source annotation bug in psyntax 'expand-body'. ** Ecmascript: Fix conversion to boolean for non-numbers. ** Use case-insensitive comparisons for encoding names. ** Add missing cond-expand feature identifiers. ** A failure to find a module's file does not prevent future loading. ** Many (oop goops save) fixes. ** `http-get': don't shutdown write end of socket. (http://bugs.gnu.org/13095) ** Avoid signed integer overflow in scm_product. ** http: read-response-body always returns bytevector or #f, never EOF. ** web: Correctly detect "No route to host" conditions. ** `system*': failure to execvp no longer leaks dangling processes. (http://bugs.gnu.org/13166) ** More sensible case-lambda* dispatch. (http://bugs.gnu.org/12929) ** Do not defer expansion of internal define-syntax forms. (http://bugs.gnu.org/13509) You can follow Guile development in the Git repository and on the Guile mailing lists. Guile builds from the `master' branch of Git have version number 2.1.x. Guile versions with an odd middle number, e.g., 2.1.*, are unstable development versions. Even middle numbers indicate stable versions. This has been the case since the 1.3.* series. Please report bugs to `bug-gu...@gnu.org'. We also welcome reports of successful builds, which can be sent to the same email address. Ludovic, on behalf of the Guile team.
pgpCwlB38YtN4.pgp
Description: PGP signature