unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* GNU Guile 3.0.3 released
@ 2020-06-21 21:04 Ludovic Courtès
  2020-06-22 14:54 ` Jérémy Korwin-Zmijowski
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Ludovic Courtès @ 2020-06-21 21:04 UTC (permalink / raw)
  To: guile-user, guile-devel, guile-sources, info-gnu

[-- Attachment #1: Type: text/plain, Size: 8801 bytes --]

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.

                             *  *  *

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.3 (since 3.0.2)

* New interfaces and functionality

** New baseline compiler

Guile's CPS-based compiler generates good code, but it takes time and
memory to do so.  For users that prioritize speed of compilation over
speed of generated code, Guile now has a new baseline compiler that goes
directly from the high-level Tree-IL to bytecode, skipping CPS and all
of its optimizations.  This compiler is used for `guild compile -O0',
and generally runs around ten times as fast as the CPS compiler.

*** New VM intrinsics to support baseline compiler

See "Intrinsic Call Instructions" in the manual.

*** Compiler support for warning and lowering passes
*** Compiler support for choosing different compilation orders

See "Compiler Tower" in the manual.  The new per-language "compiler
chooser" facility can choose different compilers based on optimization
level.

*** Better support for specifying optimization and warning levels

The procedural compilation interfaces (`compile', `compile-file', and so
on) now have #:optimization-level and #:warning-level keyword arguments,
which default to corresponding `default-optimization-level' and
`default-warning-level' parameters.  You can still specify warning and
optimization passes manually, but we think most users will find the
higher-level interfaces more robust to use.

** Faster Guile build from source

Guile now uses the baseline compiler for its bootstrap, when building
the first Scheme compiler.  Because the baseline compiler runs faster
and includes less code than the CPS compiler, Guile takes less time to
build.

** New 'pipeline' procedure in (ice-9 popen)

The 'pipeline' procedure provides a simple way to spawn command pipeline
as one would do in a shell.

** Refreshed bitvector facility

See "Bit Vectors" in the manual, for more on all of these.

*** New bitvector-count, bitvector-count-bits, bitvector-position
    procedures

These replace the wonky "bit-count", "bit-count*", and "bit-position"
procedures.

*** New bitvector-bit-set?, bitvector-bit-clear? procedures

These replace bitvector-ref.  The reason to migrate is that it's an
opportunity be more efficient in 3.0 (because the new procedures only
work on true bitvectors, and not generic bit arrays), easier to read (no
need for 'not' when checking for false bits), and more consistent with
other bitvector procedures.

*** New bitvector-set-bit!, bitvector-clear-bit! procedures

These replace bitvector-set!, for similar reasons as the bitvector-ref
replacement above.

*** New bitvector-set-all-bits!, bitvector-clear-all-bits! procedures

These replace bitvector-fill!.

*** New bitvector-flip-all-bits! procedure

This replaces bit-invert!.

*** New bitvector-set-bits!, bitvector-clear-bits! procedures

These replace the wonky "bit-set*!" procedure.

* Bug fixes

** statprof reports the names of primitives

Previously statprof would show strings like "anon #x1234" for primitives
written in C.

** Compiler reduces 'equal?' when passed a character literal

The compiler now properly reduces expressions such as (equal? c #\x) to
(eq? c #\x).  This was not the case in 3.0.2, which could lead to slower
code, especially in 'match' expressions with many clauses with with
character literals.

** JIT bugs on ARMv7 have been fixed
   (<https://bugs.gnu.org/40737>,
    <https://gitlab.com/wingo/lightening/-/issues/12>)

** 'http-get', 'http-post', etc. now honor #:verify-certificates?
   (<https://bugs.gnu.org/40486>)

** web: Accept URI host names consisting only of hex digits
   (<https://bugs.gnu.org/40582>)

** (web http) parser recognizes the CONNECT and PATCH methods

** Initial revealed count of file ports is now zero
   (<https://bugs.gnu.org/41204>)

* New deprecations

** Old bitvector interfaces deprecated

See "Bit Vectors" in the manual, for details on all of these
replacements.

*** bit-count, bit-position

Use bitvector-count or bitvector-position instead.  

*** bitvector-ref

Use 'bitvector-bit-set?' or 'bitvector-bit-clear?' instead.

*** bitvector-set!

Use 'bitvector-set-bit!' or 'bitvector-clear-bit!' instead.

*** bitvector-fill!

Use 'bitvector-set-all-bits!' or 'bitvector-clear-all-bits!' instead.

*** bit-invert!

Use 'bitvector-flip-all-bits! instead.

*** bit-set*!

Use 'bitvector-set-bits!' or 'bitvector-clear-bits!' instead.

*** bit-count*

Use 'bitvector-count-bits' instead, subtracting from 'bitvector-count'
on the mask bitvector if you are counting unset bits.

*** Accessing generic arrays using the bitvector procedures

For the same efficiency reasons that use of 'vector-ref' on generic
arrays was deprecated in Guile 2.0.10, using 'bitvector->list' and
similar procedures on 1-dimensional boolean-typed arrays is now
deprecated.  Use 'array-ref' and similar procedures on arrays.

*** scm_istr2bve

This C-only procedure to parse a bitvector from a string should be
replaced by calling `read' on a string port instead, if needed.

                             *  *  *

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

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

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

Here are the SHA256 checksums:

  fb75d95d8f4aa2efd1d3a0eeee9643dc125698e8cf7497ecc9fdca27ad85e937  guile-3.0.3.tar.gz
  eabb399928ef465d4dc2cf1107a2d410f32fcde3b6263edd0fbb0d521b778159  guile-3.0.3.tar.lz
  b3242d61c5583560cbc9adadf1c8b4333139d9ad129d4481b5c6aa7cfa73e63b  guile-3.0.3.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.3.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

Thanks to everyone who helped make this release:

     1	Alex Sassmannshausen
     1	Andrew Gierth
   112	Andy Wingo
     4	Arun Isaac
     1	Christopher Baines
     1	Dale P. Smith
     2	Daniel Llorens
     1	Eric Bavier
    11	Icecream95
     1	Jan (janneke) Nieuwenhuizen
     1	Jan Synacek
     1	Linus Björnstam
    28	Ludovic Courtès
     1	Mathieu Lirzin
     2	Matt Wette
     1	Ricardo G. Herdt
     1	Rutger van Beusekom

Happy hacking with Guile!

Ludovic Courtès and Andy Wingo.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

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

* Re: GNU Guile 3.0.3 released
  2020-06-21 21:04 GNU Guile 3.0.3 released Ludovic Courtès
@ 2020-06-22 14:54 ` Jérémy Korwin-Zmijowski
  2020-06-22 15:46 ` Dr. Arne Babenhauserheide
  2020-06-22 20:50 ` Chris Vine
  2 siblings, 0 replies; 8+ messages in thread
From: Jérémy Korwin-Zmijowski @ 2020-06-22 14:54 UTC (permalink / raw)
  To: Ludovic Courtès, guile-user, guile-devel, guile-sources, info-gnu

Hey,

Thank you to all contributors behind the work !

Jérémy




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

* Re: GNU Guile 3.0.3 released
  2020-06-21 21:04 GNU Guile 3.0.3 released Ludovic Courtès
  2020-06-22 14:54 ` Jérémy Korwin-Zmijowski
@ 2020-06-22 15:46 ` Dr. Arne Babenhauserheide
  2020-06-22 20:50 ` Chris Vine
  2 siblings, 0 replies; 8+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-06-22 15:46 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guile-user, info-gnu, guile-sources, guile-devel

[-- Attachment #1: Type: text/plain, Size: 1212 bytes --]


Ludovic Courtès <ludo@gnu.org> writes:
> Changes in 3.0.3 (since 3.0.2)
>
> * New interfaces and functionality
>
> ** New baseline compiler
>
> Guile's CPS-based compiler generates good code, but it takes time and
> memory to do so.  For users that prioritize speed of compilation over
> speed of generated code, Guile now has a new baseline compiler that goes
> directly from the high-level Tree-IL to bytecode, skipping CPS and all
> of its optimizations.  This compiler is used for `guild compile -O0',
> and generally runs around ten times as fast as the CPS compiler.

Very cool! Thank you for shipping it this quickly!

Are there already results about the difference in build-time from the git-repo?

> Use a mirror for higher download bandwidth:
>   https://www.gnu.org/order/ftp.html
>
> Here are the SHA256 checksums:
>
>   fb75d95d8f4aa2efd1d3a0eeee9643dc125698e8cf7497ecc9fdca27ad85e937  guile-3.0.3.tar.gz
>   eabb399928ef465d4dc2cf1107a2d410f32fcde3b6263edd0fbb0d521b778159  guile-3.0.3.tar.lz
>   b3242d61c5583560cbc9adadf1c8b4333139d9ad129d4481b5c6aa7cfa73e63b  guile-3.0.3.tar.xz

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1076 bytes --]

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

* Re: GNU Guile 3.0.3 released
  2020-06-21 21:04 GNU Guile 3.0.3 released Ludovic Courtès
  2020-06-22 14:54 ` Jérémy Korwin-Zmijowski
  2020-06-22 15:46 ` Dr. Arne Babenhauserheide
@ 2020-06-22 20:50 ` Chris Vine
  2020-06-23  8:05   ` Ludovic Courtès
  2 siblings, 1 reply; 8+ messages in thread
From: Chris Vine @ 2020-06-22 20:50 UTC (permalink / raw)
  To: guile-user, guile-devel

On Sun, 21 Jun 2020 23:04:03 +0200
Ludovic Courtès <ludo@gnu.org> 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?



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

* Re: GNU Guile 3.0.3 released
  2020-06-22 20:50 ` Chris Vine
@ 2020-06-23  8:05   ` Ludovic Courtès
  2020-06-23  9:36     ` Chris Vine
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2020-06-23  8:05 UTC (permalink / raw)
  To: guile-user; +Cc: guile-devel

Hi Chris,

Chris Vine <vine35792468@gmail.com> skribis:

> On Sun, 21 Jun 2020 23:04:03 +0200
> Ludovic Courtès <ludo@gnu.org> 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

Ludo’.




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

* Re: GNU Guile 3.0.3 released
  2020-06-23  8:05   ` Ludovic Courtès
@ 2020-06-23  9:36     ` Chris Vine
  2020-06-24 12:07       ` Andy Wingo
  0 siblings, 1 reply; 8+ messages in thread
From: Chris Vine @ 2020-06-23  9:36 UTC (permalink / raw)
  To: guile-user, guile-devel

On Tue, 23 Jun 2020 10:05:51 +0200
Ludovic Courtès <ludo@gnu.org> wrote:
> Hi Chris,
> 
> Chris Vine <vine35792468@gmail.com> skribis:
> 
> > On Sun, 21 Jun 2020 23:04:03 +0200
> > Ludovic Courtès <ludo@gnu.org> 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?

Chris



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

* Re: GNU Guile 3.0.3 released
  2020-06-23  9:36     ` Chris Vine
@ 2020-06-24 12:07       ` Andy Wingo
  2020-06-24 13:15         ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Andy Wingo @ 2020-06-24 12:07 UTC (permalink / raw)
  To: Chris Vine; +Cc: guile-user, guile-devel

On Tue 23 Jun 2020 11:36, Chris Vine <vine35792468@gmail.com> writes:

> On Tue, 23 Jun 2020 10:05:51 +0200
> Ludovic Courtès <ludo@gnu.org> wrote:
>> Hi Chris,
>> 
>> Chris Vine <vine35792468@gmail.com> skribis:
>> 
>> > On Sun, 21 Jun 2020 23:04:03 +0200
>> > Ludovic Courtès <ludo@gnu.org> 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



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

* Re: GNU Guile 3.0.3 released
  2020-06-24 12:07       ` Andy Wingo
@ 2020-06-24 13:15         ` Ludovic Courtès
  0 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2020-06-24 13:15 UTC (permalink / raw)
  To: guile-devel; +Cc: guile-user

Hello,

Andy Wingo <wingo@pobox.com> skribis:

> On Tue 23 Jun 2020 11:36, Chris Vine <vine35792468@gmail.com> 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’.




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

end of thread, other threads:[~2020-06-24 13:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-21 21:04 GNU Guile 3.0.3 released Ludovic Courtès
2020-06-22 14:54 ` Jérémy Korwin-Zmijowski
2020-06-22 15:46 ` Dr. Arne Babenhauserheide
2020-06-22 20:50 ` Chris Vine
2020-06-23  8:05   ` Ludovic Courtès
2020-06-23  9:36     ` Chris Vine
2020-06-24 12:07       ` Andy Wingo
2020-06-24 13:15         ` Ludovic Courtès

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