Re: GNU Shepherd 1.0.7 released

Nala Ginrut <[email protected]> Thu, 4 Sep 2025 09:33:21 +0900
Newsgroups gmane.lisp.guile.sources,gmane.comp.gnu.guix.devel,gmane.lisp.guile.user
Message-ID <CAPjoZoeMR6JN=o2QU0wkvw1rgZVcvMNojPhy8cCYUbo3JYNNsg@mail.gmail.com>
--00000000000005fc59063deedf1d
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Congrats!

On Thu, Sep 4, 2025, 02:03 Ludovic Court=C3=A8s <[email protected]> wrote:

> We are glad to announce version 1.0.7 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-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=
 manage
>   per-user daemons=E2=80=94e.g., gpg-agent, tor, privoxy.  It supports se=
veral
>   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.7.tar.gz
>     https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.7.tar.gz.sig
>
>   Here are the SHA1 and SHA256 checksums:
>
>     a892febba32995e55443698e13af8f38f1f8a938  shepherd-1.0.7.tar.gz
>     325a9b7581ee83a15115dfbfbcc247c9eb510f752549a23f3ae912a8ec727597
> shepherd-1.0.7.tar.gz
>
>   Authenticate the code by downloading the corresponding .sig file:
>
>     gpg --verify shepherd-1.0.7.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.7.tar.gz.sig
>
>   It is bit-for-bit reproducible from a checkout of the =E2=80=98v1.0.7=
=E2=80=99 tag of
>   the Git repository.
>
>
> =E2=80=A2 Changes since version 1.0.6
>
>   ** New #:input-port parameter for =E2=80=98make-forkexec-constructor=E2=
=80=99
>
>   This allows users to specify what standard input to use for the new
> process
>   instead of the default /dev/null.  This is similar to the
> =E2=80=98StandardInput=3D=E2=80=99
>   directive in systemd unit files.
>
>   ** =E2=80=98make-forkexec-constructor=E2=80=99 terminates process when =
log is not created
>      (<https://codeberg.org/shepherd/shepherd/issues/25>)
>
>   =E2=80=98make-forkexec-constructor=E2=80=99 would mark the service as s=
topped when its
>   #:log-file could not be created, but the corresponding process would ke=
ep
>   running.  This is now fixed: the process is terminated when its log fil=
e
> could
>   not be created.
>
>   ** Service being replaced does not leak control fiber upon respawn
>      (<https://codeberg.org/shepherd/shepherd/issues/28>)
>
>   When a service with a previously-registered replacement was respawned, =
it
>   would previously leave behind it a controlling fiber that would no
> longer be
>   used.  This would constitute a (small) memory leak, which could be
> noticeable
>   on systems with long uptimes.
>
>   ** Improve error reporting for wrong-type arguments
>      (<https://codeberg.org/shepherd/shepherd/issues/30>)
>
>   It is not uncommon to mistakenly pass arguments of the wrong type to
> public
>   procedures such as =E2=80=98make-forkexec-constructor=E2=80=99.  They a=
re now more nicely
>   reported, both in the =E2=80=98shepherd=E2=80=99 log and on the output =
of the =E2=80=98herd=E2=80=99
> command
>   when applicable.
>
>   ** Avoid Bash-specific idiom in =E2=80=98./configure=E2=80=99 and in te=
sts
>      (<https://codeberg.org/shepherd/shepherd/issues/31>)
>
>   Use of =E2=80=98type -P=E2=80=99, which shells such as Dash do not supp=
ort, has been
> replaced
>   by the POSIXy =E2=80=98command -v=E2=80=99 in ./configure and in the te=
st suite.
>
>   ** Translations
>
>   This version is fully translated in French, German, Romanian, Slovak,
> 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.
>

--00000000000005fc59063deedf1d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">Congrats!</div><br><div class=3D"gmail_quote gmail_quote_=
container"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Sep 4, 2025, 02:03=
 Ludovic Court=C3=A8s &lt;<a href=3D"mailto:[email protected]">[email protected]</a>&=
gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0=
 .8ex;border-left:1px #ccc solid;padding-left:1ex">We are glad to announce =
version 1.0.7 of the Shepherd, the next<br>
bug-fix release in the 1.0.x series.<br>
<br>
Check out the web site to learn more about the Shepherd 1.0.x series:<br>
<br>
=C2=A0 <a href=3D"https://gnu.org/software/shepherd/news/2024/12/the-shephe=
rd-1.0.0-released/" rel=3D"noreferrer noreferrer" target=3D"_blank">https:/=
/gnu.org/software/shepherd/news/2024/12/the-shepherd-1.0.0-released/</a><br=
>
<br>
=E2=80=A2 About<br>
<br>
=C2=A0 The Shepherd is a service manager written in Guile that looks after<=
br>
=C2=A0 the herd of daemons running on the system.=C2=A0 It can be used as a=
n<br>
=C2=A0 =E2=80=9Cinit=E2=80=9D system (PID 1) and also by unprivileged users=
 to manage<br>
=C2=A0 per-user daemons=E2=80=94e.g., gpg-agent, tor, privoxy.=C2=A0 It sup=
ports several<br>
=C2=A0 daemon startup mechanisms, including inetd, systemd-style socket<br>
=C2=A0 activation, and timers.=C2=A0 The Shepherd is configured in Guile Sc=
heme<br>
=C2=A0 and can be extended in the same language.=C2=A0 It builds on a simpl=
e<br>
=C2=A0 memory-safe and callback-free programming model.<br>
<br>
=C2=A0 The Shepherd is developed jointly with the Guix project; it is used =
as<br>
=C2=A0 the init system of Guix System and service manager of Guix Home.<br>
<br>
=C2=A0 <a href=3D"https://www.gnu.org/software/shepherd/" rel=3D"noreferrer=
 noreferrer" target=3D"_blank">https://www.gnu.org/software/shepherd/</a><b=
r>
<br>
=E2=80=A2 Download<br>
<br>
=C2=A0 Here are the compressed sources and a GPG detached signature:<br>
=C2=A0 =C2=A0 <a href=3D"https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.7.ta=
r.gz" rel=3D"noreferrer noreferrer" target=3D"_blank">https://ftp.gnu.org/g=
nu/shepherd/shepherd-1.0.7.tar.gz</a><br>
=C2=A0 =C2=A0 <a href=3D"https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.7.ta=
r.gz.sig" rel=3D"noreferrer noreferrer" target=3D"_blank">https://ftp.gnu.o=
rg/gnu/shepherd/shepherd-1.0.7.tar.gz.sig</a><br>
<br>
=C2=A0 Here are the SHA1 and SHA256 checksums:<br>
<br>
=C2=A0 =C2=A0 a892febba32995e55443698e13af8f38f1f8a938=C2=A0 shepherd-1.0.7=
.tar.gz<br>
=C2=A0 =C2=A0 325a9b7581ee83a15115dfbfbcc247c9eb510f752549a23f3ae912a8ec727=
597=C2=A0 shepherd-1.0.7.tar.gz<br>
<br>
=C2=A0 Authenticate the code by downloading the corresponding .sig file:<br=
>
<br>
=C2=A0 =C2=A0 gpg --verify shepherd-1.0.7.tar.gz.sig<br>
<br>
=C2=A0 The signing key can be retrieved with:<br>
<br>
=C2=A0 =C2=A0 gpg --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5<br>
<br>
=C2=A0 As a last resort to find the key, you can try the official GNU<br>
=C2=A0 keyring:<br>
<br>
=C2=A0 =C2=A0 wget -q <a href=3D"https://ftp.gnu.org/gnu/gnu-keyring.gpg" r=
el=3D"noreferrer noreferrer" target=3D"_blank">https://ftp.gnu.org/gnu/gnu-=
keyring.gpg</a><br>
=C2=A0 =C2=A0 gpg --keyring gnu-keyring.gpg --verify shepherd-1.0.7.tar.gz.=
sig<br>
<br>
=C2=A0 It is bit-for-bit reproducible from a checkout of the =E2=80=98v1.0.=
7=E2=80=99 tag of<br>
=C2=A0 the Git repository.<br>
<br>
<br>
=E2=80=A2 Changes since version 1.0.6<br>
<br>
=C2=A0 ** New #:input-port parameter for =E2=80=98make-forkexec-constructor=
=E2=80=99<br>
<br>
=C2=A0 This allows users to specify what standard input to use for the new =
process<br>
=C2=A0 instead of the default /dev/null.=C2=A0 This is similar to the =E2=
=80=98StandardInput=3D=E2=80=99<br>
=C2=A0 directive in systemd unit files.<br>
<br>
=C2=A0 ** =E2=80=98make-forkexec-constructor=E2=80=99 terminates process wh=
en log is not created<br>
=C2=A0 =C2=A0 =C2=A0(&lt;<a href=3D"https://codeberg.org/shepherd/shepherd/=
issues/25" rel=3D"noreferrer noreferrer" target=3D"_blank">https://codeberg=
.org/shepherd/shepherd/issues/25</a>&gt;)<br>
<br>
=C2=A0 =E2=80=98make-forkexec-constructor=E2=80=99 would mark the service a=
s stopped when its<br>
=C2=A0 #:log-file could not be created, but the corresponding process would=
 keep<br>
=C2=A0 running.=C2=A0 This is now fixed: the process is terminated when its=
 log file could<br>
=C2=A0 not be created.<br>
<br>
=C2=A0 ** Service being replaced does not leak control fiber upon respawn<b=
r>
=C2=A0 =C2=A0 =C2=A0(&lt;<a href=3D"https://codeberg.org/shepherd/shepherd/=
issues/28" rel=3D"noreferrer noreferrer" target=3D"_blank">https://codeberg=
.org/shepherd/shepherd/issues/28</a>&gt;)<br>
<br>
=C2=A0 When a service with a previously-registered replacement was respawne=
d, it<br>
=C2=A0 would previously leave behind it a controlling fiber that would no l=
onger be<br>
=C2=A0 used.=C2=A0 This would constitute a (small) memory leak, which could=
 be noticeable<br>
=C2=A0 on systems with long uptimes.<br>
<br>
=C2=A0 ** Improve error reporting for wrong-type arguments<br>
=C2=A0 =C2=A0 =C2=A0(&lt;<a href=3D"https://codeberg.org/shepherd/shepherd/=
issues/30" rel=3D"noreferrer noreferrer" target=3D"_blank">https://codeberg=
.org/shepherd/shepherd/issues/30</a>&gt;)<br>
<br>
=C2=A0 It is not uncommon to mistakenly pass arguments of the wrong type to=
 public<br>
=C2=A0 procedures such as =E2=80=98make-forkexec-constructor=E2=80=99.=C2=
=A0 They are now more nicely<br>
=C2=A0 reported, both in the =E2=80=98shepherd=E2=80=99 log and on the outp=
ut of the =E2=80=98herd=E2=80=99 command<br>
=C2=A0 when applicable.<br>
<br>
=C2=A0 ** Avoid Bash-specific idiom in =E2=80=98./configure=E2=80=99 and in=
 tests<br>
=C2=A0 =C2=A0 =C2=A0(&lt;<a href=3D"https://codeberg.org/shepherd/shepherd/=
issues/31" rel=3D"noreferrer noreferrer" target=3D"_blank">https://codeberg=
.org/shepherd/shepherd/issues/31</a>&gt;)<br>
<br>
=C2=A0 Use of =E2=80=98type -P=E2=80=99, which shells such as Dash do not s=
upport, has been replaced<br>
=C2=A0 by the POSIXy =E2=80=98command -v=E2=80=99 in ./configure and in the=
 test suite.<br>
<br>
=C2=A0 ** Translations<br>
<br>
=C2=A0 This version is fully translated in French, German, Romanian, Slovak=
, Swedish,<br>
=C2=A0 and Ukrainian; it is partially translated in several other languages=
.=C2=A0 Check<br>
=C2=A0 out <a href=3D"https://translationproject.org/domain/shepherd.html" =
rel=3D"noreferrer noreferrer" target=3D"_blank">https://translationproject.=
org/domain/shepherd.html</a> to help translate it<br>
=C2=A0 into your language!<br>
<br>
<br>
<br>
Please report bugs to &lt;<a href=3D"https://codeberg.org/shepherd/shepherd=
/issues" rel=3D"noreferrer noreferrer" target=3D"_blank">https://codeberg.o=
rg/shepherd/shepherd/issues</a>&gt;.<br>
Join <a href=3D"mailto:[email protected]" target=3D"_blank" rel=3D"norefer=
rer">[email protected]</a> for discussions.<br>
<br>
Many thanks to everyone who reported bugs or contributed patches!<br>
<br>
Ludovic, on behalf of the Shepherd herd.<br>
</blockquote></div>

--00000000000005fc59063deedf1d--