[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GNU Shepherd 1.0.4 released
From: |
Ludovic Courtès |
Subject: |
GNU Shepherd 1.0.4 released |
Date: |
Wed, 16 Apr 2025 12:36:21 +0200 |
User-agent: |
mu4e 1.12.9; emacs 29.4 |
We are glad to announce version 1.0.4 of the Shepherd, the next
bug-fix release in the 1.0.x series.
Check out the web site to learn more about the Shepherd 1.0.x series:
https://gnu.org/software/shepherd/news/2024/12/the-shepherd-1.0.0-released/
• About
The Shepherd is a service manager written in Guile that looks after
the herd of daemons running on the system. It can be used as an
“init” system (PID 1) and also by unprivileged users to manage
per-user daemons—e.g., gpg-agent, tor, privoxy. It supports several
daemon startup mechanisms, including inetd, systemd-style socket
activation, and timers. The Shepherd is configured in Guile Scheme
and can be extended in the same language. It builds on a simple
memory-safe and callback-free programming model.
The Shepherd is developed jointly with the Guix project; it is used as
the init system of Guix System and service manager of Guix Home.
https://www.gnu.org/software/shepherd/
• Download
Here are the compressed sources and a GPG detached signature:
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.4.tar.gz
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.4.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
3572630eaa1401c2ec4df697d2a3c9fef79015e5 shepherd-1.0.4.tar.gz
13306a6b56dfe252464e84a23c23a7234338cc752c565e1b865f7cbf8a03f0cf
shepherd-1.0.4.tar.gz
Authenticate the code by downloading the corresponding .sig file:
gpg --verify shepherd-1.0.4.tar.gz.sig
The signing key can be retrieved with:
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 shepherd-1.0.4.tar.gz.sig
It is bit-for-bit reproducible from a checkout of the ‘v1.0.4’ tag of
the Git repository.
• Changes since version 1.0.3
** ‘herd status’ displays the command of socket-activated and inetd services
When a systemd-style or inetd-style service is started and not yet spawned,
‘herd status SERVICE’ now displays its command in addition to the endpoint(s)
it is listening on.
** ‘restart’ action passes extra arguments to the service’s constructor
(<https://issues.guix.gnu.org/77109>)
Until now, extra arguments passed to the ‘restart’ action would be ignored.
Thus, “herd restart SERVICE a b c” would restart SERVICE but silently ignore
the arguments “a b c”. The behavior is now to pass those extra arguments to
the ‘start’ method of the service.
Incidentally, this also means that mistakenly running “herd restart SERVICE1
SERVICE2” now results in an error because SERVICE2 is interpreted as an
argument to SERVICE1 and not as a second service to restart.
** Starting a one-shot service concurrently no longer reports failure
(<https://issues.guix.gnu.org/77274>)
It used to be that, when trying to start a one-shot service that was already
starting, ‘herd start’ would wrongfully report failure to start. This is no
longer the case.
** Fix potential deadlock with built-in service logger
(<https://issues.guix.gnu.org/77373>)
The built-in service logger (the one used when constructors are not given a
#:log-file argument) could deadlock under some conditions when the service it
was logging has just stopped. The problem was known to manifest in some cases
on Guix System upon ‘herd stop nginx’. This is now fixed.
** ‘log-rotation’ does not compressed already-compressed log files
Programs such as nginx can compress log files as they write them. The
‘log-rotation’ service no longer re-compresses such log files.
** Timers correctly handle winter-to-summer DST change
(<https://issues.guix.gnu.org/77401>)
This is a followup to an incomplete fix in
<https://issues.guix.gnu.org/75622>: during the summer-to-winter daylight
saving time (DST) change, for example from CET (UTC+1) to CEST (UTC+2) on 30
March 2025 in Western Europe, the interval between consecutive calendar events
would be incorrectly calculated when the event would fall between 02:00am and
03:00am, leading the timer to trigger many times in a row, unless it had
#:wait-for-termination? #true. This is now fixed; next year will be better!
** System log no longer crashes on some Unicode input
(<https://issues.guix.gnu.org/77283>)
Due to a bug in Guile’s (ice-9 regex) module, the ‘system-log’ service could
crash on certain inputs containing non-ASCII Unicode characters, when
‘shepherd’ is running in a non-Unicode capable locale (which is usually the
case for PID 1). This is now fixed by sidestepping the regexp bug entirely.
** ‘make-systemd-constructor’ no longer passes O_NONBLOCK sockets
(<https://issues.guix.gnu.org/77610>)
The ‘make-systemd-constructor’ procedure used to pass sockets marked as
non-blocking (O_NONBLOCK) to the process it spawns, except when using
#:lazy-start? #f. It now systematically passes blocking sockets.
This bug would manifest on GNU/Hurd where accept(2) in this child process
would return EAGAIN, which some daemons did not correctly handle.
** ‘system*’ and ‘system’ replacements honor current directory
(<https://issues.guix.gnu.org/77707>)
The ‘system*’ and ‘system’ replacements in the ‘shepherd’ process now run the
given command in the current directory rather than under
(default-service-directory).
** Refuse to start when another shepherd is listening on the socket
(<https://issues.guix.gnu.org/76998>)
Starting an additional ‘shepherd’ as a user used to lead it to take control of
the socket (by default /run/user/UID/shepherd/socket) even though another
instance was already running and listening to that socket. Since that
behavior is undesirable, ‘shepherd’ now refuses to start in this situation.
** Fixed a couple of test suite failures on the Hurd
(<https://issues.guix.gnu.org/77634>)
A couple of tests that used to fail on GNU/Hurd (i586-gnu) have been fixed.
** Translations
This version is fully translated in German, Romanian, Swedish, and Ukrainian;
it is partially translated in eight other languages. Check out
https://translationproject.org/domain/shepherd.html to help translate it into
your language!
Please report bugs to bug-guix@gnu.org.
Join guix-devel@gnu.org for discussions.
Many thanks to everyone who reported bugs or contributed patches!
Ludovic, on behalf of the Shepherd herd.
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- GNU Shepherd 1.0.4 released,
Ludovic Courtès <=