Hi Ludo, On Tue, Feb 21, 2023 at 5:07 PM Ludovic Courtès <l...@gnu.org> wrote: > > Hello Guix! > > I recently pushed an updated and rebased variant of > ‘wip-service-monitor’ in the Shepherd, previously discussed here: > > https://lists.gnu.org/archive/html/guix-devel/2022-06/msg00350.html > > I’m going to merge it real soon if there are no objections, with the > goal of using it as the basis for 0.10.x and hopefully soonish 1.0.x. > > The main news are: > > • Services can now be in one of 4 states: stopped, starting, started, > and stopping. (Previously it was just started/stopped.) > > • ‘herd status SERVICE’ reports those new states. > > • ‘start’ waits if the service was already starting; ‘stop’ waits if > the service was already being stopped. > > • Services are now started in parallel, to the extent possible. > > Internally, the big change is that, in addition to a “service registry” > actor (a fiber and associated channel where it receives requests), each > service has an associated actor (likewise, a fiber) that handles > service-specific operations such as ‘start’ and ‘stop’. I find it > aesthetically pleasing and fun to work with; incidentally, it should > sound familiar to the goblins among us. :-) > > There’s a couple of shepherd features that I’d like to remove: > “persistency” (sic), and the “unknown” service. These things were added > in the early days of dmd ca. 2003 but they’re totally untested, likely > broken, and probably useless. If you have objections, now’s the time to > let it be known. > > Feedback welcome!
All of these changes sound like welcome ones to me! Love the use of actors for managing services. Feels kinda like Goblins meets Erlang! I hope it proves to be a robust change. - Dave