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]> |
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
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/
=E2=80=A2 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
=E2=80=9Cinit=E2=80=9D system (PID 1) and also by unprivileged users to m=
anage
per-user daemons=E2=80=94e.g., gpg-agent, tor, privoxy. It supports seve=
ral
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/
=E2=80=A2 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 sheph=
erd-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 =E2=80=98v1.0.8=E2=
=80=99 tag of
the Git repository.
=E2=80=A2 Changes since version 1.0.7
** The Shepherd has a new home!
The Shepherd=E2=80=99s web site is now available at https://shepherding.s=
ervices.
** 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 =E2=80=98shepherd=E2=80=99 startup time by using =E2=80=98clos=
e_range=E2=80=99
(<https://codeberg.org/shepherd/shepherd/issues/41>)
The startup time of =E2=80=98shepherd=E2=80=99 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 =E2=80=98halt=E2=80=99 and =E2=80=98poweroff=E2=80=99 o=
n non-GNU systems
(<https://codeberg.org/shepherd/shepherd/pulls/49>)
The =E2=80=98configure=E2=80=99 script now guesses more appropriate value=
s 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 =E2=80=9Clogger=E2=80=9D=E2=
=80=94the 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 =E2=80=98shepherd=E2=80=99 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 =E2=80=98make-systemd-constructor=E2=80=
=99 with multiple
endpoints, internal startup code for the service could sometimes fire sev=
eral
times, leading to a harmless backtrace with =E2=80=98fcntl=E2=80=99 repor=
ting:
=E2=80=9CWrong type (expecting exact integer): #<closed: file =E2=80=A6>=
=E2=80=9D. This is now fixed.
** =E2=80=98system-log=E2=80=99 service ignores empty lines read from the=
kernel log
(<https://codeberg.org/shepherd/shepherd/issues/46>)
The =E2=80=98system-log=E2=80=99 service no longer logs empty lines read =
from the kernel log,
as can be seen with /dev/klog on the Hurd.
** =E2=80=98system-log=E2=80=99 service correctly identifies messages fo=
rm the kernel log
(<https://codeberg.org/shepherd/shepherd/issues/46>)
When the =E2=80=98system-log=E2=80=99 service encounters a message withou=
t 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 mes=
sages
from /dev/klog on the Hurd.
** =E2=80=98--socket=E2=80=99 option of shepherd no longer accepts =E2=80=
=98-=E2=80=99
While =E2=80=98shepherd=E2=80=99 was documented as being able to read com=
mands from standard
input when started with =E2=80=98--socket=3D-=E2=80=99, this (dubious) fe=
ature 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 Ukrain=
ian;
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.
--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----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-----
--=-=-=--