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/

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


• Changes since version 1.0.7

  ** The Shepherd has a new home!

  The Shepherd’s web site is now available at https://shepherding.services.

  ** 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 ‘shepherd’ startup time by using ‘close_range’
     (<https://codeberg.org/shepherd/shepherd/issues/41>)

  The startup time of ‘shepherd’ 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 ‘halt’ and ‘poweroff’ on non-GNU systems
     (<https://codeberg.org/shepherd/shepherd/pulls/49>)

  The ‘configure’ script now guesses more appropriate values 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 “logger”—the 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 ‘shepherd’ 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 ‘make-systemd-constructor’ with multiple
  endpoints, internal startup code for the service could sometimes fire several
  times, leading to a harmless backtrace with ‘fcntl’ reporting:
  “Wrong type (expecting exact integer): #<closed: file …>”.  This is now fixed.

  ** ‘system-log’ service ignores empty lines read from the kernel log
     (<https://codeberg.org/shepherd/shepherd/issues/46>)

  The ‘system-log’ service no longer logs empty lines read from the kernel log,
  as can be seen with /dev/klog on the Hurd.

  **  ‘system-log’ service correctly identifies messages form the kernel log
     (<https://codeberg.org/shepherd/shepherd/issues/46>)

  When the ‘system-log’ service encounters a message without 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 messages
  from /dev/klog on the Hurd.

  ** ‘--socket’ option of shepherd no longer accepts ‘-’

  While ‘shepherd’ was documented as being able to read commands from standard
  input when started with ‘--socket=-’, this (dubious) feature 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 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