From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Nala Ginrut via General Guile related discussions Newsgroups: gmane.lisp.guile.user Subject: Re: GNU Guile 3.0.10 released Date: Wed, 26 Jun 2024 09:39:52 +0900 Message-ID: References: <877cef2uhk.fsf@pobox.com> <1ec7ed4a-9984-466c-9561-6fd82f175343@posteo.de> Reply-To: Nala Ginrut Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="11851"; mail-complaints-to="usenet@ciao.gmane.io" Cc: guile-user@gnu.org To: zelphirkaltstahl@posteo.de Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Wed Jun 26 06:05:48 2024 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1sMJul-0002qw-SB for guile-user@m.gmane-mx.org; Wed, 26 Jun 2024 06:05:48 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sMGkL-00063D-CC; Tue, 25 Jun 2024 20:42:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sMGjy-000632-UM for guile-user@gnu.org; Tue, 25 Jun 2024 20:42:26 -0400 Original-Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sMGjH-0007AS-TW for guile-user@gnu.org; Tue, 25 Jun 2024 20:42:24 -0400 Original-Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-2c2d25b5432so4547539a91.2 for ; Tue, 25 Jun 2024 17:40:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719362403; x=1719967203; darn=gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nKKY4t+7fBDC9SCxUqcCM8gEp0iKf9omoxBHduTC3PQ=; b=m1CtSSFQyE2bocFa8mgFuNfRkur7me1BqlYvbdszmFaXzTDgNWmUQlVKRzVkH6FzaJ 0Pvu9qgWE3V5YPWB61du9GmwsZxH/dJVxs7nTtzDrQgSFrS33BK8GDXgtpMWCO1Tewuj OL0CU/2cHkduQUD/pzVB9tlflnEBpEsr9/dldM4xpcCxqyfvvNVBGBu9lCGvOFhscWjk zpKtSqZi8epXdfOOatR6F+MCha3w1pvWYecmUcB7049AEHnXvigzC/tPMiXDIzT+F6FH gDrQt+GQJSCdwGHEKWsL+d5HFscZW9qv14gB0U9CQbQ69dmQy3Vg4EjPfSCY8ka9wvza 8AYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719362403; x=1719967203; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=nKKY4t+7fBDC9SCxUqcCM8gEp0iKf9omoxBHduTC3PQ=; b=Np8kn5mQWN8BmRIzM2VMJsBX2PsJSVKQ+UC6X7HZKINbcC37/BhJA11VzROx4ddhm+ /K78qGwdNO5BtWftBG06MTeQpA8Ejs1nUctpcCv3pXKkTeGusHbECU0vy5XQC4Lm2clO oJNF8nA3LuyHjjhLJGXwU2Gi2zz9k1HxgkEwCJvIWI9hj73MT6irM4gKBnDqZfk5UzcL 7wxBOAAHXx2HjYmTq4zZgaUltuK97JuX9pS9JBJwTycz/lFB/jImYpn7MwH0yWdI6m1Y xCRqPfi9cHHpKZvvZQwRMjmTfWTqrd5USX9TRcO7W1qjiduo0izFe0b1tuazREfWjp0V 8k6Q== X-Gm-Message-State: AOJu0YwE71H08Q5A96EZb33ZIQVaP4j5yS7eibeVnRzsu/ECPwDfmKUb iJpGudHpsMusXuhc3cuzvZVghXukNpkuoe/jlOWr0ptCbNESWezNZVOZlSfpBbAYipKwamHc+rT jnlIi6lU+HPr2C3eI6hsB7+/j5T4= X-Google-Smtp-Source: AGHT+IFzzz9XLp8+rmjqmKNgUPQcxjBmFTt+wWifldph4DbXsHazDs1tIuZGkK9AhYNG2Vp2bAPIzvpe5jBKsOS0JKQ= X-Received: by 2002:a17:90a:c704:b0:2c7:530e:e809 with SMTP id 98e67ed59e1d1-2c861428b21mr7830611a91.21.1719362403231; Tue, 25 Jun 2024 17:40:03 -0700 (PDT) In-Reply-To: <1ec7ed4a-9984-466c-9561-6fd82f175343@posteo.de> Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=nalaginrut@gmail.com; helo=mail-pj1-x1032.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, T_SPF_HELO_TEMPERROR=0.01, T_SPF_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.user:19729 Archived-At: Congrats! Thanks to all! On Wed, Jun 26, 2024, 03:18 Zelphir Kaltstahl wrote: > Thanks to all contributors for your work! > > Exciting to see Guile improving! > > On 23.06.24 23:56, Andy Wingo wrote: > > We are pleased to announce GNU Guile release 3.0.10, the latest in the > > 3.0 stable release series. > > > > Guile 3.0.10 is a bug-fix release which also adds optimizations, suppor= t > > for a new WebAssembly back-end, new custom port facilities, a new > > optional front-end syntax, and more. See the NEWS extract at the end o= f > > the mail for full details. > > > > Here are the compressed sources: > > ftp://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.gz (9.3MB) > > ftp://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.lz (5.3MB) > > ftp://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.xz (5.6MB) > > > > Here are the GPG detached signatures: > > ftp://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.gz.sig > > ftp://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.lz.sig > > ftp://ftp.gnu.org/gnu/guile/guile-3.0.10.tar.xz.sig > > > > Use a mirror for higher download bandwidth: > > https://www.gnu.org/order/ftp.html > > > > Here are the SHA1 and SHA256 checksums: > > > > ca52ff876b8552b6f8f70231cc33ef7cbcc4a95f guile-3.0.10.tar.gz > > Lb28l1mLL68xATVk77SOT+1EEx0o6ZbCar6KWyO1bCo guile-3.0.10.tar.gz > > 105a99a0771d7371502b529b762abe18d729930e guile-3.0.10.tar.lz > > 8Nl8zPUG5LYQTFFjm9G3v2dADgs0AfCy9rcTZTIEAyc guile-3.0.10.tar.lz > > e95e37f681dae692de52242929cbc7092eef3eb4 guile-3.0.10.tar.xz > > vXFoUX/VJjM0RtT3q4FlJ5JWNAlPvTcyLhfiuNjnY4g guile-3.0.10.tar.xz > > > > The SHA256 checksum is base64 encoded, instead of the > > hexadecimal encoding that most checksum tools default to. > > > > 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.10.tar.gz.sig > > > > The signature should match the fingerprint of the following key: > > > > pub rsa4096 2017-08-09 [SC] > > 4FD4 D288 D445 934E 0A14 F9A5 A880 3732 E443 6885 > > uid Andy Wingo > > uid Andy Wingo > > uid Andy Wingo > > > > If that command fails because you don't have the required public key, > > or that public key has expired, try the following commands to retrieve > > or refresh it, and then rerun the 'gpg --verify' command. > > > > gpg --recv-keys 4FD4D288D445934E0A14F9A5A8803732E4436885 > > > > As a last resort to find the key, you can try the official GNU > > keyring: > > > > wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg > > gpg --keyring gnu-keyring.gpg --verify guile-3.0.10.tar.gz.sig > > > > > > This release was bootstrapped with the following tools: > > Autoconf 2.71 > > Automake 1.16.5 > > Libtool 2.4.7 > > Gnulib v0.1-4855-g8f4538a53d > > Makeinfo 7.1 > > > > An extract from NEWS follows. > > > > > > * Notable changes > > > > ** Beginnings of support for alternate back-ends > > > > A number of adaptations and additions of as-yet unstable interfaces hav= e > > been made to allow third-party projects such as the Hoot > > Guile-to-WebAssembly whole-program compiler > > (https://spritely.institute/hoot/) to use the Guile front-end and > > optimizer. Depending on how Hoot development goes, we may consider > > adding first-class support for WebAssembly as a compilation target; > > discussion is welcome on the guile-devel mailing list. > > > > ** `define` in all bodies > > > > `define` adds a definition to the body in which it appears, as if each > > non-tail definition or expression in that body were a binding in a > > surrounding `letrec*` clause. However, in some places, using `define` > > would result in the annoying error "definition in expression context, > > where definitions are not allowed", which could be fixed by explicitly > > adding a surrounding binding contour, for example an empty `let`. This > > was because there was no implicit surrounding lexical binding contour > > for the body of `when` and `unless`, for `cond` clauses, `case` clauses= , > > `and-let*` bodies, and `with-fluids`. But no more; now these contexts > > now create a binding contour, allowing the use of `define`. > > > > ** Two bug fixes of note regarding scoping of top-level variables > > > > Previously, a reference to a top-level variable in a module other than > > the current module would be silently rewritten to reference the current > > module, if the variable was unbound in its original module. This was a > > hack from the early days of when we extended psyntax to know about the > > module system, and is now fixed to properly use the scope of the > > introduced binding instead of the scope of the macro use site. > > > > Also, embarrassingly, sometimes macro-introduced top-level variables > > would use the same generated name. This is because of the strategy > > discussed in the manual, "Hygiene and the Top-Level"; sometimes the > > hashes would collide, for example if two definitions were the same in > > the beginning and only differed long into the end. This has been fixed > > to ensure name uniqueness. > > > > * New interfaces and functionality > > > > ** R6RS custom textual ports > > > > Guile finally supports this venerable R6RS interface; see "Custom Ports= " > > in the manual for more. These ports are suspendable (see "Non-Blocking > > I/O"). Also new in this release, custom binary ports are now > > suspendable as well. > > > > ** New "soft port" interface > > > > Instead of using R6RS custom textual ports, we recommend the new "soft > > ports" facility, because it is easier to use while also being more > > expressive. See "Soft Ports" in the manual for more details. > > > > Soft ports are implemented by the new module `(ice-9 soft-ports)`. > > There is a legacy "soft ports" facility exported by `(guile)` which wil= l > > be deprecated at some point. > > > > ** New "custom port" facility: (ice-9 custom-ports) > > > > Custom ports are like R6RS custom binary ports, but lower-level, having > > access to all of Guile's internal port API. See "Custom Ports" in the > > manual. > > > > ** New surface syntax: Wisp (SRFI-119) > > > > Guile now includes SRFI-119, commonly referred to as Wisp (for > > "Whitespace for Lisp"), a Pythonesque surface syntax for Scheme where > > parentheses are replaced by equivalent indentation. See SRFI-119 in th= e > > manual. > > > > ** New warning: unused-module > > > > This analysis, enabled at `-W2', issues warnings for modules that appea= r > > in a `use-modules' form or as a #:use-module clause of `define-module', > > and whose bindings are unused. This is useful to trim the list of > > imports of a module. > > > > In some cases, the compiler cannot conclude whether a module is > > definitely unused---this is notably the case for modules that are only > > used at macro-expansion time, such as (srfi srfi-26). In those cases, > > the compiler reports it as "possibly unused". > > > > ** New documentation on inline procedure property declarations > > > > Did you know that you can annotate procedures with properties? It goes > > like this: > > > > (define (frobnicate) > > #((fruits . (apple banana))) > > (whatever)) > > (procedure-property frobnicate 'fruits) =3D> (apple banana) > > > > Now you know, and now it is documented in "Procedure Properties" in the > > manual. It has been this way since at Guile 2.0, but was never > > documented before. > > > > ** New procedure annotation: maybe-unused > > > > The utility of the `-Wunused-toplevel` warning, enabled at `-W2`, has > > historically been somewhat limited, especially when a macro generates a > > number of bindings, not all of which may be used. To produce more > > useful results, we now allow procedures to set the `maybe-unused` > > property, which if true will not result in unused-toplevel warnings. > > This property is set by `define-inlinable`, in case an inline binding > > never needs the procedure-as-value definition. > > > > ** New exports from `(system foreign)`: read-c-struct, write-c-struct > > > > See "Foreign Structs" in the manual. These macros are like the older > > `parse-c-struct` / `make-c-struct` procedures, but they are more > > efficient because they inline the field accesses and don't deal in > > lists. > > > > ** Wider backtraces when not writing to a terminal > > > > When writing a backtrace, if the output port is not a terminal, Guile > > truncates the lines at 500 characters instead of 80. Override this > > width via the `default-frame-width` parameter exported by the `(system > > repl debug)` module. > > > > ** copy-file now supports copy-on-write > > > > The copy-file procedure now takes an additional keyword argument, > > #:copy-on-write, specifying whether copy-on-write should be done, if th= e > > underlying file-system supports it. Possible values are 'always, 'auto > > and 'never, with 'auto being the default. > > > > This speeds up copying large files a lot while saving the disk space. > > > > ** 'seek' can now navigate holes in sparse files > > > > On systems that support it, such as GNU/Linux, the new SEEK_DATA and > > SEEK_HOLE values can now be passed to the 'seek' procedure to change > > file offset to the next piece of data or to the next hole in sparse > > files. See "Random Access" in the manual for details. > > > > ** ((scm foreign-object) make-foreign-object-type) now supports #:super > > > > A list of superclasses can now be provided via #:super. > > > > ** 'get-bytevector-all' is now written in Scheme and is thus suspendabl= e > > > > The 'get-bytevector-all' procedure from (rnrs io ports) and (ice-9 > > binary-port) used to be implemented in C, making it non-suspendable--a > > bummer for programs using suspendable ports and Fibers. It has been > > rewritten in Scheme, addressing this limitation. > > > > * Performance improvements > > > > ** Better compilation of calls to procedures with keyword arguments > > > > Calls to keyword-arg functions can now be inlined. Even when not > > inlined, sometimes now we can compute default values for missing > > keywords at the callee instead of in the caller. > > > > ** Better compilation of append with more than 2 arguments > > ** Better compilation logand with one immediate argument > > ** Better type inference for result of symbol-hash > > ** Elide effect-free primitive calls when called for effect > > ** Constant folding for string->utf8 > > ** JIT improvements for rarely-used push/pop/drop > > ** Better type inference for numeric tower predicates > > ** Better compilation for calls to raise-exception > > ** Smaller disk usage via sparse binary files > > > > * New deprecations > > > > ** (ice-9 lineio) > > > > Use read-line together with unread-string instead. > > > > * Changes to the distribution > > > > ** Parallel test driver for Guile unit tests > > > > Guile's internal unit test harness is now compatible with Automake's > > parallel test driver, allowing `make check -j20` to use 20 cores, if yo= u > > have them. Send any bug reports to bug-guile@gnu.org. > > > > * Bug fixes > > > > ** Fix incorrect comparison between exact and inexact numbers > > () > > ** (ice-9 suspendable-ports) incorrect UTF-8 decoding > > () > > ** Fix invalid use of 'posix_spawn' on non-glibc systems > > () > > ** Adjust 'spawn' test for GNU/Hurd > > () > > ** Fix 'system*' with non-file input/output/error port > > () > > ** 'spawn' errors out instead of crashing when passed non-file ports > > () > > ** Support signal handling child processes after 'primitive-fork' > > () > > ** Fix possible deadlock in 'sigaction' (aka. 'scm_sigaction_for_thread= ') > > () > > ** Avoid module resolution in 'call-with-new-thread', which could > deadlock > > () > > ** Fix deadlock in 'join-thread' when timeout is hit > > () > > ** 'read-u8' in (scheme base) now defaults to (current-input-port) > > () > > ** Second argument of 'unread-string' is now optional, as previously > documented > > () > > ** 'ftw' now correctly deals with directory permissions > > () > > ** 'make-custom-port' now honors its #:conversion-strategy argument > > ** 'eval-string' respects #:column (previously it was set to the #:line= ) > > ** 'string->date' now allows a colon in the ISO 8601 zone offset > > ** 'system*' no longer fiddles with the process' signal handlers > > () > > ** Fix bug with JIT of atomic swap on AArch64 > > (https://github.com/wingo/fibers/issues/83) > > ** Fix exception dispatch for exceptions thrown within pre-unwind > > handlers > > ** Fix error computing backtrace when call-with-values on stack > > ** Fix r7rs string-for-each to stop when any string runs out of chars > > ** Hashing of UTF-8 symbols with non-ASCII characters avoids corruption > > () > > > > Hearty thanks to Arne Babenhauserheide, Arsen Arsenovi=C4=87, Bruno Vic= tal, > > Christopher Baines, Daniel Llorens, Denis 'GNUtoo' Carikli, Ekaitz > > Zarraga, Jonas Hahnfeld, Jorge Gomez, Josselin Poiret, Juliana Sims, > > Linus Bjornstam, Luke Nihlen, Maxim Cournoyer, Michael Gran, Michael > > K=C3=A4ppler, Mikael Djurfeldt, Morgan Smith, Nikita Domnitskii, Olivie= r > > Dion, Rob Browning, Taylan Kammer, Timothy Sample, Tomas Volf, Tony > > Garnock-Jones, and =E7=84=A1=E7=84=A1for their patches and bug reports. > > > -- > repositories: https://notabug.org/ZelphirKaltstahl > > >