Hi! Ludovic Courtès <l...@gnu.org> skribis:
> I have pushed a ‘wip-fibers’ branch of the Shepherd: > > https://git.savannah.gnu.org/cgit/shepherd.git/log/?h=wip-fibers > > The goal is to make shepherd (the daemon) use Fibers¹ for concurrency. The latest news are: 1. Support for inetd-style services¹, where shepherd listens and accepts client connections, starts the daemon and hands it the connection socket—e.g., ‘sshd -i’. Each daemon process is handled as a “transient service”, a new type of service that is automatically unregistered when it’s done. You can see those when running ‘herd status’; in the OpenSSH example, you’d see ‘sshd-1’, ‘sshd-2’, etc. corresponding to individual SSH client connections. 2. Support for systemd-style “socket activation”², where shepherd listens, spawns the daemon when the first request arrives, and hands it the *listening* socket. From the user viewpoint, this one is similar to the existing ‘make-forkexec-constructor’ type of service. The main difference is that its “running value” as shown by ‘herd status SERVICE’ is initially a socket and then becomes a PID. My plan is to merge ‘wip-fibers’ in ‘master’, publish a release candidate, publish a ‘wip-’ branch of Guix that we can use for testing, and hopefully release the Shepherd 0.9.0 within a week or two. Ludo’. ¹ https://www.gnu.org/software/inetutils/manual/html_node/inetd-invocation.html ² https://www.freedesktop.org/software/systemd/man/daemon.html#Socket-Based%20Activation