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 <<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(<<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>>)<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(<<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>>)<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(<<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>>)<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(<<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>>)<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 <<a href=3D"https://codeberg.org/shepherd/shepherd= /issues" rel=3D"noreferrer noreferrer" target=3D"_blank">https://codeberg.o= rg/shepherd/shepherd/issues</a>>.<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--