GNU Shepherd 1.0.0 released

Ludovic Courtès <[email protected]> Mon, 09 Dec 2024 17:25:15 +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 thrilled to announce version 1.0.0 of the Shepherd, no less than
twenty-one years after its initial alpha release!  We believe Shepherd
has become a solid tool, meeting the kind of user experience one has
come to expect since systemd.  Check out the web site to learn more:

  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 GNU 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.0.tar.gz
    https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.0.tar.gz.sig

  Here are the SHA1 and SHA256 checksums:

    bc9dc75b3b79e8a9dc26e50c02479ae7f59ebd3d  shepherd-1.0.0.tar.gz
    e8e6af33b02790cc0a5480d759a4211a86d141d073acd3c9346b4cf010ed9e7c  sheph=
erd-1.0.0.tar.gz

  Verify the integrity of the tarball with =E2=80=98cksum -a sha256 --check=
=E2=80=99.

  Authenticate the code by downloading the corresponding .sig file:

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

  This tarball was bootstrapped with the following tools:
    Autoconf 2.71
    Automake 1.16.5
    Gettext 0.21
    Makeinfo 7.1.1

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

=E2=80=A2 Changes since version 0.10.5

  ** =E2=80=98herd status SERVICE=E2=80=99 shows high-level info about serv=
ices

  In previous version, =E2=80=98herd status SERVICE=E2=80=99 would print th=
e =E2=80=9Crunning value=E2=80=9D of
  SERVICE: an integer denoting the PID of its main process, or a socket for
  inetd or systemd services.

  The output is now clearer, showing the =E2=80=9Cmain PID=E2=80=9D, listen=
ing endpoints, and so
  on.

  ** =E2=80=98herd status SERVICE=E2=80=99 shows recently logged messages a=
nd log files

  The command now lists recently-logged messages (choose the number of mess=
ages
  shown with the =E2=80=98-n=E2=80=99 option) as well as the file(s) it is =
logged to, if any.

  ** =E2=80=98herd status SERVICE=E2=80=99 shows custom actions

  When a service defines custom actions, these actions are now shown direct=
ly in
  =E2=80=98herd status SERVICE=E2=80=99, making it easier to discover them.

  ** =E2=80=98herd status SERVICE=E2=80=99 shows whether a replacement is a=
vailable

  When a replacement is available for a service, this is now shown in the o=
utput
  of =E2=80=98herd status SERVICE=E2=80=99.  Run =E2=80=98herd restart SERV=
ICE=E2=80=99 to upgrade it and
  install the replacement in its stead.

  ** =E2=80=98herd status root=E2=80=99 shows information about the =E2=80=
=98root=E2=80=99 service itself

  It used to be that =E2=80=98herd status=E2=80=99 was synonymous with =E2=
=80=98herd status root=E2=80=99 and
  both would show the status of all registered services.  This is no longer=
 the
  case: =E2=80=98herd status root=E2=80=99 now shows information about the =
=E2=80=98root=E2=80=99 service
  itself, including recently-logged messages.

  ** Support for timed services

  The new =E2=80=98make-timer-constructor=E2=80=99 procedure lets you defin=
e a service that runs
  periodically=E2=80=94e.g., every day at noon, every Sunday at 10PM.  The =
resulting
  service can be started, stopped, and triggered; it has its output logged =
like
  any other service.  It is comparable to the venerable cron and its varian=
ts
  but hopefully much more convenient to use.  See =E2=80=9CTimers=E2=80=9D =
in the manual.

  ** New log rotation service

  The =E2=80=98log-rotation=E2=80=99 service defined in (shepherd service l=
og-rotation) defines
  a simple log rotation service, similar to the venerable rottlog and logro=
tate
  programs, which periodically compresses, moves around, and eventually del=
etes
  old log files.  See =E2=80=9CLog Rotation Service=E2=80=9D in the manual =
for details.

  ** New system log service

  The =E2=80=98system-log=E2=80=99 service is a substitute for good=E2=80=
=99ol =E2=80=98syslogd=E2=80=99: it listens for
  messages written by applications on the /dev/log Unix-domain socket and
  dispatches them to log files according to administrator-provided rules.
  See =E2=80=9CSystem Log=E2=80=9D in the manual.

  ** New timer service

  The venerable =E2=80=98at=E2=80=99 command, to request the delayed execut=
ion of a command,
  also got a replacement in the form of the =E2=80=98timer=E2=80=99 service=
.  See =E2=80=9CTimers=E2=80=9D in
  the manual.

  ** New transient service maker

  The new service called =E2=80=98transient=E2=80=99 lets you run commands =
in the background,
  and it does so by wrapping them in transient services.  It is similar in
  spirit to =E2=80=98systemd-run=E2=80=99.  See =E2=80=9CTransient Service =
Maker=E2=80=9D in the manual.

  ** Linux kexec support

  On GNU/Linux, the =E2=80=98root=E2=80=99 service has a new =E2=80=98kexec=
=E2=80=99 action that can be invoked
  with the =E2=80=98reboot -k=E2=80=99 command; it reboots straight into a =
new kernel previously
  loaded with the =E2=80=98kexec -l IMAGE=E2=80=99 command.  See =E2=80=9CI=
nvoking reboot=E2=80=9D in the
  manual.

  ** =E2=80=98shepherd=E2=80=99 honors =E2=80=98--silent=E2=80=99

  Previously the =E2=80=98--silent=E2=80=99 option of =E2=80=98shepherd=E2=
=80=99 was, well, silently ignored.
  This is no longer the case.

  ** =E2=80=98shepherd=E2=80=99 now logs deprecation warnings

  Using deprecated interfaces leads to warnings that are now logged by shep=
herd
  and visible in its log file.

  ** GOOPS

  The GOOPS programming interface of shepherd, which was deprecated in 0.10=
.x,
  is now gone.  See =E2=80=9CLegacy GOOPS Interface=E2=80=9D for more infor=
mation.

  ** Reproducible source tarball

  The =E2=80=98shepherd-1.0.0.tar.gz=E2=80=99 file distributed at ftp.gnu.o=
rg is now bit-for-bit
  reproducible from the corresponding Git tag.  This was prompted by
  vulnerabilities that propped up in the XZ package in April 2024
  (CVE-2024-3094); code itself borrows from what Janneke Nieuwenhuizen did =
for
  Guix.

  ** Updated requirements: Guile, gzip, zstd

  Guile 2.2 is no longer supported; Guile 3.0.x is required.

  The log rotation service can use the =E2=80=98gzip=E2=80=99 and =E2=80=98=
zstd=E2=80=99 commands.  Use the
  =E2=80=98--with-gzip=E2=80=99 and =E2=80=98--with-zstd=E2=80=99 configure=
 options to specify the file name of
  the commands to use.

  ** Translations

  This version is fully translated in German, Romanian, Swedish, and Ukrani=
an;
  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 [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/cadtAz7CQsRmT2a67UFAmdXGesNHGx1ZG9AZ251
Lm9yZwAKCRAJCxGZPZrrtaFAD/9zUiDWaR8D14oF7wMbC6qKzka/I5HSdtdzFi+e
Z/8Q+FwtPLNg8/glYtG6HI/IMEiR1vPzqT8UiG1U2ioQF2QXFvmme/Btodk2tqSK
n2vEJtwe1RoEXIsOdPq2uJkuBnd9NZh+3A8K9jeLK8Pg1qk0zhKTEc9fo8yHgJ1l
KEHOqDjUr7hKgcW2ic4HaLiPF8c9iewbaw17apSmS/WdMRUndMosnZRDnPKIVw9i
MeLgmkXAE3K4NWu5qUyMaiievnzU5rY+Ty0SdSmahckLAL3Aun78OTQ6HsiqC5zp
1PZkYA3/G4Bcy8j/bJTW2STeu/8r271kmk/HjWikd1J4fhIgeRWodFj9BsWSWR7a
d41QJsi+NwafE5HHMYHpmHaNYTdiHt7S0xhmm9znymG7HwxlWBwrchnzlUKT1XOf
WNXloVREtOZT93XRkGeTlyDigIz69yObpuwSrGY+e/Fi64gvg0s9Sx66cYzuF3X4
ZM2JRs1urBWZ8A70SHM2PjLI789i8wRuksydwP1ZhpZ3Z7Wvj4dErUhP3va+Nubq
Qp3o28+cIQBYTPjsYeEzLytSfug3CAZ0ku1BXQTSAJPS2qSTvXsI0wnk58WxTmE3
34fCWQTk0zJuvk1XBvYHX8e2l5pvfPKmfgBtpbq7LEXNTfjDyWp8909h03W6zfo6
5lma6w==
=Jb0l
-----END PGP SIGNATURE-----
--=-=-=--