Sound very exciting. Congratulations on the great work that continues to be done on Guile.
Best wishes, Alex On Wed, Apr 10, 2013 at 7:51 AM, Ludovic Courtès <l...@gnu.org> wrote: > 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. >