We are pleased to announce GNU Guile release 2.0.6, the next maintenance release for the 2.0.x stable series.
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.6.tar.gz (6.8MB) ftp://ftp.gnu.org/gnu/guile/guile-2.0.6.tar.xz (4.2MB) Here are the GPG detached signatures[*]: ftp://ftp.gnu.org/gnu/guile/guile-2.0.6.tar.gz.sig ftp://ftp.gnu.org/gnu/guile/guile-2.0.6.tar.xz.sig Use a mirror for higher download bandwidth: http://www.gnu.org/order/ftp.html Here are the MD5 and SHA1 checksums: 3438cd4415c0c43ca93a20e845eba7e2 guile-2.0.6.tar.gz 2d8f33c2c622399ca20145a5892369e2 guile-2.0.6.tar.xz aee330029ea48160071fdbd09271d80c92498669 guile-2.0.6.tar.gz d048179b03052c500779168668380dc1eafdf25a guile-2.0.6.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.6.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.12.1 Libtool 2.4.2 Gnulib v0.0-7509-g98a2286 This release provides many bug fixes, performance improvements, and some new features. Here are the highlights, taken from the `NEWS' file: * Notable changes ** New optimization pass: common subexpression elimination (CSE) Guile's optimizer will now run a CSE pass after partial evaluation. This pass propagates static information about branches taken, bound lexicals, and effects from an expression's dominators. It can replace common subexpressions with their boolean values (potentially enabling dead code elimination), equivalent bound lexicals, or it can elide them entirely, depending on the context in which they are executed. This pass is especially useful in removing duplicate type checks, such as those produced by SRFI-9 record accessors. ** Improvements to the partial evaluator Peval can now hoist tests that are common to both branches of a conditional into the test. This can help with long chains of conditionals, such as those generated by the `match' macro. Peval can now do simple beta-reductions of procedures with rest arguments. It also avoids residualizing degenerate lexical aliases, even when full inlining is not possible. Finally, peval now uses the effects analysis introduced for the CSE pass. More precise effects analysis allows peval to move more code. ** Run finalizers asynchronously in asyncs Finalizers are now run asynchronously, via an async. See Asyncs in the manual. This allows Guile and user code to safely allocate memory while holding a mutex. ** Update SRFI-14 character sets to Unicode 6.1 Note that this update causes the Latin-1 characters `§' and `¶' to be reclassified as punctuation. They were previously considered to be part of `char-set:symbol'. ** Better source information for datums When the `positions' reader option is on, as it is by default, Guile's reader will record source information for more kinds of datums. ** Improved error and warning messages `syntax-violation' errors now prefer `subform' for source info, with `form' as fallback. Syntactic errors in `cond' and `case' now produce better errors. `case' can now warn on duplicate datums, or datums that cannot be usefully compared with `eqv?'. `-Warity-mismatch' now handles applicable structs. `-Wformat' is more robust in the presence of `gettext'. Finally, various exceptions thrown by the Web modules now define appropriate exception printers. ** A few important bug fixes in the HTTP modules. Guile's web server framework now checks if an application returns a body where it is not permitted, for example in response to a HEAD request, and warn or truncate the response as appropriate. Bad requests now cause a 400 Bad Request response to be printed before closing the port. Finally, some date-printing and URL-parsing bugs were fixed. ** Pretty-print improvements When Guile needs to pretty-print Tree-IL, it will try to reconstruct `cond', `or`, and other derived syntax forms from the primitive tree-IL forms. It also uses the original names instead of the fresh unique names, when it is unambiguous to do so. This can be seen in the output of REPL commands like `,optimize'. Also, the `pretty-print' procedure has a new keyword argument, `#:max-expr-width'. ** Fix memory leak involving applicable SMOBs At some point in the 1.9.x series, Guile began leaking any applicable SMOB that was actually applied. (There was a weak-key map from SMOB to trampoline functions, where the value had a strong reference on the key.) This has been fixed. There was much rejoicing! ** Support for HTTP/1.1 chunked transfer coding See "Transfer Codings" in the manual, for more. ** Micro-optimizations A pile of micro-optimizations: the `string-trim' function when called with `char-set:whitespace'; the `(web http)' parsers; SMOB application; conversion of raw UTF-8 and UTF-32 data to and from SCM strings; vlists and vhashes; `read' when processing string literals. ** Incompatible change to `scandir' As was the original intention, `scandir' now runs the `select?' procedure on all items, including subdirectories and the `.' and `..' entries. It receives the basename of the file in question instead of the full name. We apologize for this incompatible change to this function introduced in the 2.0.4 release. * Manual updates The manual has been made much more consistent in its naming conventions with regards to formal parameters of functions. Thanks to Bake Timmons. * New interfaces ** New C function: `scm_to_pointer' ** New C inline functions: `scm_new_smob', `scm_new_double_smob' ** (ice-9 format): Add ~h specifier for localized number output. ** (web response): New procedure: `response-must-not-include-body?' ** New predicate: 'supports-source-properties?' ** New C helpers: `scm_c_values', `scm_c_nvalues' ** Newly public inline C function: `scm_unget_byte' ** (language tree-il): New functions: `tree-il=?', `tree-il-hash' ** New fluid: `%default-port-conversion-strategy' ** New syntax: `=>' within `case' ** (web http): `make-chunked-input-port', `make-chunked-output-port' ** (web http): `declare-opaque-header!' Search the manual for these identifiers, for more information. * New deprecations ** `close-io-port' deprecated Use `close-port'. ** `scm_sym2var' deprecated In most cases, replace with `scm_lookup' or `scm_module_variable'. Use `scm_define' or `scm_module_ensure_local_variable' if the second argument is nonzero. See "Accessing Modules from C" in the manual, for full details. ** Lookup closures deprecated These were never documented. See "Module System Reflection" in the manual for replacements. * Build fixes ** Fix compilation against uninstalled Guile on non-GNU platforms. ** Fix `SCM_I_ERROR' definition for MinGW without networking. ** Fix compilation with the Sun C compiler. ** Fix check for `clock_gettime' on OpenBSD and some other systems. ** Fix build with --enable-debug-malloc. ** Honor $(program_transform_name) for the `guile-tools' symlink. ** Fix cross-compilation of GOOPS-using code. * Bug fixes ** Fix use of unitialized stat buffer in search-path of absolute paths. ** Avoid calling `freelocale' with a NULL argument. ** Work around erroneous tr_TR locale in Darwin 8 in tests. ** Fix `getaddrinfo' test for Darwin 8. ** Use Gnulib's `regex' module for better regex portability. ** `source-properties' and friends work on any object ** Rewrite open-process in C, for robustness related to threads and fork ** Fix <TAG>vector-length when applied to other uniform vector types ** Fix escape-only prompt optimization (was disabled previously) ** Fix a segfault when /dev/urandom is not accessible ** Fix flush on soft ports, so that it actually runs. ** Better compatibility of SRFI-9 records with core records ** Fix and clarify documentation of `sorted?'. ** Fix IEEE-754 endianness conversion in bytevectors. ** Correct thunk check in the `wind' instruction. ** Add @acronym support to texinfo modules ** Fix docbook->texi for <ulink> without URL ** Fix `setvbuf' to leave the line/column number unchanged. ** Add missing public declaration for `scm_take_from_input_buffers'. ** Fix relative file name canonicalization with empty %LOAD-PATH entries. ** Import newer (ice-9 match) from Chibi-Scheme. ** Fix unbound variables and unbound values in ECMAScript runtime. ** Make SRFI-6 string ports Unicode-capable. 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.
pgpgPHadOxmz7.pgp
Description: PGP signature
_______________________________________________ GNU Announcement mailing list <info-gnu@gnu.org> https://lists.gnu.org/mailman/listinfo/info-gnu