[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