We are glad to announce version 1.0.4 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.4.tar.gz https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.4.tar.gz.sig Here are the SHA1 and SHA256 checksums: 3572630eaa1401c2ec4df697d2a3c9fef79015e5 shepherd-1.0.4.tar.gz 13306a6b56dfe252464e84a23c23a7234338cc752c565e1b865f7cbf8a03f0cf shepherd-1.0.4.tar.gz Authenticate the code by downloading the corresponding .sig file: gpg --verify shepherd-1.0.4.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.4.tar.gz.sig It is bit-for-bit reproducible from a checkout of the ‘v1.0.4’ tag of the Git repository. • Changes since version 1.0.3 ** ‘herd status’ displays the command of socket-activated and inetd services When a systemd-style or inetd-style service is started and not yet spawned, ‘herd status SERVICE’ now displays its command in addition to the endpoint(s) it is listening on. ** ‘restart’ action passes extra arguments to the service’s constructor (<https://issues.guix.gnu.org/77109>) Until now, extra arguments passed to the ‘restart’ action would be ignored. Thus, “herd restart SERVICE a b c” would restart SERVICE but silently ignore the arguments “a b c”. The behavior is now to pass those extra arguments to the ‘start’ method of the service. Incidentally, this also means that mistakenly running “herd restart SERVICE1 SERVICE2” now results in an error because SERVICE2 is interpreted as an argument to SERVICE1 and not as a second service to restart. ** Starting a one-shot service concurrently no longer reports failure (<https://issues.guix.gnu.org/77274>) It used to be that, when trying to start a one-shot service that was already starting, ‘herd start’ would wrongfully report failure to start. This is no longer the case. ** Fix potential deadlock with built-in service logger (<https://issues.guix.gnu.org/77373>) The built-in service logger (the one used when constructors are not given a #:log-file argument) could deadlock under some conditions when the service it was logging has just stopped. The problem was known to manifest in some cases on Guix System upon ‘herd stop nginx’. This is now fixed. ** ‘log-rotation’ does not compressed already-compressed log files Programs such as nginx can compress log files as they write them. The ‘log-rotation’ service no longer re-compresses such log files. ** Timers correctly handle winter-to-summer DST change (<https://issues.guix.gnu.org/77401>) This is a followup to an incomplete fix in <https://issues.guix.gnu.org/75622>: during the summer-to-winter daylight saving time (DST) change, for example from CET (UTC+1) to CEST (UTC+2) on 30 March 2025 in Western Europe, the interval between consecutive calendar events would be incorrectly calculated when the event would fall between 02:00am and 03:00am, leading the timer to trigger many times in a row, unless it had #:wait-for-termination? #true. This is now fixed; next year will be better! ** System log no longer crashes on some Unicode input (<https://issues.guix.gnu.org/77283>) Due to a bug in Guile’s (ice-9 regex) module, the ‘system-log’ service could crash on certain inputs containing non-ASCII Unicode characters, when ‘shepherd’ is running in a non-Unicode capable locale (which is usually the case for PID 1). This is now fixed by sidestepping the regexp bug entirely. ** ‘make-systemd-constructor’ no longer passes O_NONBLOCK sockets (<https://issues.guix.gnu.org/77610>) The ‘make-systemd-constructor’ procedure used to pass sockets marked as non-blocking (O_NONBLOCK) to the process it spawns, except when using #:lazy-start? #f. It now systematically passes blocking sockets. This bug would manifest on GNU/Hurd where accept(2) in this child process would return EAGAIN, which some daemons did not correctly handle. ** ‘system*’ and ‘system’ replacements honor current directory (<https://issues.guix.gnu.org/77707>) The ‘system*’ and ‘system’ replacements in the ‘shepherd’ process now run the given command in the current directory rather than under (default-service-directory). ** Refuse to start when another shepherd is listening on the socket (<https://issues.guix.gnu.org/76998>) Starting an additional ‘shepherd’ as a user used to lead it to take control of the socket (by default /run/user/UID/shepherd/socket) even though another instance was already running and listening to that socket. Since that behavior is undesirable, ‘shepherd’ now refuses to start in this situation. ** Fixed a couple of test suite failures on the Hurd (<https://issues.guix.gnu.org/77634>) A couple of tests that used to fail on GNU/Hurd (i586-gnu) have been fixed. ** Translations This version is fully translated in German, Romanian, Swedish, and Ukrainian; 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 bug-g...@gnu.org. Join guix-de...@gnu.org for discussions. Many thanks to everyone who reported bugs or contributed patches! Ludovic, on behalf of the Shepherd herd.
signature.asc
Description: PGP signature