We are glad to announce version 1.0.9 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/

• 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.9.tar.gz
    https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.9.tar.gz.sig

  Here are the SHA1 and SHA256 checksums:

    4885c51e6a1a1c81ee165fa0264ddfbbb15aa8b5  shepherd-1.0.9.tar.gz
    e488c585c8418df6e8f476dca81b72910f337c9cd3608fb467de5260004000d6  
shepherd-1.0.9.tar.gz

  Authenticate the code by downloading the corresponding .sig file:

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

  It is bit-for-bit reproducible from a checkout of the ‘v1.0.9’ tag of
  the Git repository.


• Changes since version 1.0.8

  **  ‘system-log’ creates parent directories of log files
     (<https://codeberg.org/shepherd/shepherd/issues/82>)

  If the ‘#:message-destination’ procedure of ‘system-log’ returns a log file
  whose parent directories do not exist, ‘system-log’ will now create them
  instead of merely reporting “No such file or directory” as it tries to open
  the log file.

  ** Fix memory leak in process monitor’s ‘fork/monitor’
     (<https://codeberg.org/shepherd/shepherd/issues/40>)

  The ‘process-monitor’ event loop was recurring from inside a ‘catch’
  expression in the ‘fork/monitor’ case, leaking memory associated with the
  exception handler.  In the case of inetd services, this would cause a
  per-connection leak as new transient service instances were spawned.

  ** Fix bug that lead to service's stop procedure not being called if a 
dependent threw an error
     (<https://codeberg.org/shepherd/shepherd/pulls/89>)

  Stopping of dependents inside of stop-services didn't guard against
  errors coming from stop-service of dependents. This meant that
  if a service X tries to stop its dependent A and A throws an error,
  the stop of X is aborted completely and the shutdown-services logic
  reports that there has been an error when stopping X, instead of
  reporting that A has thrown an error. X's stop procedure is
  never called. This could have undesirable consequences on Guix System,
  such as causing file systems to not be properly unmounted in some cases.

  From now on, every shepherd service's stop procedure should get called
  even if dependents throw an error.

  ** Stopping a timer stops its entire process group
     (<https://codeberg.org/shepherd/shepherd/issues/83>)

  Running ‘herd stop TIMER’ now terminates the entire process group of any
  commands TIMER spawned and that are currently running.  Previously, it would
  only terminate the main process, possibly leaving child processes behind.

  ** ‘exec-command’ no longer leaks /dev/null file descriptor
     (<https://codeberg.org/shepherd/shepherd/issues/19>)

  There used to be a race condition that could lead ‘exec-command’ to leak an
  open file descriptor to /dev/null in child processes.  This is now fixed.

  ** Translations

  This version is fully translated in French, 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.

Attachment: signature.asc
Description: PGP signature

Reply via email to