unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* GNU Guile 3.0.5 released
@ 2021-01-07 13:09 Andy Wingo
  2021-01-07 15:24 ` Massimiliano Gubinelli
  2021-01-07 16:44 ` Jérémy Korwin-Zmijowski
  0 siblings, 2 replies; 3+ messages in thread
From: Andy Wingo @ 2021-01-07 13:09 UTC (permalink / raw)
  To: guile-user, guile-sources, guile-devel, info-gnu

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.html.

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.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: GNU Guile 3.0.5 released
  2021-01-07 13:09 GNU Guile 3.0.5 released Andy Wingo
@ 2021-01-07 15:24 ` Massimiliano Gubinelli
  2021-01-07 16:44 ` Jérémy Korwin-Zmijowski
  1 sibling, 0 replies; 3+ messages in thread
From: Massimiliano Gubinelli @ 2021-01-07 15:24 UTC (permalink / raw)
  To: guile-user, guile-devel; +Cc: Andy Wingo

Dear all,

Great news! Looking forward to work with this new release and dive a bit more into the internals of the compiler.

Can somebody give an update on the status of Guile 3 on Windows and Mac with M1 processors? Are these platforms supported or there are problems (e.g. with the JIT?). What are the plans after this release?

On my side I'm working slowly to a port of GNU TeXmacs to Guile 3. We have a working development branch but still there is much way to go, in particular to support separate compilation of the various modules (if ever this will be possible). Performance seems indeed better, I still have to come up with pertinent benchmarks to evaluate the tradeoffs of various choices (e.g. Guile 1.8 vs Guile 3.0 vs. S7 vs. ...). I've recently summarized in a blog post here:

https://texmacs.github.io/notes/docs/scheming.html <https://texmacs.github.io/notes/docs/scheming.html>

the current situation as far as our project is concerned. 


Best regards,
Massimiliano


> On 7. Jan 2021, at 14:09, Andy Wingo <wingo@pobox.com> 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.html.
> 
> 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.
> 



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: GNU Guile 3.0.5 released
  2021-01-07 13:09 GNU Guile 3.0.5 released Andy Wingo
  2021-01-07 15:24 ` Massimiliano Gubinelli
@ 2021-01-07 16:44 ` Jérémy Korwin-Zmijowski
  1 sibling, 0 replies; 3+ messages in thread
From: Jérémy Korwin-Zmijowski @ 2021-01-07 16:44 UTC (permalink / raw)
  To: Andy Wingo, guile-user, guile-sources, guile-devel, info-gnu

Le jeudi 07 janvier 2021 à 14:09 +0100, Andy Wingo a écrit :
> We are delighted to announce GNU Guile release 3.0.5, the latest in
> the 3.0 stable release series.

I am delighted to read this announce. Thank you to all hackers
involved!

Jérémy




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-01-07 16:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-07 13:09 GNU Guile 3.0.5 released Andy Wingo
2021-01-07 15:24 ` Massimiliano Gubinelli
2021-01-07 16:44 ` Jérémy Korwin-Zmijowski

unofficial mirror of guile-devel@gnu.org 

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/guile-devel/0 guile-devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guile-devel guile-devel/ https://yhetil.org/guile-devel \
		guile-devel@gnu.org
	public-inbox-index guile-devel

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.lisp.guile.devel
	nntp://news.gmane.io/gmane.lisp.guile.devel


AGPL code for this site: git clone http://ou63pmih66umazou.onion/public-inbox.git