guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GNU Guile 3.0.5 released


From: Tim Van den Langenbergh
Subject: Re: GNU Guile 3.0.5 released
Date: Thu, 07 Jan 2021 15:18:09 +0100

On 2021年1月7日木曜日 14時09分08秒 CET you wrote:
> We are delighted to announce GNU Guile release 3.0.5, the latest in the
> 3.0 stable release series.
> 
> Compared to the previous release in the 3.0 series, Guile 3.0.5 can
> compile chained "if" expressions into the equivalent of what a C
> compiler does with "switch".  It also adds some new warning passes.
> 
> Compared to the previous stable series (2.2.x), Guile 3.0 adds support
> for just-in-time native code generation, speeding up all Guile programs.
> See the NEWS extract at the end of the mail for full details.
> 
> 
> The Guile web page is located at http://gnu.org/software/guile/, and
> among other things, it contains a copy of the Guile manual and pointers
> to more resources.
> 
> Guile is an implementation of the Scheme programming language, packaged
> for use in a wide variety of environments.  In addition to implementing
> the R5RS, R6RS, and R7RS Scheme standards, Guile includes full access to
> POSIX system calls, networking support, multiple threads, dynamic
> linking, a foreign function call interface, powerful string processing,
> and HTTP client and server implementations.
> 
> Guile can run interactively, as a script interpreter, and as a Scheme
> compiler to VM bytecode.  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.  It is easy to call Scheme code
> from C code and vice versa.  Applications can add new functions, data
> types, control structures, and even syntax to Guile, to create a
> domain-specific language tailored to the task at hand.
> 
> Guile 3.0.5 can be installed in parallel with Guile 2.2.x; see
> http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.ht
> ml.
> 
> A more detailed NEWS summary follows these details on how to get the
> Guile sources.
> 
> Here are the compressed sources:
>   http://ftp.gnu.org/gnu/guile/guile-3.0.5.tar.lz   (10MB)
>   http://ftp.gnu.org/gnu/guile/guile-3.0.5.tar.xz   (12MB)
>   http://ftp.gnu.org/gnu/guile/guile-3.0.5.tar.gz   (21MB)
> 
> Here are the GPG detached signatures[*]:
>   http://ftp.gnu.org/gnu/guile/guile-3.0.5.tar.lz.sig
>   http://ftp.gnu.org/gnu/guile/guile-3.0.5.tar.xz.sig
>   http://ftp.gnu.org/gnu/guile/guile-3.0.5.tar.gz.sig
> 
> Use a mirror for higher download bandwidth:
>   http://www.gnu.org/order/ftp.html
> 
> Here are the SHA256 checksums:
> 
>   a484eeffbd4d655b0c05b1382df8d40f1e561f7e71b963065762f6a6a497c675 
> guile-3.0.5.tar.lz
> 2d76fb023d2366126a5fac04704f9bd843846b80cccba6da5d752318b03350f1 
> guile-3.0.5.tar.xz
> 222046009a20b432ffa7c11b8d5a1d9ad0d8627be05cc1e8af612bc54ba2ea85 
> guile-3.0.5.tar.gz
> 
> [*] 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-3.0.5.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
> 4FD4D288D445934E0A14F9A5A8803732E4436885
> 
> and rerun the 'gpg --verify' command.
> 
> This release was bootstrapped with the following tools:
>   Autoconf 2.69
>   Automake 1.16.2
>   Libtool 2.4.6
>   Gnulib v0.1-1157-gb03f418
>   Makeinfo 6.7
> 
> An extract from NEWS follows.
> 
> 
> Changes in 3.0.5 (since 3.0.4)
> 
> * New interfaces and functionality
> 
> ** O(1) compilation of `case' and related expressions
> 
> Guile now optimizes chains of eq? comparisons to constants, resulting in
> O(1) dispatch time, regardless of the length of the chain.  This
> optimization is also unlocked in many cases for `match' expressions with
> many similar clauses whose first differentiator are constants.
> 
> ** New (ice-9 copy-tree) module
> 
> This module includes the `copy-tree' procedure that was previously
> implemented in C and present in the default `(guile)' module.  See
> "Copying" in the manual.
> 
> ** New warning: use-before-definition
> 
> This analysis, enabled at `-W1', issues warnings for programs that use
> top-level variables before they are defined.
> 
> ** New warning: non-idempotent-definition
> 
> This analysis, enabled at `-W1', issues warnings for programs that whose
> use of a variable is ambiguous.  For example, in the program:
> 
>   (define saved-add +)
>   (define + error)
> 
> The intention would seem to be to "save" the value of the base `+'
> procedure, then override it locally.  However if this program is ever
> loaded twice, then the second time it is loaded, `+' will be taken from
> the local binding instead of the import.  Users that want this kind of
> behavior should either use lexical bindings instead of top-level
> bindings, or otherwise rename important clobbered bindings via modules.
> 
> * New deprecations
> 
> ** `copy-tree' in the default environment, and `scm_copy_tree' from C
> 
> Import the `(ice-9 copy-tree)' module instead.
> 
> ** `unbound-variable-analysis`, `macro-use-before-definition-analysis`
> 
> These bindings from `(language tree-il analyze)' are replaced by the
> use-before-definition analysis, which powers a number of warnings.  Use
> `make-use-before-definition-analysis', but note that these interfaces
> are quite intimate parts of the compiler!
> 
> * Incompatible changes
> 
> ** `copy' read-option removed
> 
> This read option would include a copy of the source expression in the
> source-properties of each subexpression.  This option has always been
> off by default and lost most of its use value with the switch to a
> compiler in Guile 2.0.

Looks like a great release. Congratulations and I'm looking forward to playing 
around with it.

-Tim





reply via email to

[Prev in Thread] Current Thread [Next in Thread]