GNU Guile 3.0.4 released

2020-06-24 Thread Ludovic Courtès
We are pleased but also embarrassed to announce GNU Guile release 3.0.4.
This release fixes the SONAME of libguile-3.0.so, which was wrongfully
bumped in 3.0.3.  Distributions should use 3.0.4.  Apologies!

 *  *  *

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 can be installed in parallel with Guile 2.2.x; see
http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html.

 *  *  *

Changes in 3.0.4 (since 3.0.3)

This release fixes the SONAME of libguile-3.0.so, which was erroneously
bumped in 3.0.3 compared to 3.0.2.  Distributions are strongly
encouraged to use 3.0.4 instead of 3.0.3.

Thanks to Chris Vine for reporting the issue.


 *  *  *

Here are the compressed sources:
  https://ftp.gnu.org/gnu/guile/guile-3.0.4.tar.gz   (21MB)
  https://ftp.gnu.org/gnu/guile/guile-3.0.4.tar.lz   (11MB)
  https://ftp.gnu.org/gnu/guile/guile-3.0.4.tar.xz   (13MB)

Here are the GPG detached signatures[*]:
  https://ftp.gnu.org/gnu/guile/guile-3.0.4.tar.gz.sig
  https://ftp.gnu.org/gnu/guile/guile-3.0.4.tar.lz.sig
  https://ftp.gnu.org/gnu/guile/guile-3.0.4.tar.xz.sig

Use a mirror for higher download bandwidth:
  https://www.gnu.org/order/ftp.html

Here are the SHA256 checksums:

  13f2f61a665469d330e651c8e9f7faecbb87fe474767f9532f2e821701730957  
guile-3.0.4.tar.gz
  f2b0b66fd72bc24df76856e1549bf327c025b8a5d5fa3cb1696327c5941c89c4  
guile-3.0.4.tar.lz
  6b7947dc2e3d115983846a268b8f5753c12fd5547e42fbf2b97d75a3b79f0d31  
guile-3.0.4.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-3.0.4.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 pool.sks-keyservers.net \
  --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5

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
  Makeinfo 6.7
  Gnulib v0.1-1157-gb03f418

Happy hacking with Guile!

Ludovic Courtès and Andy Wingo.


signature.asc
Description: PGP signature


Re: GNU Guile 3.0.3 released

2020-06-24 Thread Ludovic Courtès
Hello,

Andy Wingo  skribis:

> On Tue 23 Jun 2020 11:36, Chris Vine  writes:

[...]

>>> I was hesitant about the SONAME: the ABI jump was unnecessary unless in
>>> ‘--disable-deprecated’ builds.  I erred on the side of cautiousness:
>>> 
>>>   
>>> https://git.savannah.gnu.org/cgit/guile.git/commit/?id=5d052c87bd8f0fd894e67f0bebd4fa6f6160d83c
>>
>> Hi,
>>
>> Ah right.  There must have been two SO breaks between guile-3.0.2 and
>> guile-3.0.3.
>>
>> It's a nuisance having SO bumps on micro releases and I wonder if that
>> could be included in the announcement so that you don't first notice it
>> when stuff fails to run?
>
> I think I agree with Chris.  The intention is certainly to have a stable
> ABI within a stable series, so 3.0.3 should have the same CURRENT.
>
> It's certainly correct that a --disable-deprecated 3.0.3 build has a
> different ABI than 3.0.2, and if that were what we were looking at, we
> would indeed need the CURRENT version bump; but I think the premise is
> wrong: we do *not* have a stable ABI in --disable-deprecated builds, and
> we never have.  Otherwise we wouldn't ever be able to deprecate anything
> within a stable series.

Following our discussion on IRC, I agree with restoring CURRENT and will
push a 3.0.4 in that direction.

Apologies for the annoyance!

Ludo’.




Re: The size of ‘.go’ files

2020-06-24 Thread Andy Wingo
Hi :)

On Tue 09 Jun 2020 18:09, Ludovic Courtès  writes:

> Andy Wingo  skribis:
>
>> The guile.arities section starts with a sorted array of fixed-size
>> headers, then is followed by a sequence of ULEB128 references to local
>> variable names, including non-arguments.  The size is a bit perplexing,
>> I agree.  I can think of a number of ways to encode that section
>> differently but we'd need to understand a bit more about it and why the
>> baseline compiler is significantly different.
>
> ‘.guile.arities’ size should be proportional to the number of
> procedures, right?  Additionally, if there are only/mostly thunks, the
> string table for argument names should be small if not empty.  For N
> thunks, I would expect roughly N 28-byte headers + NxM UL128, say 100
> bytes per thunk; there’s 1000 of them, so we should be ~100,000 bytes.
> This is roughly what we get observe with the baseline compiler.

Yes but that doesn't mean that you can directly compare baseline to CPS
-- CPS has many more intermediate names than baseline for non-argument
locals, all of which end up getting entries in the arities section.

Andy



Re: GNU Guile 3.0.3 released

2020-06-24 Thread Andy Wingo
On Tue 23 Jun 2020 11:36, Chris Vine  writes:

> On Tue, 23 Jun 2020 10:05:51 +0200
> Ludovic Courtès  wrote:
>> Hi Chris,
>> 
>> Chris Vine  skribis:
>> 
>> > On Sun, 21 Jun 2020 23:04:03 +0200
>> > Ludovic Courtès  wrote:
>> >> We are delighted to announce GNU Guile release 3.0.3, the third bug-fix
>> >> release of the new 3.0 stable series.  This release represents 170
>> >> commits by 17 people since version 3.0.2.  See the NEWS excerpt that
>> >> follows for full details.
>> > [snip]
>> >
>> > This has a libguile so ABI jump from libguile-3.0.so.1 to
>> > libguile-3.0.so.3, which breaks my binaries linked to libguile.  Is that
>> > normal for a micro update in the stable release series and if so can
>> > there be some warning in the announcement?
>> 
>> Yes, it means you need to relink those binaries.
>> 
>> I was hesitant about the SONAME: the ABI jump was unnecessary unless in
>> ‘--disable-deprecated’ builds.  I erred on the side of cautiousness:
>> 
>>   
>> https://git.savannah.gnu.org/cgit/guile.git/commit/?id=5d052c87bd8f0fd894e67f0bebd4fa6f6160d83c
>
> Hi,
>
> Ah right.  There must have been two SO breaks between guile-3.0.2 and
> guile-3.0.3.
>
> It's a nuisance having SO bumps on micro releases and I wonder if that
> could be included in the announcement so that you don't first notice it
> when stuff fails to run?

I think I agree with Chris.  The intention is certainly to have a stable
ABI within a stable series, so 3.0.3 should have the same CURRENT.

It's certainly correct that a --disable-deprecated 3.0.3 build has a
different ABI than 3.0.2, and if that were what we were looking at, we
would indeed need the CURRENT version bump; but I think the premise is
wrong: we do *not* have a stable ABI in --disable-deprecated builds, and
we never have.  Otherwise we wouldn't ever be able to deprecate anything
within a stable series.

WDYT about a quick 3.0.4 that restores the CURRENT ?

Cheers,

Andy