GNU Shepherd 1.0.3 released

Ludovic Courtès <[email protected]> Wed, 19 Mar 2025 11:11:28 +0100
Newsgroups gmane.lisp.guile.sources,gmane.comp.gnu.guix.devel,gmane.lisp.guile.user
Message-ID <[email protected]>
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

We are glad to announce version 1.0.3 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-release=
d/

=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://www.gnu.org/software/shepherd/

=E2=80=A2 Download

  Here are the compressed sources and a GPG detached signature:
    https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.3.tar.gz
    https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.3.tar.gz.sig

  Here are the SHA1 and SHA256 checksums:

    705a13b4a5b022bd117bb015fed2804e9a32af58  shepherd-1.0.3.tar.gz
    40e779eb5ffd76fbe85cde9533d37f0da980462853e01974816093f5510bf3d8  sheph=
erd-1.0.3.tar.gz

  Authenticate the code by downloading the corresponding .sig file:

    gpg --verify shepherd-1.0.3.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.3.tar.gz.sig

  It is bit-for-bit reproducible from a checkout of the =E2=80=98v1.0.3=E2=
=80=99 tag of
  the Git repository.


=E2=80=A2 Changes since version 1.0.2

  ** =E2=80=98spawn-command=E2=80=99 now honors #:log-file

  The =E2=80=98spawn-command=E2=80=99 procedure now accepts a #:log-file ar=
gument, just like
  =E2=80=98fork+exec-command=E2=80=99.

  ** New =E2=80=98--syslog=E2=80=99 option of =E2=80=98shepherd=E2=80=99

  This option forces shepherd to write its output to syslog (the /dev/log s=
ocket
  by default).  This is already the case when shepherd runs as root so this
  option only makes sense for non-root shepherd instances, and its primary
  purpose is testing.

  ** Always decode client commands as UTF-8
     (<https://issues.guix.gnu.org/76244>)

  Previously client commands send by =E2=80=98herd=E2=80=99 would be decode=
d according to the
  locale encoding of the =E2=80=98shepherd=E2=80=99 process, which could be=
 ASCII; now they=E2=80=99re
  always decoded as UTF-8, as intended.

  ** Internal logging is always UTF-8
     (<https://issues.guix.gnu.org/76244>)

  The so-called =E2=80=9Cservice output port=E2=80=9D, where internal loggi=
ng from shepherd
  itself goes, is now always UTF-8-encoded (instead of following locale
  encoding).

  ** Log output missing a newline is preserved
     (<https://issues.guix.gnu.org/76243>)

  It used to be that service output missing a final newline would not be lo=
gged,
  for example when running =E2=80=9Cherd spawn transient -- echo -n aaaaa=
=E2=80=9D.  This is now
  fixed.

  ** Default generated configuration file updated to match current interface
     (<https://issues.guix.gnu.org/76403>)

  The ~/.config/shepherd/init.scm generated when it doesn=E2=80=99t already=
 exist would
  use deprecated and removed interfaces.  This is now fixed.

  ** Inhibit service respawn during shutdown
     (<https://issues.guix.gnu.org/76338>)

  Until now, the ability to respawn services remained functional during shu=
tdown
  (with =E2=80=98herd stop root=E2=80=99, =E2=80=98reboot=E2=80=99, etc.). =
 This caused troubles on Guix System
  where the =E2=80=98user-processes=E2=80=99 service terminates all process=
es when it is stopped
  and which, as a consequence, could lead shepherd to respawn services, even
  though it was being shut down.

  ** Tolerate slight delays when waiting for a timer event
     (<https://issues.guix.gnu.org/76516>)

  Previously, timers could occasionally get slightly more than a 2-second d=
elay,
  which would lead them to skip their deadline (with a message saying =E2=
=80=9Cresuming
  from sleep state?=E2=80=9D).  Delay tolerance has been increased.

  ** Silence warning about =E2=80=98environ=E2=80=99 when using Guile 3.0.10
     (<https://issues.guix.gnu.org/76343>)

  When using Guile 3.0.10, commands such as =E2=80=98shepherd --help=E2=80=
=99 would print an
  erroneous warning about =E2=80=98environ=E2=80=99 being called from a mul=
ti-threaded context.
  This is now fixed.

  ** Correctly report the exit status of processes terminated early
     (<https://issues.guix.gnu.org/76790>)

  For services using =E2=80=98fork+exec-command=E2=80=99, there used to be =
a small window after
  creating the process and before monitoring it during which process termin=
ation
  would be mishandled: =E2=80=98herd status SERVICE=E2=80=99 would report t=
hat the process
  exited successfully, whether or not this was the case.  This is now fixed.

  ** Several flaky tests have been made more robust

  Several tests were =E2=80=9Cflaky=E2=80=9D: they would fail randomly, typ=
ically when run on
  loaded or slow machines.  The underlying race conditions were identified =
and
  fixed.

  ** Translations

  This version is fully translated in German, Romanian, Slovak, Swedish, and
  Ukrainian; it is partially translated in seven other languages.  Check out
  https://translationproject.org/domain/shepherd.html to help translate it =
into
  your language!



Please report bugs to [email protected].
Join [email protected] for discussions.

Ludovic, on behalf of the Shepherd herd.

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQJBBAEBCgArFiEEPORkVYqE/cadtAz7CQsRmT2a67UFAmfamFANHGx1ZG9AZ251
Lm9yZwAKCRAJCxGZPZrrtdqyD/47w/LVsyyqfky6K3qa1CB9BWP67djttqmYJO24
+hiJFSYKWEzCoZ1Y9JcFTLJC9dPuxgbxpPkyu4CGPrpGY/ZeLzrqHNPkpMO3ME1k
Oj42j6Evqn+rT54LPHZ1nbx60ymeDewSXGm84k35bDhwLdekbdQW61x9ETjHiLn7
l1v4+vc1QsznpIp6LiQ9JlyIUF6/bQJlz+nnAddJGd2oZg+U7aHcA7fKgTKrdfBl
RsVVtfa0MLogzEXD5gYI+7n5SlDmmuiewvxbgD1fzXCi/imGo/PbNODD+C//O9u0
lJUindF8P+JSqfN91Q3D3bvI2zVDwMMIBvigN9bC/Bvz4vPTacg3/iM2YqIp6kA2
jh7LaKaCRLoL0nvzgIxcpP65+hvUescMyw3uwodQWw58rSt4AJNsH/UBaHJloe8A
qOrxcaanWnGrWKwHUm9GQMvPudINXRtlIbbEb2e508Jrsxd6ae8BwtIDEZO55pdF
FUDiqIWxdh7GWnC1aOwHwa7NlHyzwNUipleN8gmlGCa2vRAWKQDG6kxaWSZyrqYk
UMBoQktALJ1v3hKPEaurwz4GVE3Qs/pkQVVSuvlzEvILTgmcHkjSZG8A/fpg1nZX
nKzKFeqnk7iy3B7pgTd2m7k8rx+TCiMy4BYshWA1STrbNCX2ypogeAH7ig1b1m8l
yPlNPQ==
=TOdJ
-----END PGP SIGNATURE-----
--=-=-=--