GNU Shepherd 1.0.8 released
Ludovic Courtès <[email protected]> Wed, 22 Oct 2025 12:22:29 +0200
| Newsgroups | gmane.lisp.guile.user,gmane.comp.gnu.guix.devel,gmane.lisp.guile.sources |
|---|---|
| Message-ID | <[email protected]> |
We are glad to announce version 1.0.8 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://shepherding.services/news/2024/12/the-shepherd-1.0.0-released/
Notice that the Shepherd has a new hut!
https://shepherding.services/
• 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://shepherding.services/
• Download
Here are the compressed sources and a GPG detached signature:
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.8.tar.gz
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.8.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
4228d23cd9b13d4f9649bce7c696ec85b2419243 shepherd-1.0.8.tar.gz
3beb005370bf0339c567d068a7ad9fb69f0e8850894db01c34635955f7717ff5 shepherd-1.0.8.tar.gz
Authenticate the code by downloading the corresponding .sig file:
gpg --verify shepherd-1.0.8.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.8.tar.gz.sig
It is bit-for-bit reproducible from a checkout of the ‘v1.0.8’ tag of
the Git repository.
• Changes since version 1.0.7
** The Shepherd has a new home!
The Shepherd’s web site is now available at https://shepherding.services.
** Avoid potential race condition in callback running value updates
(https://codeberg.org/shepherd/shepherd/issues/54)
A potential race condition when updating a service's running value via
callback, such as when using SystemD-style services, has been fixed.
** Reduced ‘shepherd’ startup time by using ‘close_range’
(<https://codeberg.org/shepherd/shepherd/issues/41>)
The startup time of ‘shepherd’ has been reduced by using close_range(2) on
systems that support it.
** Remove more Bash-specific idioms from tests
(<https://codeberg.org/shepherd/shepherd/pulls/44>)
The test suite has now been tested with Dash, the default shell on Debian.
** Better support ‘halt’ and ‘poweroff’ on non-GNU systems
(<https://codeberg.org/shepherd/shepherd/pulls/49>)
The ‘configure’ script now guesses more appropriate values to halt and to
power off the system on FreeBSD, OpenBSD, NetBSD, illumos, and Darwin.
** Fix memory leak associated with one-shot services
(<https://codeberg.org/shepherd/shepherd/issues/63>)
One-shot services would never terminate their “logger”—the fiber responsible
for logging their output. Consequently, each time a one-shot service is
started or replaced, a small amount of memory would be leaked, which could
contribute to unbounded heap growth on long-running systems. This is now
fixed.
** Avoid potential memory leak when logging internally at a high rate
(<https://codeberg.org/shepherd/shepherd/issues/40>)
When ‘shepherd’ itself is logging messages very quickly, as can happen for
instance when it keeps spawning inetd services in response to a high rate of
incoming connections, a memory leak could be triggered. We believe this is
now fixed.
** Fix misbehavior when starting systemd services with several endpoints
(<https://codeberg.org/shepherd/shepherd/issues/47>)
When starting a service that uses ‘make-systemd-constructor’ with multiple
endpoints, internal startup code for the service could sometimes fire several
times, leading to a harmless backtrace with ‘fcntl’ reporting:
“Wrong type (expecting exact integer): #<closed: file …>”. This is now fixed.
** ‘system-log’ service ignores empty lines read from the kernel log
(<https://codeberg.org/shepherd/shepherd/issues/46>)
The ‘system-log’ service no longer logs empty lines read from the kernel log,
as can be seen with /dev/klog on the Hurd.
** ‘system-log’ service correctly identifies messages form the kernel log
(<https://codeberg.org/shepherd/shepherd/issues/46>)
When the ‘system-log’ service encounters a message without facility
information from the kernel log, it now treats it as a kernel message and
prefixes it as such in the log file(s). This is the case with kernel messages
from /dev/klog on the Hurd.
** ‘--socket’ option of shepherd no longer accepts ‘-’
While ‘shepherd’ was documented as being able to read commands from standard
input when started with ‘--socket=-’, this (dubious) feature had actually been
unsupported throughout the 1.0.x series. It is now officially dropped.
** Translations
This version is fully translated in German, Romanian, Swedish, and Ukrainian;
it is partially translated in several other languages. Check out
https://translationproject.org/domain/shepherd.html to help translate it into
your language!
Please report bugs to <https://codeberg.org/shepherd/shepherd/issues>.
Join [email protected] for discussions.
Many thanks to everyone who reported bugs or contributed patches!
Ludovic, on behalf of the Shepherd herd.
signature.asc
(application/pgp-signature, 853 B)
-----BEGIN PGP SIGNATURE----- iQJBBAEBCgArFiEEPORkVYqE/cadtAz7CQsRmT2a67UFAmj4sGcNHGx1ZG9AZ251 Lm9yZwAKCRAJCxGZPZrrtXmUEACIugFQC2R/wwHYmRWXvZs46FiEBPP1psUo+BaG TckkfYL47F+A5SUFd1gn7pV2mEx0RVEaBSmuD6cxrXSa4DIoV44lSPUHfjGtQo7y j5lRGL2Up7bEShOYmduulNRHKVrtQEixpWkbBz6IWy8QtvCWB7kvZg2D9L9PdQRx +hcG9K0sEZy0OBOiZl83I32EjWbcYGq/WA2FOQpI+sPOrRvklZRJ3P5psWLAbxSO 2og5U+XXXTc/VtCbeYjyY2UAnxI27ooepNyNr1FOnbifyeueRXV95/D/7wD2Ty5+ oH+SU8ZXe2pQjU3Xkq2lyPS5yj5I3keoRjPkn9sKZZVF6eKmu2SBCzyYKElN+Sdx I6pm9vIzOhCIqfUxULqbPh+voSHJQhjs3UvwNanrjwqi8MiHz3kZaPhtbh8c0OUW ylIUsM68L8AmhQW819gPhlYlcF5n4xdCxbyxfsURCsZtVjSdNTr9S/BmCE9Jio5s ACR2DLb9XF214ITgmlQ4El9uKYjey96ro0y18ewy1Q3DiP1H1f/jjwYd2iaA3A8i Dg6gcsbqvfDPoTwq+i5nbNIF27Xi7wYafujifj+g4DHfweEQPdckeiJL/mbFUY4N +SvPsV4R9y9vdb+TvDYj4S21Byq+G6x71w9/rcB0OnLqHIJAbtVtfaObGttKeGvV uymucA== =URV3 -----END PGP SIGNATURE-----