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

• 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  
shepherd-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 ‘v1.0.3’ tag of
  the Git repository.


• Changes since version 1.0.2

  ** ‘spawn-command’ now honors #:log-file

  The ‘spawn-command’ procedure now accepts a #:log-file argument, just like
  ‘fork+exec-command’.

  ** New ‘--syslog’ option of ‘shepherd’

  This option forces shepherd to write its output to syslog (the /dev/log socket
  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 ‘herd’ would be decoded according to the
  locale encoding of the ‘shepherd’ process, which could be ASCII; now they’re
  always decoded as UTF-8, as intended.

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

  The so-called “service output port”, where internal logging 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 logged,
  for example when running “herd spawn transient -- echo -n aaaaa”.  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’t 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 shutdown
  (with ‘herd stop root’, ‘reboot’, etc.).  This caused troubles on Guix System
  where the ‘user-processes’ service terminates all processes 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 delay,
  which would lead them to skip their deadline (with a message saying “resuming
  from sleep state?”).  Delay tolerance has been increased.

  ** Silence warning about ‘environ’ when using Guile 3.0.10
     (<https://issues.guix.gnu.org/76343>)

  When using Guile 3.0.10, commands such as ‘shepherd --help’ would print an
  erroneous warning about ‘environ’ being called from a multi-threaded context.
  This is now fixed.

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

  For services using ‘fork+exec-command’, there used to be a small window after
  creating the process and before monitoring it during which process termination
  would be mishandled: ‘herd status SERVICE’ would report that 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 “flaky”: they would fail randomly, typically 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 bug-g...@gnu.org.
Join guix-devel@gnu.org for discussions.

Ludovic, on behalf of the Shepherd herd.

Attachment: signature.asc
Description: PGP signature

Reply via email to