GNU Shepherd 1.0.2 released
Ludovic Courtès <[email protected]> Wed, 12 Feb 2025 11:08:10 +0100
| Newsgroups | gmane.comp.gnu.guix.devel,gmane.lisp.guile.sources,gmane.lisp.guile.user |
|---|---|
| Message-ID | <[email protected]> |
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
We are glad to announce version 1.0.2 of the Shepherd, the second
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-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 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.2.tar.gz
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.2.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
2af0ab3c090ae39c7a21e2b1aa550938b8299d64 shepherd-1.0.2.tar.gz
df4bac04b4b0476fa8f9ed138292ac2cc54b4304b5eefd859ed4892d4f9924bf sheph=
erd-1.0.2.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-1.0.2.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.2.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.2=E2=
=80=99 tag of
the Git repository.
=E2=80=A2 Changes since version 1.0.1
** =E2=80=98daemonize=E2=80=99 action preserves replacement bindings for =
=E2=80=98sleep=E2=80=99 etc.
(<https://issues.guix.gnu.org/75460>)
The shepherd process replaces bindings for =E2=80=98sleep=E2=80=99, =E2=
=80=98system*=E2=80=99, =E2=80=98system=E2=80=99, and
other core Guile procedures with cooperative variants thereof=E2=80=94for=
instance, it
replaces =E2=80=98sleep=E2=80=99 with Fibers=E2=80=99 own =E2=80=98sleep=
=E2=80=99 procedure, which does not block.
Previously, the =E2=80=98daemonize=E2=80=99 action would remove those bin=
ding replacements,
which could lead to blocking in shepherd, with symptoms such as =E2=80=98=
herd status=E2=80=99
not responding. This is now fixed.
** Gracefully handle failure to create a service=E2=80=99s log file
(<https://issues.guix.gnu.org/76130>)
If the file passed as #:log-file to =E2=80=98make-forkexec-constructor=E2=
=80=99 & co. could
not be created, =E2=80=98herd status=E2=80=99 and similar commands would =
hang. This is now
fixed in two ways: by attempting to create the parent directory of the log
file if it does not exist, and by reporting the failure and keeping the
service =E2=80=98stopped=E2=80=99 in other cases.
** Timers honor daylight saving time (DST) changes
(<https://issues.guix.gnu.org/75622>)
Previously, timers would always sleep a fixed amount of time between two
consecutive calendar events=E2=80=94e.g., 24h between two occurrences of =
a daily
event=E2=80=94regardless of whether both events occur in the same timezon=
e or DST
setting. Timers now correctly honor DST changes=E2=80=94e.g., sleeping f=
or 25h
between two daily events if the first one occurs on CEST (Central European
Summer Time, or UTC+2) and the second one occurs on CET (Central European
Time, or UTC+1).
** =E2=80=98cron-string->calendar-event=E2=80=99 can now interpret things=
like =E2=80=9C*/2=E2=80=9D
(<https://issues.guix.gnu.org/75843>)
Until now, =E2=80=98cron-string->calendar-event=E2=80=99 would fail to in=
terpret
specifications like "0 */2 * * *" (meaning: every two hours). This is now
fixed.
** =E2=80=98cron-string->calendar-event=E2=80=99 properly interprets star=
s for hours
(<https://issues.guix.gnu.org/75836>)
Previously, using a star for the hours in a cron specification such as
"* * * * *" (meaning: every minute) would lead =E2=80=98cron-string->cale=
ndar-event=E2=80=99
to erroneously report an error. This is now fixed.
** =E2=80=98timer-service=E2=80=99 and =E2=80=98transient-service=E2=80=
=99 now honor #:requirement
Previously they would both ignore it, returning a service that depends on
nothing but the root service (which is probably acceptable most of the ti=
me).
** =E2=80=98default-message-destination-procedure=E2=80=99 is now exported
That procedure of (shepherd service system-log) was documented but not
exported. This is now fixed.
** Translations
This version is fully translated in German, Romanian, Slovak, Swedish, and
Ukranian; 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 [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/cadtAz7CQsRmT2a67UFAmescwoNHGx1ZG9AZ251
Lm9yZwAKCRAJCxGZPZrrtYpjEACIu9BkajghrGwAVjTYGvu7TgqVi2YCD8rlcSq5
Z7BpbK2a1XpuDoYQvHWto42QYh/jzYU3zHcB59yj2VG3YWtb8FUNF09gb85sewn7
CAsIu3//nKmVn3pI1lr15pXJRvmfMvyT+I9sdag8D3BAFwaFGbctdW+/kdFvnvi7
JNwybspjuGDC+BmAySMU6oWEEm83RnGh3GG+WKLBuSTSRr9cXrmklSeWR73asyEH
KKhUdMzmb+39/AmrsJ5lY6Ig9e9EPi/Fb77AMCdmjqTZqHerS4oKdJCQhsbYj5+s
xTTa2o+fa2KFn4qWukGErMQItZ9FizxrQA4DpNAbMMQ3ew/SUZ7L2zt0j13ASLkC
w8sbGmun0w7H4A+KjH69ZuUTtzC7Z9BVCAx07kG2m1EQ6h0amDbCUEPamrb7fgSp
EU/hG+hdi08WnRs/r9evEbYTruVCcVaO53ghpBtAJghL+iSb6hD6PSYPgSLzclvJ
EwnhI4RF1SNTOYLaoOTXKMBZAuML5t9lFQlhey+t+dkTRUNTy3yL/pT8tkCGjrvx
JsaGDfeFJ5JJ31cgbmv0pXFvGSu3WpYVnSQmGJryFtQeMA3AoKjEILcUwRpsUKC5
mh/aqmgFLExPFWEpfBbsHnqSnPuGT9iT2w9fif6l0pJJ8/U0dD8Ephl2nhG3opgB
//XdvA==
=hS4y
-----END PGP SIGNATURE-----
--=-=-=--