[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GNU Guile 3.0.9 released
From: |
Ludovic Courtès |
Subject: |
GNU Guile 3.0.9 released |
Date: |
Wed, 25 Jan 2023 15:34:04 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) |
We are pleased to announce GNU Guile release 3.0.9, the latest in the
3.0 stable release series, corresponding to 138 commits by 27 people
since 3.0.8.
This release provides many bug fixes as well as new functionality,
including new bindings to POSIX interfaces. See the ‘NEWS’ excerpt
below for details.
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.
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.
Check out the web page for more info and resources:
https://gnu.org/software/guile
Guile 3.0.9 can be installed in parallel with Guile 2.2.x; see
http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html.
Here are the compressed sources:
https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.gz (9.3MB)
https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.lz (5.2MB)
https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.xz (5.5MB)
Here are the GPG detached signatures:
https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.gz.sig
https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.lz.sig
https://ftp.gnu.org/gnu/guile/guile-3.0.9.tar.xz.sig
Use a mirror for higher download bandwidth:
https://www.gnu.org/order/ftp.html
Here are the SHA1 and SHA256 checksums:
6ce38ec3fefc19aa08d4662e9b054f7018a72004 guile-3.0.9.tar.gz
GFJQea0poNRtFcdlgbXZHIcCMBv9ghZm0uHRNyYWKBE guile-3.0.9.tar.gz
bcc02997587cdd03a831ee8d7153cad92629dc3f guile-3.0.9.tar.lz
vA7go2D7E5GcFOtuJFMxmt8eyZgojJk4KbzxePtIzJo guile-3.0.9.tar.lz
bf6af1aac320a56233d4d8c0fbeb2c0dca474eab guile-3.0.9.tar.xz
GiYlrHKyNm6VeS8/51j9Lfd1tARKkKSpeHMm5mwNdQ0 guile-3.0.9.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.9.tar.gz.sig
The signature should match the fingerprint of the following key:
pub rsa4096 2014-08-11 [SC]
3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5
uid [ unknown] Ludovic Courtès <ludo@gnu.org>
uid [ unknown] Ludovic Courtès <ludo@chbouib.org>
uid [ unknown] Ludovic Courtès (Inria) <ludovic.courtes@inria.fr>
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 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
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.9.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-5703-g356a414e8c
Makeinfo 7.0.1
Changes in 3.0.9 (since 3.0.8)
* Notable changes
* New interfaces and functionality
** New `spawn' procedure to spawn child processes
The new `spawn' procedure creates a child processes executing the given
program. It lets you control the environment variables of that process
and redirect its standard input, standard output, and standard error
streams.
Being implemented in terms of `posix_spawn', it is more portable, more
robust, and more efficient than the combination of `primitive-fork' and
`execl'. See "Processes" in the manual for details, and see the 2019
paper entitled "A fork() in the road" (Andrew Baumann et al.) for
background information.
`system*', as well as the `open-pipe' and `pipeline' procedures of
(ice-9 popen) are now implemented in terms of `posix_spawn' as well,
which fixes bugs such as redirects: <https://bugs.gnu.org/52835>.
** `open-file' now supports an "e" flag for O_CLOEXEC
Until now, the high-level `open-file' facility did not provide a way to
pass O_CLOEXEC to the underlying `open' call. It can now be done by
appending "e" to the `mode' string passed as a second argument. See
"File Ports" in the manual for more info.
** `pipe' now takes flags as an optional argument
This lets you pass flags such as O_CLOEXEC and O_NONBLOCK, as with the
pipe2(2) system call found on GNU/Linux and GNU/Hurd, instead of having
to call `fnctl' afterwards. See "Ports and File Descriptors" in the
manual for details.
** Bindings to `openat' and friends
The procedures `openat', `open-fdes-at', `statat', `chownat',
`unlinkat', `chmodat', `renameat', `mkdirat' and `symlinkat' have been
added. They resolve file names relative to a directory passed as a file
port. The procedures `chdir' `readlink' and `utime' have been extended
to support file ports. The related flags `AT_REMOVEDIR' and
`AT_EACCESS' have been added. See `File System' in the manual
** Abstract Unix-domain sockets are supported
It is now possible to create an AF_UNIX socket with a leading zero byte
in its file name to create an abstract Unix-domain socket. See
"man 7 unix" for information on abstract Unix-domain sockets.
** New socket-related constants defined
The `IN6ADDR_ANY' and `IN6ADDR_LOOPBACK' are now defined on systems with
IPv6 support; they can be used with `bind'.
Likewise, the `IPPROTO_IPV6' and `IPV6_V6ONLY' constants are defined,
for use with `setsockopt'.
** New `bytevector-slice' procedure
As an extension to the R6RS interface, the new (rnrs bytevectors gnu)
module defines `bytevector-slice', which returns a bytevector that
aliases part of an existing bytevector. See "Bytevector Slices" in the
manual.
** Disassembler now shows intrinsic names
Disassembler output now includes the name of intrinsics next to each
`call-' instruction (info "(guile) Intrinsic Call Instructions").
** Linker and assembler consume less memory
Previously, the entire output ELF file contents would be stored in
memory when compiling as with `guild compile'. This is no longer the
case.
* Bug fixes
** JIT compilation is now supported on Apple M1 processors
(https://bugs.gnu.org/44505)
** Type sizes are correctly determined when cross-compiling
(https://bugs.gnu.org/54198)
** psyntax honors source properties coming from read hash extensions
(https://bugs.gnu.org/54003)
** ./configure checks whether the linker supports '-flto' (needed on macOS)
** libguile/srfi-14.i.c is now longer shipped and is instead built from source
(https://bugs.gnu.org/54111)
** Cross-compilation supports triplets with empty vendor strings
(https://bugs.gnu.org/54915)
** It is possible to use a 'library-form' inside 'cond-expand' in R7RS libraries
(https://bugs.gnu.org/55934)
** 'coverage-data->lcov' accepts a #:modules argument as documented
(https://bugs.gnu.org/54911)
** 'connect' returns #f upon EAGAIN, not just EINPROGRESS
** (web http) capitalizes the "Basic" authorization header
** (web http) terminates chunked encoding with an extra \r\n
** (web client) retries TLS handshake upon non-fatal errors
(https://bugs.gnu.org/49223)
** 'primitive-load' opens files as O_CLOEXEC
(https://bugs.gnu.org/57567)
** Baseline compiler no longer crashes on (not (list 1 2))
(https://bugs.gnu.org/58217)
** Fix documentation of ‘mkdir’
Previously, the documentation implied the umask was ignored if the
mode was set explicitly. However, this is not the case.
** 'system*' honors output/error port redirects
(https://bugs.gnu.org/52835)
** 'open-input-pipe' & co. are now much faster
(https://bugs.gnu.org/59321)
** Fix crash with out-of-bound indexes with `string-ref' and `fluid-ref*'
(https://bugs.gnu.org/60488, https://bugs.gnu.org/58154)
** Fix infinite loop when compiling (make-vector)
(https://bugs.gnu.org/60522)
Many thanks to everyone who contributed to Guile, in particular to the
following people for their contributions to code and documentation:
2 Aleix Conchillo Flaqué
5 Andrew Whatson
3 Andy Wingo
1 Antoine Kalmbach
1 Arne Babenhauserheide
3 Christopher Baines
1 Colin Woodbury
7 Daniel Llorens
2 Fulbert
5 Jean Abou Samra
1 Jessica Tallon
3 Josselin Poiret
1 Liliana Marie Prikler
58 Ludovic Courtès
14 Maxime Devos
5 Michael Gran
1 Mihail Iosilevich
1 Mikael Djurfeldt
13 Mike Gran
1 Olivier Dion
1 Rob Browning
1 Sergei Trofimovich
1 Taylor R Campbell
2 Timothy Sample
2 Vijay Marupudi
1 Zhang Ning
2 jgart
Ludo’ on behalf of the Guile team.
signature.asc
Description: PGP signature