From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS22989 209.51.188.0/24 X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 7D8F91F5AE for ; Wed, 28 Apr 2021 16:41:38 +0000 (UTC) Received: from localhost ([::1]:54858 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbnFp-0008T9-8M for normalperson@yhbt.net; Wed, 28 Apr 2021 12:41:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59126) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lbnFY-0008SE-FL for bug-gnulib@gnu.org; Wed, 28 Apr 2021 12:41:20 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]:35684) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lbnFJ-0003o1-VG for bug-gnulib@gnu.org; Wed, 28 Apr 2021 12:41:20 -0400 Received: by mail-pf1-x42b.google.com with SMTP id c19so8230071pfv.2 for ; Wed, 28 Apr 2021 09:41:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=Tgb6Pgiv1b/Gy301o3NCeD+8WpwaxlCtFxdUAFBwtbE=; b=KzOzxXW1OGMiGce/5F532Ph1quEncNSwJMKSb6JtrTgpmuS3DGxjdrZSiIi1qMRbbX t5mRmG1BSEgr42vRTMTFgOILZjj7e82AJVhNDTOahw6VnE4piHtbNjH5AzkGwlgeS2F6 RrkAe4YfBpcJqYel1+SgfHakdY/+kl+CvE5BafsW8okVLUMlIrdILepa9VXVSLH3W1gW W4vWQC87lHUGcF+VCL2nOdFI8B1Z2uDBCIDaKjuaosok4Vl/Deu7n6iIlZJCjUDufN+u ZX2Zu3ISt+PJekN0jqLRW7CWIkWaL0nlFlg/9ebvNpheW+DfyiKPHOBa9HZbDYT36fIU g+tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=Tgb6Pgiv1b/Gy301o3NCeD+8WpwaxlCtFxdUAFBwtbE=; b=p3LNzpOMQqpCwlHUKzSKN3W1L5WxjvyB73tj+my54Q9ey/gkDTH/+FYVhXfZ6xgD3o fMFE92Cqrw8NwHfatXl6BeuUDlIPx0MGFsmwumhp7zjpX328WiAaQ8EVDkQ/Zogx2Ucl YyEHQlwvtSrHyPTkjkOzPUiuxqirBI981avXWoxY7/w95ZnwpUiXpi2ZrVY+qIfGvYTL KArxCMMAp4VQScaIg/usNE2TrYfTvDckrI/EzrIZLPru6pYKPIwU0SD1TSe+qkv6ls7D VM+3jChZ2Ewyc/hqEYoDZGw5J+yIVWx6qrfgQKckf1IegxphuzxOJrcfJkXUzCLw/vG5 j1hw== X-Gm-Message-State: AOAM530pdXTUYX+tGSTsT/FBZp6K3yk6KfwfTeBTFJtBK2caji2kNEG3 74f7XgXRtnXL/XKN/o89YSGsirn4tib4SX9lDutOs6LZlyU= X-Google-Smtp-Source: ABdhPJx5UtZ40clIA57UfHtZ5pMC2u4dAjAZTBXFwbyepKDBZZkDf6cSgCaonQ0Drv5bC/yH3mYZ/ASma2trMRfeYqg= X-Received: by 2002:a62:ea1a:0:b029:27a:bcea:5d3d with SMTP id t26-20020a62ea1a0000b029027abcea5d3dmr8631485pfh.69.1619628063364; Wed, 28 Apr 2021 09:41:03 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?Q?Marc_Nieper=2DWi=C3=9Fkirchen?= Date: Wed, 28 Apr 2021 18:40:50 +0200 Message-ID: Subject: Fwd: guile-devel Digest, Vol 221, Issue 18 To: "bug-gnulib@gnu.org List" Content-Type: multipart/alternative; boundary="000000000000629bf105c10b0b78" Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=marc.nieper@gmail.com; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: bug-gnulib@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Gnulib discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnulib-bounces+normalperson=yhbt.net@gnu.org Sender: "bug-gnulib" --000000000000629bf105c10b0b78 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi! In Guile's digest I noticed a comment about replacing libltdl (see below) with the standard `dlopen' interface and providing a shim for systems not supporting it directly. Do Guile's observations apply in general? Would it make sense for the Gnulib project to provide such a shimmed version of `dlopen' making libltdl obsolete? Thanks, Marc ---------- Forwarded message --------- Von: Date: Mi., 28. Apr. 2021 um 18:23 Uhr Subject: guile-devel Digest, Vol 221, Issue 18 To: Send guile-devel mailing list submissions to guile-devel@gnu.org To subscribe or unsubscribe via the World Wide Web, visit https://lists.gnu.org/mailman/listinfo/guile-devel or, via email, send a message with subject or body 'help' to guile-devel-request@gnu.org You can reach the person managing the list at guile-devel-owner@gnu.org When replying, please edit your Subject line so it is more specific than "Re: Contents of guile-devel digest..." Today's Topics: 1. GNU Guile 3.0.6 released (Andy Wingo) 2. Re: GNU Guile 3.0.6 released (J=C3=A9r=C3=A9my Korwin-Zmijowski) ---------------------------------------------------------------------- Message: 1 Date: Wed, 28 Apr 2021 09:17:28 +0200 From: Andy Wingo To: guile-user@gnu.org, guile-sources@gnu.org, guile-devel@gnu.org, info-gnu@gnu.org Subject: GNU Guile 3.0.6 released Message-ID: <87lf92op2v.fsf@pobox.com> Content-Type: text/plain; charset=3Dutf-8 We are pleased to announce GNU Guile release 3.0.6, the latest in the 3.0 stable release series. Compared to the previous release in the 3.0 series, Guile 3.0.6 improves source-location information for compiled code, removes the dependency on libltdl, fixes some important bugs, adds an optional bundled "mini-gmp" library, as well as the usual set of minor optimizations and bug fixes. 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.6 can be installed in parallel with Guile 2.2.x; see http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.h= tml . 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.6.tar.lz (10MB) http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.xz (13MB) http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.gz (21MB) Here are the GPG detached signatures[*]: http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.lz.sig http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.xz.sig http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.gz.sig Use a mirror for higher download bandwidth: http://www.gnu.org/order/ftp.html Here are the SHA256 checksums: 2e5b9e3e56a967a58ae591053a65c1851875bf5e06c60caab409d5647cff4975 guile-3.0.6.tar.lz e2bd83c2077d721356e7579ca33097a13a20e2b7eda6c2362ee1166fbc845d28 guile-3.0.6.tar.xz 000fc43c1b0a5cfbd85b67e01afd58e847bd1f279e3439bb7db37282b0459f56 guile-3.0.6.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.6.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.71 Automake 1.16.2 Libtool 2.4.6 Gnulib v0.1-4551-ga3a946f670 Makeinfo 6.7 An extract from NEWS follows. Changes in 3.0.6 (since 3.0.5) * Notable changes ** Reimplement dynamic library loading ("dlopening") without libltdl Guile used to load dynamic libraries with libltdl, a library provided by the Libtool project. Libltdl provided some compatibility benefits when loading shared libraries made with older toolchains on older operating systems. However, no system from the last 10 years or so appears to need such a thick compatibility layer. Besides being an unmaintained dependency of limited utility, libltdl also has the negative aspect that in its search for libraries to load, it could swallow useful errors for libraries that are found but not loadable, instead showing just errors for search path candidates that are not found. Guile now implements dynamic library loading directly in terms of the standard "dlopen" interface, providing a limited shim for platforms with similar functionality exposed under different names (MinGW). This change has a few practical impacts to Guile users. There is a new library search path variable, `GUILE_EXTENSIONS_PATH'. Also, errors when loading a library fails now have better errors. And Guile no longer has a libltdl dependency. Although Guile no longer uses libltdl, for backwards compatibility Guile still adds `LTDL_LIBRARY_PATH' to the loadable library search path, and includes ad-hoc logic to support uninstalled dynamically loadable libraries via also adding the ".libs" subdirectories of `LTDL_LIBRARY_PATH' elements. See "Foreign Libraries" in the documentation for a full discussion. ** Fix important incompatibility with GnuTLS Guile uses the GNU multi-precision (GMP) library to implement arbitrary-precision integers (bignums) and fractions. Usually Guile is built to dynamically link to libgmp. In this configuration, any other user of GMP in the process uses the same libgmp instance, with the same shared state. An important piece of shared state is the GMP allocator, responsible for allocating storage for the digits of large integers. For Guile it's most efficient to install libgc as the GMP allocator. That way Guile doesn't need to install finalizers, which have significant overhead, to free GMP values when Guile bignums are collected. Using libgc to allocate digits also allows Guile's GC to adequately measure the memory cost of these values. However, if the Guile process is linked to some other user of GMP, then probably the references from the other library to GMP values aren't visible to the garbage collector. In this case libgc could prematurely collect values from that other GMP user. This isn't theoretical, sadly: it happens for Guile-GnuTLS. GnuTLS uses GMP, and so does Guile. Since Guile 2.0.4, Guile has installed libgc as the GMP allocator, so since then, Guile-GnuTLS has been buggy. Therefore, the default is now to not install libgc as the GMP allocator. This may slow down some uses of bignums. If you know that your Guile program will never use a library that uses GMP, you can set the GUILE_INSTALL_GMP_MEMORY_FUNCTIONS=3D1 variable in your environment. Guile sets this environment variable when building Guile, for example. See "Environment Variables" in the manual, for more. In some future, Guile may switch to GMP's more low-level "MPN" API for working with bignums, which would allow us to regain the ability to use GC-managed digit storage in all configurations. ** New build option: --enable-mini-gmp For some users, it would be preferable to bundle a private copy of the GMP bignum library into Guile. Some users would like to avoid the extra dependency. Others would like to use libgc to manage GMP values, while not perturbing the GMP allocator for other GMP users. For these cases, Guile now has an --enable-mini-gmp configure option, which will use a stripped-down version of GMP, bundled with Guile. This code doesn't have all the algorithmic optimizations of full GMP, but implements the same API in a basic way. It can be more optimal in a Guile context, given that it can use libgc to allocate its data. Note that a build with --enable-mini-gmp is not ABI-compatible with a "stock" build, as functions that use GMP types (scm_to_mpz, scm_from_mpz) are not exported. Thanks to Niels M=C3=B6ller and other GMP developers for their mini-gmp implementation! ** New `read' implementation in Scheme Guile's `read' procedure has been rewritten in Scheme. Compared to the C reader (which still exists for bootstrapping reasons), the new implementation is more maintainable, more secure, more debuggable, all while faithfully reproducing all quirks from Guile's previous reader implemented in C. Also, the Scheme reader is finally compatible with suspendable ports, allowing REPL implementations to be built with lightweight concurrency packages such as the third-party "Fibers" library. Calls to `read' from Scheme as well as calls to `scm_read' from C use the new reader. The Scheme implementation is currently about 60% as fast as the now-inaccessible C implementation, and we hope to close the gap over time. Bug reports very welcome. ** Scheme compiler uses `read-syntax' for better debugging The new Scheme reader also shares implementation with the new `read-syntax' procedure, which annotates each datum with source location information. Guile's compiler can use this to provide better source-level debugging for Scheme programs. Note that this can slightly increase compiled file sizes, though this is mitigated by some assembler optimizations. ** Syntax objects record source locations When compiling a file that defines a macro, the output will usually include a number of syntax objects as literals. Previously, these literals had no source information; now they do. This should improve debugging. ** Optimized run-time relocations The code that patches references between statically-allocated Scheme data has been optimized to be about 30% shorter than before or so, which can significantly decrease compiled file size and run-time initialization latency. ** Optimized calls to known functions For calls where the callee is within the compilation unit, Guile can now skip the argument count check. ** Reduce code size for calls to module variables All calls to a given exported or private variable from a module now dispatch through the same trampoline function. This reduces code size. ** Updated Gnulib The Gnulib compatibility library has been updated, for the first time since 2017 or so. We expect no functional change but look forward to any bug reports. * New interfaces and functionality ** `call-with-port' See "Ports" in the manual. ** `call-with-input-bytevector', `call-with-output-bytevector' See "Bytevector Ports" in the manual. ** `GUILE_EXTENSIONS_PATH' environment variable. See "Environment Variables" in the manual. ** `mkdtemp' and `mkstemp' See "File System" in the manual. There is still `mkstemp!' but we recommend that new code uses `mkstemp', which does not mutate the contents of the "template" argument string. Instead for `mkstemp' you get the name of the newly-created file by calling `port-filename' on the returned port. ** `(system foreign-library)' module See the newly reorganized "Foreign Function Interface", for details. These new interfaces replace `dynamic-link', `dynamic-pointer' and similar, which will eventually be deprecated. ** `read-syntax' See "Annotated Scheme Read" in the manual. ** `quote-syntax' See "Syntax Case" in the manual. ** `syntax-sourcev' See "Syntax Transformer Helpers" in the manual. * Optimizations ** eof-object? ** R6RS vector-map, vector-for-each * Bug fixes ** Fix reverse-list->string docstring ** Fix R7RS "member" result when no item found ** Fix make-transcoded-port on input+output ports ** Fix (ice-9 ftw) on filesystems where inode values are meaningless ** Fix many bugs that prevented Guile from building on MinGW ** Fix many bugs that prevented Guile from building on MinGW64 ** Fix many bugs that prevented Guile's test suite from running on MinGW ** Fix srfi-69 merge-hash ** Fix suspendable-ports implementation of get-bytevector-some! ** Fix overread in string-locale To: Andy Wingo , guile-user@gnu.org, guile-sources@gnu.org, guile-devel@gnu.org, info-gnu@gnu.org Subject: Re: GNU Guile 3.0.6 released Message-ID: <63c9c21eb1491fcc133f2b4670822a5b85624c22.camel@korwin-zmijowski.fr= > Content-Type: text/plain; charset=3D"UTF-8" Le mercredi 28 avril 2021 =C3=A0 09:17 +0200, Andy Wingo a =C3=A9crit : > We are pleased to announce GNU Guile release 3.0.6, the latest in the > 3.0 stable release series. Hey Andy, This is so coooooooooool ! Thank you to all the Guile Hackers involved. Can't wait to play with it. Take care, J=C3=A9r=C3=A9my ------------------------------ Subject: Digest Footer _______________________________________________ guile-devel mailing list guile-devel@gnu.org https://lists.gnu.org/mailman/listinfo/guile-devel ------------------------------ End of guile-devel Digest, Vol 221, Issue 18 ******************************************** --000000000000629bf105c10b0b78 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi!
In Gui= le's digest I noticed a comment about replacing libltdl (see below) wit= h the standard `dlopen' interface and providing a shim for systems not = supporting it directly.

Do Guile's observations apply in general? Would it make sens= e for the Gnulib project to provide such a shimmed version of `dlopen' = making libltdl obsolete?

Thanks,

Marc

---------- Forwarded message ---------
Von: <guile-devel-reque= st@gnu.org>
Date: Mi., 28. Apr. 2021 um 18:23=C2=A0Uhr
= Subject: guile-devel Digest, Vol 221, Issue 18
To: <guile-devel@gnu.org>


Send gu= ile-devel mailing list submissions to
=C2=A0 =C2=A0 =C2=A0 =C2=A0 guile-devel@gnu.org

To subscribe or unsubscribe via the World Wide Web, visit
=C2=A0 =C2=A0 =C2=A0 =C2=A0 https://lists.gnu.org/= mailman/listinfo/guile-devel
or, via email, send a message with subject or body 'help' to
=C2=A0 =C2=A0 =C2=A0 =C2=A0 guile-devel-request@gnu.org

You can reach the person managing the list at
=C2=A0 =C2=A0 =C2=A0 =C2=A0 guile-devel-owner@gnu.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of guile-devel digest..."


Today's Topics:

=C2=A0 =C2=A01. GNU Guile 3.0.6 released (Andy Wingo)
=C2=A0 =C2=A02. Re: GNU Guile 3.0.6 released (J=C3=A9r=C3=A9my Korwin-Zmijo= wski)


----------------------------------------------------------------------

Message: 1
Date: Wed, 28 Apr 2021 09:17:28 +0200
From: Andy Wingo <w= ingo@pobox.com>
To: guile-user@gnu.= org, guile-s= ources@gnu.org, guile-devel@gnu.org,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 info-gnu@gnu.org
Subject: GNU Guile 3.0.6 released
Message-ID: <87lf92op2v.fsf@pobox.com>
Content-Type: text/plain; charset=3Dutf-8

We are pleased to announce GNU Guile release 3.0.6, the latest in the
3.0 stable release series.

Compared to the previous release in the 3.0 series, Guile 3.0.6 improves source-location information for compiled code, removes the dependency on libltdl, fixes some important bugs, adds an optional bundled "mini-gmp= "
library, as well as the usual set of minor optimizations and bug fixes.

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/, a= nd
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.=C2=A0 In addition to implementin= g
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.=C2=A0 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 co= nnect
primitives provided by the application.=C2=A0 It is easy to call Scheme cod= e
from C code and vice versa.=C2=A0 Applications can add new functions, data<= br> types, control structures, and even syntax to Guile, to create a
domain-specific language tailored to the task at hand.

Guile 3.0.6 can be installed in parallel with Guile 2.2.x; see
http://www.gnu.org/sof= tware/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:
=C2=A0 http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.l= z=C2=A0 =C2=A0(10MB)
=C2=A0 http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.x= z=C2=A0 =C2=A0(13MB)
=C2=A0 http://ftp.gnu.org/gnu/guile/guile-3.0.6.tar.g= z=C2=A0 =C2=A0(21MB)

Here are the GPG detached signatures[*]:
=C2=A0 http://ftp.gnu.org/gnu/guile/guile-3.0.6.= tar.lz.sig
=C2=A0 http://ftp.gnu.org/gnu/guile/guile-3.0.6.= tar.xz.sig
=C2=A0 http://ftp.gnu.org/gnu/guile/guile-3.0.6.= tar.gz.sig

Use a mirror for higher download bandwidth:
=C2=A0 http://www.gnu.org/order/ftp.html

Here are the SHA256 checksums:

=C2=A0 2e5b9e3e56a967a58ae591053a65c1851875bf5e06c60caab409d5647cff4975=C2= =A0 guile-3.0.6.tar.lz
=C2=A0 e2bd83c2077d721356e7579ca33097a13a20e2b7eda6c2362ee1166fbc845d28=C2= =A0 guile-3.0.6.tar.xz
=C2=A0 000fc43c1b0a5cfbd85b67e01afd58e847bd1f279e3439bb7db37282b0459f56=C2= =A0 guile-3.0.6.tar.gz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.=C2=A0 First, be sure to download both the .sig file=
and the corresponding tarball.=C2=A0 Then, run a command like this:

=C2=A0 gpg --verify guile-3.0.6.tar.gz.sig

If that command fails because you don't have the required public key, then run this command to import it:

=C2=A0 gpg --keyserver keys.gnupg.net --recv-keys 4FD4D288D445934E0A14F9A5A= 8803732E4436885

and rerun the 'gpg --verify' command.

This release was bootstrapped with the following tools:
=C2=A0 Autoconf 2.71
=C2=A0 Automake 1.16.2
=C2=A0 Libtool 2.4.6
=C2=A0 Gnulib v0.1-4551-ga3a946f670
=C2=A0 Makeinfo 6.7

An extract from NEWS follows.


Changes in 3.0.6 (since 3.0.5)

* Notable changes

** Reimplement dynamic library loading ("dlopening") without libl= tdl

Guile used to load dynamic libraries with libltdl, a library provided by the Libtool project.

Libltdl provided some compatibility benefits when loading shared
libraries made with older toolchains on older operating systems.
However, no system from the last 10 years or so appears to need such a
thick compatibility layer.

Besides being an unmaintained dependency of limited utility, libltdl
also has the negative aspect that in its search for libraries to load,
it could swallow useful errors for libraries that are found but not
loadable, instead showing just errors for search path candidates that
are not found.

Guile now implements dynamic library loading directly in terms of the
standard "dlopen" interface, providing a limited shim for platfor= ms with
similar functionality exposed under different names (MinGW).

This change has a few practical impacts to Guile users.=C2=A0 There is a ne= w
library search path variable, `GUILE_EXTENSIONS_PATH'.=C2=A0 Also, erro= rs when
loading a library fails now have better errors.=C2=A0 And Guile no longer h= as
a libltdl dependency.

Although Guile no longer uses libltdl, for backwards compatibility Guile still adds `LTDL_LIBRARY_PATH' to the loadable library search path, and=
includes ad-hoc logic to support uninstalled dynamically loadable
libraries via also adding the ".libs" subdirectories of
`LTDL_LIBRARY_PATH' elements.=C2=A0 See "Foreign Libraries" i= n the
documentation for a full discussion.

** Fix important incompatibility with GnuTLS

Guile uses the GNU multi-precision (GMP) library to implement
arbitrary-precision integers (bignums) and fractions.=C2=A0 Usually Guile i= s
built to dynamically link to libgmp.=C2=A0 In this configuration, any other=
user of GMP in the process uses the same libgmp instance, with the same
shared state.

An important piece of shared state is the GMP allocator, responsible for allocating storage for the digits of large integers.=C2=A0 For Guile it'= ;s
most efficient to install libgc as the GMP allocator.=C2=A0 That way Guile<= br> doesn't need to install finalizers, which have significant overhead, to=
free GMP values when Guile bignums are collected.=C2=A0 Using libgc to
allocate digits also allows Guile's GC to adequately measure the memory=
cost of these values.

However, if the Guile process is linked to some other user of GMP, then
probably the references from the other library to GMP values aren't
visible to the garbage collector.=C2=A0 In this case libgc could prematurel= y
collect values from that other GMP user.

This isn't theoretical, sadly: it happens for Guile-GnuTLS.=C2=A0 GnuTL= S uses
GMP, and so does Guile.=C2=A0 Since Guile 2.0.4, Guile has installed libgc = as
the GMP allocator, so since then, Guile-GnuTLS has been buggy.

Therefore, the default is now to not install libgc as the GMP allocator. This may slow down some uses of bignums.=C2=A0 If you know that your Guile<= br> program will never use a library that uses GMP, you can set the
GUILE_INSTALL_GMP_MEMORY_FUNCTIONS=3D1 variable in your environment.
Guile sets this environment variable when building Guile, for example.
See "Environment Variables" in the manual, for more.

In some future, Guile may switch to GMP's more low-level "MPN"= ; API for
working with bignums, which would allow us to regain the ability to use
GC-managed digit storage in all configurations.

** New build option: --enable-mini-gmp

For some users, it would be preferable to bundle a private copy of the
GMP bignum library into Guile.=C2=A0 Some users would like to avoid the ext= ra
dependency.=C2=A0 Others would like to use libgc to manage GMP values, whil= e
not perturbing the GMP allocator for other GMP users.

For these cases, Guile now has an --enable-mini-gmp configure option,
which will use a stripped-down version of GMP, bundled with Guile.=C2=A0 Th= is
code doesn't have all the algorithmic optimizations of full GMP, but implements the same API in a basic way.=C2=A0 It can be more optimal in a Guile context, given that it can use libgc to allocate its data.

Note that a build with --enable-mini-gmp is not ABI-compatible with a
"stock" build, as functions that use GMP types (scm_to_mpz,
scm_from_mpz) are not exported.

Thanks to Niels M=C3=B6ller and other GMP developers for their mini-gmp
implementation!

** New `read' implementation in Scheme

Guile's `read' procedure has been rewritten in Scheme.=C2=A0 Compar= ed to the
C reader (which still exists for bootstrapping reasons), the new
implementation is more maintainable, more secure, more debuggable, all
while faithfully reproducing all quirks from Guile's previous reader implemented in C.=C2=A0 Also, the Scheme reader is finally compatible with<= br> suspendable ports, allowing REPL implementations to be built with
lightweight concurrency packages such as the third-party "Fibers"=
library.=C2=A0 Calls to `read' from Scheme as well as calls to `scm_rea= d'
from C use the new reader.

The Scheme implementation is currently about 60% as fast as the
now-inaccessible C implementation, and we hope to close the gap over
time.=C2=A0 Bug reports very welcome.

** Scheme compiler uses `read-syntax' for better debugging

The new Scheme reader also shares implementation with the new
`read-syntax' procedure, which annotates each datum with source locatio= n
information.=C2=A0 Guile's compiler can use this to provide better
source-level debugging for Scheme programs.=C2=A0 Note that this can slight= ly
increase compiled file sizes, though this is mitigated by some assembler optimizations.

** Syntax objects record source locations

When compiling a file that defines a macro, the output will usually
include a number of syntax objects as literals.=C2=A0 Previously, these
literals had no source information; now they do.=C2=A0 This should improve<= br> debugging.

** Optimized run-time relocations

The code that patches references between statically-allocated Scheme
data has been optimized to be about 30% shorter than before or so, which can significantly decrease compiled file size and run-time
initialization latency.

** Optimized calls to known functions

For calls where the callee is within the compilation unit, Guile can now skip the argument count check.

** Reduce code size for calls to module variables

All calls to a given exported or private variable from a module now
dispatch through the same trampoline function.=C2=A0 This reduces code size= .

** Updated Gnulib

The Gnulib compatibility library has been updated, for the first time
since 2017 or so.=C2=A0 We expect no functional change but look forward to<= br> any bug reports.

* New interfaces and functionality

** `call-with-port'

See "Ports" in the manual.

** `call-with-input-bytevector', `call-with-output-bytevector'

See "Bytevector Ports" in the manual.

** `GUILE_EXTENSIONS_PATH' environment variable.

See "Environment Variables" in the manual.

** `mkdtemp' and `mkstemp'

See "File System" in the manual.=C2=A0 There is still `mkstemp!&#= 39; but we
recommend that new code uses `mkstemp', which does not mutate the
contents of the "template" argument string.=C2=A0 Instead for `mk= stemp' you
get the name of the newly-created file by calling `port-filename' on th= e
returned port.

** `(system foreign-library)' module

See the newly reorganized "Foreign Function Interface", for detai= ls.
These new interfaces replace `dynamic-link', `dynamic-pointer' and<= br> similar, which will eventually be deprecated.

** `read-syntax'

See "Annotated Scheme Read" in the manual.

** `quote-syntax'

See "Syntax Case" in the manual.

** `syntax-sourcev'

See "Syntax Transformer Helpers" in the manual.

* Optimizations

** eof-object?
** R6RS vector-map, vector-for-each

* Bug fixes

** Fix reverse-list->string docstring
** Fix R7RS "member" result when no item found
** Fix make-transcoded-port on input+output ports
** Fix (ice-9 ftw) on filesystems where inode values are meaningless
** Fix many bugs that prevented Guile from building on MinGW
** Fix many bugs that prevented Guile from building on MinGW64
** Fix many bugs that prevented Guile's test suite from running on MinG= W
** Fix srfi-69 merge-hash
** Fix suspendable-ports implementation of get-bytevector-some!
** Fix overread in string-locale<?, string-locale-ci<?, and friends ** Fix handling of parameter lists to elisp defun to allow nil
** Fix closure-conversion bug for SCC with no free vars and one not-well-kn= own function
** Fix error when < passed non-real value
** Fix bug in which exported and private names in a used module could alias= each other
** Fix bug with slot options in redefinable GOOPS classes
** Fix bugs regarding port buffering for TLS connections in web client

Thanks to Vasilij Schneidermann, Andrey Ivanov, Rob Browning, Erik
Dominikus, G=C3=B6ran Weinholt, Michael Gran, Andrew Whatson, Ricardo
G. Herdt, Jan Nieuwenhuizen, David Thompson, and abcdw.

* New deprecations

** `dynamic-unlink'

This function now has no effect; Guile will not unload dynamically
linked modules, as that can destabilize the system.

* Incompatible changes

** `call-with-output-string' closes port on normal exit

This procedure used to leave the port open, even though there was no
useful way to access it.=C2=A0 Now we clean it up more promptly, disposing<= br> any possible associated iconv descriptor.



------------------------------

Message: 2
Date: Wed, 28 Apr 2021 10:07:04 +0200
From: J=C3=A9r=C3=A9my Korwin-Zmijowski <jeremy@korwin-zmijowski.fr>
To: Andy Wingo <win= go@pobox.com>, guile-user@gnu.org,
=C2=A0 =C2=A0 =C2=A0 =C2=A0 guile-sources@gnu.org, guile-devel@gnu.org, info-gnu@gnu.org
Subject: Re: GNU Guile 3.0.6 released
Message-ID:
=C2=A0 =C2=A0 =C2=A0 =C2=A0 <63c9c21eb1491f= cc133f2b4670822a5b85624c22.camel@korwin-zmijowski.fr>
Content-Type: text/plain; charset=3D"UTF-8"

Le mercredi 28 avril 2021 =C3=A0 09:17 +0200, Andy Wingo a =C3=A9crit :
> We are pleased to announce GNU Guile release 3.0.6, the latest in the<= br> > 3.0 stable release series.

Hey Andy,

This is so coooooooooool !
Thank you to all the Guile Hackers involved.
Can't wait to play with it.

Take care,
J=C3=A9r=C3=A9my




------------------------------

Subject: Digest Footer

_______________________________________________
guile-devel mailing list
guile-devel@gnu.or= g
https://lists.gnu.org/mailman/listinfo/guile-devel=


------------------------------

End of guile-devel Digest, Vol 221, Issue 18
********************************************
--000000000000629bf105c10b0b78--