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! Ludo’.