We are pleased to announce GNU Guile release 2.0.1, the next maintenance release for the 2.0.x stable series.
The Guile web page is located at http://gnu.org/software/guile/, and among other things, it contains a link to the Guile FAQ and pointers to the mailing lists. 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.1.tar.gz (6.4MB) Here are the GPG detached signatures[*]: ftp://ftp.gnu.org/gnu/guile/guile-2.0.1.tar.gz.sig To reduce load on the main server, use a mirror listed at: http://www.gnu.org/order/ftp.html Here are the MD5 and SHA1 checksums: b68f66fbdcbf65036ce4af5f915000f5 guile-2.0.1.tar.gz 3276a826f17a5edc0baf2eedc4821a771824141b guile-2.0.1.tar.gz [*] You can use either of the above signature files 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.1.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.68 Automake 1.11.1 Libtool 2.4 Gnulib v0.0-5158-g7d06b32 This release contains many bug fixes along with some new features. Here are the highlights, taken from the `NEWS' file: Changes in 2.0.1 (since 2.0.0): * Notable changes ** guile.m4 supports linking with rpath The GUILE_FLAGS macro now sets GUILE_LIBS and GUILE_LTLIBS, which include appropriate directives to the linker to include libguile-2.0.so in the runtime library lookup path. ** `begin' expands macros in its body before other expressions This enables support for programs like the following: (begin (define even? (lambda (x) (or (= x 0) (odd? (- x 1))))) (define-syntax odd? (syntax-rules () ((odd? x) (not (even? x))))) (even? 10)) ** REPL reader usability enhancements The REPL now flushes input after a read error, which should prevent one error from causing other errors. The REPL also now interprets comments as whitespace. ** REPL output has configurable width The REPL now defaults to output with the current terminal's width, in columns. See "Debug Commands" in the manual for more information on the ,width command. ** Better C access to the module system Guile now has convenient C accessors to look up variables or values in modules and their public interfaces. See `scm_c_public_ref' and friends in "Accessing Modules from C" in the manual. ** Added `scm_call_5', `scm_call_6' See "Fly Evaluation" in the manual. ** Added `scm_from_latin1_keyword', `scm_from_utf8_keyword' See "Keyword Procedures" in the manual, for more. Note that `scm_from_locale_keyword' should not be used when the name is a C string constant. ** R6RS unicode and string I/O work Added efficient implementations of `get-string-n' and `get-string-n!' for binary ports. Exported `current-input-port', `current-output-port' and `current-error-port' from `(rnrs io ports)', and enhanced support for transcoders. ** Added `pointer->scm', `scm->pointer' to `(system foreign)' These procedure are useful if one needs to pass and receive SCM values to and from foreign functions. See "Foreign Variables" in the manual, for more. ** Added `heap-allocated-since-gc' to `(gc-stats)' Also fixed the long-standing bug in the REPL `,stat' command. ** Add `on-error' REPL option This option controls what happens when an error occurs at the REPL, and defaults to `debug', indicating that Guile should enter the debugger. Other values include `report', which will simply print a backtrace without entering the debugger. See "System Commands" in the manual. ** Enforce immutability of string literals Attempting to mutate a string literal now causes a runtime error. ** Fix pthread redirection Guile 2.0.0 shipped with headers that, if configured with pthread support, would re-define `pthread_create', `pthread_join', and other API to redirect to the BDW-GC wrappers, `GC_pthread_create', etc. This was unintended, and not necessary: because threads must enter Guile with `scm_with_guile', Guile can handle thread registration itself, without needing to make the GC aware of all threads. This oversight has been fixed. ** `with-continuation-barrier' now unwinds on `quit' A throw to `quit' in a continuation barrier will cause Guile to exit. Before, it would do so before unwinding to the barrier, which would prevent cleanup handlers from running. This has been fixed so that it exits only after unwinding. ** `string->pointer' and `pointer->string' have optional encoding arg This allows users of the FFI to more easily deal in strings with particular (non-locale) encodings, like "utf-8". See "Void Pointers and Byte Access" in the manual, for more. ** R6RS fixnum arithmetic optimizations R6RS fixnum operations are are still slower than generic arithmetic, however. ** New procedure: `define-inlinable' See "Inlinable Procedures" in the manual, for more. ** New procedure: `exact-integer-sqrt' See "Integer Operations" in the manual, for more. ** "Extended read syntax" for symbols parses better In #{foo}# symbols, backslashes are now treated as escapes, as the symbol-printing code intended. Additionally, "\x" within #{foo}# is now interpreted as starting an R6RS hex escape. This is backward compatible because the symbol printer would never produce a "\x" before. The printer also works better too. ** Added `--fresh-auto-compile' option This allows a user to invalidate the auto-compilation cache. It's usually not needed. See "Compilation" in the manual, for a discussion. * Manual updates ** GOOPS documentation updates ** New man page Thanks to Mark Harig for improvements to guile.1. ** SRFI-23 documented The humble `error' SRFI now has an entry in the manual. * New modules ** `(ice-9 binary-ports)': "R6RS I/O Ports", in the manual ** `(ice-9 eval-string)': "Fly Evaluation", in the manual ** `(ice-9 command-line)', not documented yet * Bugs fixed ** Fixed `iconv_t' memory leak on close-port ** Fixed some leaks with weak hash tables ** Export `vhash-delq' and `vhash-delv' from `(ice-9 vlist)' ** `after-gc-hook' works again ** `define-record-type' now allowed in nested contexts ** `exact-integer-sqrt' now handles large integers correctly ** Fixed C extension examples in manual ** `vhash-delete' honors HASH argument ** Make `locale-digit-grouping' more robust ** Default exception printer robustness fixes ** Fix presence of non-I CPPFLAGS in `guile-2.0.pc' ** `read' updates line/column numbers when reading SCSH block comments ** Fix imports of multiple custom interfaces of same module ** Fix encoding scanning for non-seekable ports ** Fix `setter' when called with a non-setter generic ** Fix f32 and f64 bytevectors to not accept rationals ** Fix description of the R6RS `finite?' in manual ** Quotient, remainder and modulo accept inexact integers again ** Fix `continue' within `while' to take zero arguments ** Fix alignment for structures in FFI ** Fix port-filename of stdin, stdout, stderr to match the docs ** Fix weak hash table-related bug in `define-wrapped-pointer-type' ** Fix partial continuation application with pending procedure calls ** scm_{to,from}_locale_string use current locale, not current ports ** Fix thread cleanup, by using a pthread_key destructor ** Fix `quit' at the REPL ** Fix a failure to sync regs in vm bytevector ops ** Fix (texinfo reflection) to handle nested structures like syntax patterns ** Fix stexi->html double translation ** Fix tree-il->scheme fix for <prompt> ** Fix compilation of <prompt> in <fix> in single-value context ** Fix race condition in ensure-writable-dir ** Fix error message on ,disassemble "non-procedure" ** Fix prompt and abort with the boot evaluator ** Fix `procedure->pointer' for functions returning `void' ** Fix error reporting in dynamic-pointer ** Fix problems detecting coding: in block comments ** Fix duplicate load-path and load-compiled-path in compilation environment ** Add fallback read(2) suppport for .go files if mmap(2) unavailable ** Fix c32vector-set!, c64vector-set! ** Fix mistakenly deprecated read syntax for uniform complex vectors ** Fix parsing of exact numbers with negative exponents ** Ignore SIGPIPE in (system repl server) ** Fix optional second arg to R6RS log function ** Fix R6RS `assert' to return true value. ** Fix fencepost error when seeking in bytevector input ports ** Gracefully handle `setlocale' errors when starting the REPL ** Improve support of the `--disable-posix' configure option ** Make sure R6RS binary ports pass `binary-port?' regardless of the locale ** Gracefully handle unterminated UTF-8 sequences instead of hitting an `assert' 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 Courtès, on behalf of the Guile team.
pgpQFWfo48eO4.pgp
Description: PGP signature
_______________________________________________ GNU Announcement mailing list <info-gnu@gnu.org> https://lists.gnu.org/mailman/listinfo/info-gnu