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-----
--=-=-=--