[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GNU Guile 2.0.10 released
From: |
Alex Sassmannshausen |
Subject: |
Re: GNU Guile 2.0.10 released |
Date: |
Tue, 18 Mar 2014 09:35:06 +0100 |
User-agent: |
mu4e 0.9.9.5; emacs 23.4.1 |
Congratulations to all involved in this release — it sounds great and
I'm looking forward to playing with it's features!
All the best,
Alex
Ludovic Courtès writes:
> We are pleased to announce GNU Guile release 2.0.10, the next maintenance
> release for the 2.0.x stable series.
>
> This release contains 253 commits by 11 people over 11 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.10.tar.gz (7.2MB)
> ftp://ftp.gnu.org/gnu/guile/guile-2.0.10.tar.xz (4.5MB)
>
> Here are the GPG detached signatures[*]:
> ftp://ftp.gnu.org/gnu/guile/guile-2.0.10.tar.gz.sig
> ftp://ftp.gnu.org/gnu/guile/guile-2.0.10.tar.xz.sig
>
> Use a mirror for higher download bandwidth:
> http://www.gnu.org/order/ftp.html
>
> Here are the MD5 and SHA1 checksums:
>
> 74c583b173075cc576f9e7abcf394f90 guile-2.0.10.tar.gz
> 70e9d9100d84159720fe46b27210812b guile-2.0.10.tar.xz
> 784839fa8b925e3c4be75017e2dd65f4e9920a7b guile-2.0.10.tar.gz
> 5c1a9e61d796932ac6b924fd931dce29f043bfbb guile-2.0.10.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.10.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.14
> Libtool 2.4.2
> Makeinfo 5.2
> Gnulib v0.1-92-g546ff82
>
>
> ========================================================================
> This release provides new interfaces, many bug fixes, and performance
> improvements. Here are the highlights, taken from the `NEWS' file:
>
> Changes in 2.0.10 (since 2.0.9):
>
> * Notable changes
>
> ** New GDB extension to support Guile
>
> Guile now comes with an extension for GDB 7.8 or later (unreleased at
> the time of writing) that simplifies debugging of C code that uses
> Guile. See "GDB Support" in the manual.
>
> ** Improved integration between R6RS and native Guile exceptions
>
> R6RS exception handlers, established using 'with-exception-handler' or
> 'guard', are now able to catch native Guile exceptions, which are
> automatically converted into appropriate R6RS condition objects.
>
> ** Support for HTTP proxies
>
> Guile's built-in web client now honors the 'http_proxy' environment
> variable, as well as the new 'current-http-proxy' parameter. See
> "Web Client" in the manual for details.
>
> ** Lexical syntax improvements
>
> *** Support |...| symbol notation.
>
> Guile's core reader and printer now support the R7RS |...| notation
> for writing symbols with arbitrary characters, as a more portable and
> attractive alternative to Guile's native #{...}# notation. To enable
> this notation by default, put one or both of the following in your
> ~/.guile:
>
> (read-enable 'r7rs-symbols)
> (print-enable 'r7rs-symbols)
>
> *** Support '#true' and '#false' notation for booleans.
>
> The booleans '#t' and '#f' may now be written as '#true' and '#false'
> for improved readability, per R7RS.
>
> *** Recognize '#\escape' character name.
>
> The escape character '#\esc' may now be written as '#\escape', per R7RS.
>
> *** Accept "\|" in string literals.
>
> The pipe character may now be preceded by a backslash, per R7RS.
>
> ** Custom binary input ports now support 'setvbuf'.
>
> Until now, ports returned by 'make-custom-binary-input-port' were always
> full-buffered. Now, their buffering mode can be changed using 'setvbuf'.
>
> ** SRFI-4 predicates and length accessors no longer accept arrays.
>
> Given that the SRFI-4 accessors don't work for arrays, the fact that the
> predicates and length accessors returned true for arrays was a bug.
>
> ** GUILE_PROGS now supports specifying a minimum required version.
>
> The 'GUILE_PROGS' autoconf macro in guile.m4 now allows an optional
> argument to specify a minimum required Guile version. By default, it
> requires Guile >= 2.0. A micro version can also be specified, e.g.:
> GUILE_PROGS([2.0.10])
>
> ** Error reporting improvements
>
> *** Improved run-time error reporting in (ice-9 match).
>
> If no pattern matches in a 'match' form, the datum that failed to match
> is printed along with the location of the failed 'match' invocation.
>
> *** Print the faulty object upon invalid-keyword errors.
> *** Improved error reporting of procedures defined by define-inlinable.
> *** Improved error reporting for misplaced ellipses in macro definitions.
> *** Improved error checking in 'define-public' and 'module-add!'.
> *** Improved error when 'include' form with relative path is not in a file.
>
> ** Speed improvements
>
> *** 'scm_c_read' on ISO-8859-1 (e.g. binary) unbuffered ports is faster.
> *** New inline asm for VM fixnum multiply, for faster overflow checking.
> *** New inline asm for VM fixnum operations on ARM and 32-bit x86.
> *** 'positive?' and 'negative?' are now compiled to VM primitives.
> *** Numerical comparisons with more than 2 arguments are compiled to VM
> code.
> *** Several R6RS bitwise operators have been optimized.
>
> ** Miscellaneous
>
> *** Web: 'content-disposition' headers are now supported.
> *** Web: 'uri-encode' hexadecimal percent-encoding is now uppercase.
> *** Size argument to 'make-doubly-weak-hash-table' is now optional.
> *** Timeout for 'unlock-mutex' and SRFI-18 'mutex-unlock!' may now be #f.
>
> ** Gnulib update
>
> Guile's copy of Gnulib was updated to v0.1-92-g546ff82. The following
> modules were imported from Gnulib: copysign, fsync, isfinite, link,
> lstat, mkdir, mkstemp, readlink, rename, rmdir, and unistd.
>
> * New interfaces
>
> ** Cooperative REPL servers
>
> This new facility supports REPLs that run at specified times within an
> existing thread, for example in programs utilizing an event loop or in
> single-threaded programs. This allows for safe access and mutation of
> a program's data structures from the REPL without concern for thread
> synchronization. See "Cooperative REPL Servers" in the manual for
> details.
>
> ** SRFI-43 (Vector Library)
>
> Guile now includes SRFI-43, a comprehensive library of vector operations
> analogous to the SRFI-1 list library. See "SRFI-43" in the manual for
> details.
>
> ** SRFI-64 (A Scheme API for test suites)
>
> Guile now includes SRFI-64, a flexible framework for creating test
> suites. The reference implementation of SRFI-64 has also been updated
> to fully support earlier versions of Guile.
>
> ** SRFI-111 (Boxes)
>
> See "SRFI-111" in the manual.
>
> ** 'define-values'
>
> See "Binding multiple return values" in the manual.
>
> ** Custom ellipsis identifiers using 'with-ellipsis' or SRFI-46.
>
> Guile now allows macro definitions to use identifiers other than '...'
> as the ellipsis. This is convenient when writing macros that generate
> macro definitions. The desired ellipsis identifier can be given as the
> first operand to 'syntax-rules', as specified in SRFI-46 and R7RS, or by
> using the new 'with-ellipsis' special form in procedural macros. With
> this addition, Guile now fully supports SRFI-46.
>
> See "Specifying a Custom Ellipsis Identifier" and "Custom Ellipsis
> Identifiers for syntax-case Macros" in the manual for details.
>
> ** R7RS 'syntax-error'
>
> Guile now supports 'syntax-error', as specified by R7RS, allowing for
> improved compile-time error reporting from 'syntax-rules' macros. See
> "Reporting Syntax Errors in Macros" in the manual for details.
>
> ** New procedures to convert association lists into hash tables
>
> Guile now includes the convenience procedures 'alist->hash-table',
> 'alist->hashq-table', 'alist->hashv-table', and 'alist->hashx-table'.
> See "Hash Table Reference" in the manual.
>
> ** New predicates: 'exact-integer?' and 'scm_is_exact_integer'
>
> See "Integers" in the manual.
>
> ** 'weak-vector-length', 'weak-vector-ref', and 'weak-vector-set!'
>
> These should now be used to access weak vectors, instead of
> 'vector-length', 'vector-ref', and 'vector-set!'.
>
> * Manual updates
>
> ** Improve docs for 'eval-when'.
>
> Each 'eval-when' condition is now explained in detail, including
> 'expand' which was previously undocumented. (expand load eval) is now
> the recommended set of conditions, instead of (compile load eval).
> See "Eval When" in the manual, for details.
>
> ** Update the section on SMOBs and memory management.
>
> See "Defining New Types (Smobs)" in the manual.
>
> ** Fixes
>
> *** GOOPS: #:dsupers is the init keyword for the dsupers slot.
> *** 'unfold-right' takes a tail, not a tail generator.
> *** Clarify that 'append!' and 'reverse!' might not mutate.
> *** Fix doc that incorrectly claimed (integer? +inf.0) => #t.
> (http://bugs.gnu.org/16356)
> *** Document that we support SRFI-62 (S-expression comments).
> *** Document that we support SRFI-87 (=> in case clauses).
> *** Document 'equal?' in the list of R6RS incompatibilities.
> *** Remove outdated documentation of LTDL_LIBRARY_PATH.
> *** Fix 'weak-vector?' doc: Weak hash tables are not weak vectors.
> *** Fix 'my-or' examples to use let-bound variable.
> (http://bugs.gnu.org/14203)
>
> * New deprecations
>
> ** General 'uniform-vector' interface
>
> This interface lacked both generality and specificity. The general
> replacements are 'array-length', 'array-ref', and friends on the scheme
> side, and the array handle interface on the C side. On the specific
> side of things, there are the specific bytevector, SRFI-4, and bitvector
> interfaces.
>
> ** Use of the vector interface on arrays
> ** 'vector-length', 'vector-ref', and 'vector-set!' on weak vectors
> ** 'vector-length', 'vector-ref', and 'vector-set!' as primitive-generics
>
> Making the vector interface operate only on a single representation will
> allow future versions of Guile to compile loops involving vectors to
> more efficient native code.
>
> ** 'htons', 'htonl', 'ntohs', 'ntohl'
>
> These procedures, like their C counterpart, were used to convert numbers
> to/from network byte order, typically in conjunction with the
> now-deprecated uniform vector API.
>
> This functionality is now covered by the bytevector and binary I/O APIs.
> See "Interpreting Bytevector Contents as Integers" in the manual.
>
> ** 'gc-live-object-stats'
>
> It hasn't worked in the whole 2.0 series. There is no replacement,
> unfortunately.
>
> ** 'scm_c_program_source'
>
> This internal VM function was not meant to be public. Use
> 'scm_procedure_source' instead.
>
> * Build fixes
>
> ** Fix build with Clang 3.4.
>
> ** MinGW build fixes
> *** Do not add $(EXEEXT) to guild or guile-tools.
> *** tests: Use double quotes around shell arguments, for Windows.
> *** tests: Don't rely on $TMPDIR and /tmp on Windows.
> *** tests: Skip FFI tests that use `qsort' when it's not accessible.
> *** tests: Remove symlink only when it exists.
> *** tests: Don't rely on `scm_call_2' being visible.
>
> ** Fix computation of LIBLOBJS so dependencies work properly.
> (http://bugs.gnu.org/14193)
>
> * Bug fixes
>
> ** Web: Fix web client with methods other than GET.
> (http://bugs.gnu.org/15908)
> ** Web: Add Content-Length header for empty bodies.
> ** Web: Accept "UTC" as the zone offset in date headers.
> (http://bugs.gnu.org/14128)
> ** Web: Don't throw if a response is longer than its Content-Length says.
> ** Web: Write out HTTP Basic auth headers correctly.
> (http://bugs.gnu.org/14370)
> ** Web: Always print a path component in 'write-request-line'.
> ** Fix 'define-public' from (ice-9 curried-definitions).
> ** psyntax: toplevel variable definitions discard previous syntactic
> binding.
> (http://bugs.gnu.org/11988)
> ** Fix thread-unsafe lazy initializations.
> ** Make (ice-9 popen) thread-safe.
> (http://bugs.gnu.org/15683)
> ** Make guardians thread-safe.
> ** Make regexp_exec thread-safe.
> (http://bugs.gnu.org/14404)
> ** vm: Gracefully handle stack overflows.
> (http://bugs.gnu.org/15065)
> ** Fix 'rationalize'.
> (http://bugs.gnu.org/14905)
> ** Fix inline asm for VM fixnum operations on x32.
> ** Fix 'SCM_SYSCALL' to really swallow EINTR.
> ** Hide EINTR returns from 'accept'.
> ** SRFI-19: Update the table of leap seconds.
> ** Add missing files to the test-suite Makefile.
> ** Make sure 'ftw' allows directory traversal when running as root.
> ** Fix 'hash-for-each' for weak hash tables.
> ** SRFI-18: Export 'current-thread'.
> (http://bugs.gnu.org/16890)
> ** Fix inlining of tail list to apply.
> (http://bugs.gnu.org/15533)
> ** Fix bug in remqueue in threads.c when removing last element.
> ** Fix build when '>>' on negative integers is not arithmetic.
> ** Fix 'bitwise-bit-count' for negative arguments.
> (http://bugs.gnu.org/14864)
> ** Fix VM 'ash' for right shifts by large amounts.
> (http://bugs.gnu.org/14864)
> ** Fix rounding in scm_i_divide2double for negative arguments.
> ** Avoid lossy conversion from inum to double in numerical comparisons.
> ** Fix numerical comparison of fractions to infinities.
> ** Allow fl+ and fl* to accept zero arguments.
> (http://bugs.gnu.org/14869)
> ** flonum? returns false for complex number objects.
> (http://bugs.gnu.org/14866)
> ** flfinite? applied to a NaN returns false.
> (http://bugs.gnu.org/14868)
> ** Flonum operations always return flonums.
> (http://bugs.gnu.org/14871)
> ** min and max: NaNs beat infinities, per R6RS errata.
> (http://bugs.gnu.org/14865)
> ** Fix 'fxbit-count' for negative arguments.
> ** 'gcd' and 'lcm' support inexact integer arguments.
> (http://bugs.gnu.org/14870)
> ** Fix R6RS 'fixnum-width'.
> (http://bugs.gnu.org/14879)
> ** tests: Use shell constructs that /bin/sh on Solaris 10 can understand.
> (http://bugs.gnu.org/14042)
> ** Fix display of symbols containing backslashes.
> (http://bugs.gnu.org/15033)
> ** Fix truncated-print for uniform vectors.
> ** Define `AF_UNIX' only when Unix-domain sockets are supported.
> ** Decompiler: fix handling of empty 'case-lambda' expressions.
> ** Fix handling of signed zeroes and infinities in 'numerator' and
> 'denominator'.
> ** dereference-pointer: check for null pointer.
> ** Optimizer: Numerical comparisons are not negatable, for correct NaN
> handling.
> ** Compiler: Evaluate '-' and '/' in left-to-right order.
> (for more robust floating-point arithmetic)
> ** snarf.h: Declare static const function name vars as SCM_UNUSED.
> ** chars.c: Remove duplicate 'const' specifiers.
> ** Modify SCM_UNPACK type check to avoid warnings in clang.
> ** Arrange so that 'file-encoding' does not truncate the encoding name.
> (http://bugs.gnu.org/16463)
> ** Improve error checking in bytevector->uint-list and
> bytevector->sint-list.
> (http://bugs.gnu.org/15100)
> ** Fix (ash -1 SCM_I_FIXNUM_BIT-1) to return a fixnum instead of a bignum.
> ** i18n: Fix null pointer dereference when locale info is missing.
> ** Fix 'string-copy!' to work properly with overlapping src/dest.
> ** Fix hashing of vectors to run in bounded time.
> ** 'port-position' works on CBIPs that do not support 'set-port-position!'.
> ** Custom binary input ports sanity-check the return value of 'read!'.
> ** bdw-gc.h: Check SCM_USE_PTHREAD_THREADS using #if not #ifdef.
> ** REPL Server: Don't establish a SIGINT handler.
> ** REPL Server: Redirect warnings to client socket.
> ** REPL Server: Improve robustness of 'stop-server-and-clients!'.
> ** Add srfi-16, srfi-30, srfi-46, srfi-62, srfi-87 to %cond-expand-features.
> ** Fix trap handlers to handle applicable structs.
> (http://bugs.gnu.org/15691)
> ** Fix optional end argument in `uniform-vector-read!'.
> (http://bugs.gnu.org/15370)
> ** Fix brainfuck->scheme compiler.
> ** texinfo: Fix newline preservation in @example with lines beginning with @
>
> ** C standards conformance improvements
>
> Improvements and bug fixes were made to the C part of Guile's run-time
> support (libguile).
>
> *** Don't use the identifier 'noreturn'.
> (http://bugs.gnu.org/15798)
> *** Rewrite SCM_I_INUM to avoid unspecified behavior when not using GNU C.
> *** Improve fallback implemention of SCM_SRS to avoid unspecified behavior.
> *** SRFI-60: Reimplement 'rotate-bit-field' on inums to be more portable.
> *** Improve compliance with C standards regarding signed integer shifts.
> *** Avoid signed overflow in random.c.
> *** VM: Avoid signed overflows in 'add1' and 'sub1'.
> *** VM: Avoid overflow in ASM_ADD when the result is most-positive-fixnum.
> *** read: Avoid signed integer overflow in 'read_decimal_integer'.
>
> ========================================================================
> The following people contributed to this release:
>
> 2 Aleix Conchillo Flaque
> 1 Alexandru Cojocaru
> 21 Andy Wingo
> 1 Arne Babenhauserheide
> 1 Chris K. Jester-Young
> 1 David Kastrup
> 3 David Thompson
> 7 Ian Price
> 44 Ludovic Courtès
> 170 Mark H Weaver
> 2 Tom Tromey
>
> 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 address@hidden'. We also welcome reports of
> successful builds, which can be sent to the same email address.
>
>
> Ludovic, on behalf of the Guile team.