Re: PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-04-29 Thread Tanguy LE CARROUR
Hi Josselin, Quoting Josselin Poiret (2022-04-28 14:48:55) > Tanguy LE CARROUR writes: > > > I recently switched from Xorg to Wayland and I'm quite happy with my new > > setup! The only last "little" thing that doesn't work for me is > > screen-sharing using Icecat and/or Chromium!? :-( > > I

Re: PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-04-28 Thread Josselin Poiret
Hello Tanguy, Tanguy LE CARROUR writes: > I recently switched from Xorg to Wayland and I'm quite happy with my new > setup! The only last "little" thing that doesn't work for me is > screen-sharing using Icecat and/or Chromium!? :-( I know that at least for icecat, it needs to dlopen pipewire f

Re: PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-04-28 Thread Tanguy LE CARROUR
Hi Josselin, hi Brendan, hi Guix, Quoting Josselin Poiret (2022-03-29 15:22:35) > Brendan Tildesley writes: > > Which environment variables are you talking about? I'm running pipewire on > > Guix System > > and it seems to work fine. > > Right, I think I conflated too many different things, ba

Re: The Shepherd on Fibers

2022-03-31 Thread Attila Lendvai
> What's the shepherd-for-guix patch ? What does it bring to Shepherd ? https://issues.guix.gnu.org/54216 it basically introduces a shepherd-next package. it's one way to greatly shorten the edit-compile-test cycle of shepherd within a guix system vm. in the current setup, changing the shepherd

Re: The Shepherd on Fibers

2022-03-30 Thread adriano
Il giorno mar, 29/03/2022 alle 15.29 +, Attila Lendvai ha scritto: > > > Which socket file? > > > > > > (In practice ‘exec-command’ would only fail if the program cannot > > > be > > > found.) > > > > Attila Lendvai has encountered the socket file to be deleted > > before, > > this seemed to

Re: The Shepherd on Fibers

2022-03-30 Thread Maxime Devos
Ludovic Courtès schreef op wo 30-03-2022 om 17:14 [+0200]: > > (format #t "Accepted connection on ~0@*~a from ~1@*~a." "foo" > > "bar")) > > Hmm that doesn’t seem to work: > > --8<---cut here---start->8--- > scheme@(guile-user)> ,use(ice-9 format) > scheme

Re: The Shepherd on Fibers

2022-03-30 Thread Ludovic Courtès
Maxime Devos skribis: > (format #t "Accepted connection on ~0@*~a from ~1@*~a." "foo" "bar")) Hmm that doesn’t seem to work: --8<---cut here---start->8--- scheme@(guile-user)> ,use(ice-9 format) scheme@(guile-user)> (format #f "Accepted connection on ~@0*

Re: The Shepherd on Fibers

2022-03-30 Thread Ludovic Courtès
Hi, Attila Lendvai skribis: > my first ever service has non-trivial work to do in the start GEXP, > and unsurprisingly, it has often ended up throwing an exception while > i subled along my learning curve. it's not caught by shepherd right > around the call to the start GEXP, and reaches a handl

Re: The Shepherd on Fibers

2022-03-30 Thread Ludovic Courtès
Philip McGrath skribis: > But, as the above paper says, this means that Chez's `call/cc`, > `dynamic-wind`, etc. are *unsafe* from the perspective of Racket's > control primitives. From the docs for Racket's `ffi/unsafe/vm` library [6]: I think that’s the crux of the problem and widely recognize

Re: The Shepherd on Fibers

2022-03-30 Thread Ludovic Courtès
Hi! Philip McGrath skribis: >> Fibers is used in a single-threaded fashion, which is the main >> constraint for shepherd since it forks. That also means that fibers >> cannot be preempted, so it’s fully cooperative scheduling. >> > > Would it be feasible for shepherd *not* to fork? Sure, but

Re: The Shepherd on Fibers

2022-03-29 Thread Maxime Devos
Ludovic Courtès schreef op di 29-03-2022 om 14:48 [+0200]: > Maxime Devos skribis: > > > To help translators, I would use positional arguments in > > > > + (l10n "Accepted connection on ~a from ~:[~a~;~*local process~].") > > Hmm so how would you write this? Here's an example on how to impleme

Re: The Shepherd on Fibers

2022-03-29 Thread Attila Lendvai
> > Which socket file? > > > > (In practice ‘exec-command’ would only fail if the program cannot be > > found.) > > Attila Lendvai has encountered the socket file to be deleted before, > this seemed to have been the cause and I have seen a few bug reports > (about tor?) that might have had the same

Re: PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-03-29 Thread Josselin Poiret
Hello Brendan, Brendan Tildesley writes: > Which environment variables are you talking about? I'm running pipewire on > Guix System > > and it seems to work fine. > >> Best, Right, I think I conflated too many different things, basically my use-case was making screensharing work on wlroots-base

Re: The Shepherd on Fibers

2022-03-29 Thread Ludovic Courtès
Hi! Ludovic Courtès 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¹, whe

Re: The Shepherd on Fibers

2022-03-29 Thread Ludovic Courtès
Maxime Devos skribis: > Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: > Thoughts? > > From service.scm: > >> + (define (sleep* n) >> +;; In general we want to use (@ (fibers) sleep) to yield to the >> scheduler. >> +;; However, this code might be non-suspendable--e.g., if t

Re: The Shepherd on Fibers

2022-03-29 Thread Maxime Devos
Ludovic Courtès schreef op di 29-03-2022 om 14:50 [+0200]: > Maxime Devos skribis: > > > What if 'exec-command' in 'fork+exec-command' fails?  Is it still the > > case that the exception bubbles up, eventually causing the socket file > > to be deleted? > > Which socket file? > > (In practice ‘e

Re: The Shepherd on Fibers

2022-03-29 Thread Maxime Devos
Ludovic Courtès schreef op di 29-03-2022 om 14:50 [+0200]: > Which socket file? The socket created by 'open-server-socket', used by 'herd stop' and the like. Greetings, Maxime. signature.asc Description: This is a digitally signed message part

Re: The Shepherd on Fibers

2022-03-29 Thread Ludovic Courtès
Maxime Devos skribis: > What if 'exec-command' in 'fork+exec-command' fails? Is it still the > case that the exception bubbles up, eventually causing the socket file > to be deleted? Which socket file? (In practice ‘exec-command’ would only fail if the program cannot be found.) Ludo’.

Re: The Shepherd on Fibers

2022-03-29 Thread Ludovic Courtès
Maxime Devos skribis: > To help translators, I would use positional arguments in > > + (l10n "Accepted connection on ~a from ~:[~a~;~*local process~].") Hmm so how would you write this?

Re: The Shepherd on Fibers

2022-03-29 Thread Ludovic Courtès
Maxime Devos skribis: > Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: >> Fibers is used in a single-threaded fashion, which is the main >> constraint for shepherd since it forks. That also means that fibers >> cannot be preempted, so it’s fully cooperative scheduling. > > When hz!=0

Re: The Shepherd on Fibers

2022-03-29 Thread Ludovic Courtès
Hi! "pelzflorian (Florian Pelz)" skribis: > On Wed, Mar 23, 2022 at 11:36:30PM +0100, Ludovic Courtès wrote: >> Fibers is used in a single-threaded fashion, which is the main >> constraint for shepherd since it forks. That also means that fibers >> cannot be preempted, so it’s fully cooperative

Re: The Shepherd on Fibers

2022-03-29 Thread Philip McGrath
Hi, On 3/29/22 05:36, Maxime Devos wrote: Philip McGrath schreef op ma 28-03-2022 om 20:14 [-0400]: Maybe it would be enough for this case for Fibers to provide variants of `dynamic-wind` and/or `call-with-continuation-barrier` that cooperate with the Fibers implementation. I don't know if th

Re: The Shepherd on Fibers

2022-03-29 Thread Maxime Devos
Zhu Zihao schreef op di 29-03-2022 om 18:13 [+0800]: > IMO the problem is not fork, you can't do anything useful to create > subprocess without fork on *NIX systems. > > fork is allowed to execute in multi-thread environment. It just don't > care about other threads, it's safe and recommended if y

Re: The Shepherd on Fibers

2022-03-29 Thread Zhu Zihao
osal, SRFI-226. In this proposal, call/cc is reimplemented in delimited control operator. > Maybe it would be enough for this case for Fibers to provide variants of > `dynamic-wind` and/or `call-with-continuation-barrier` that cooperate > with the Fibers implementation. I don't know if

Re: The Shepherd on Fibers

2022-03-29 Thread Maxime Devos
Philip McGrath schreef op ma 28-03-2022 om 20:14 [-0400]: > Maybe it would be enough for this case for Fibers to provide variants of > `dynamic-wind` and/or `call-with-continuation-barrier` that cooperate > with the Fibers implementation. I don't know if that would be possible > of not—in additi

Re: The Shepherd on Fibers

2022-03-28 Thread Philip McGrath
On 3/28/22 20:14, Philip McGrath wrote: I'm not sure how useful any of that is, but take it for whatever it's worth. My overall impression is that the Shepherd on Fibers is a big step in the right direction. Congrats on the great work! -Philip P.S.: If you can get access to a co

Re: The Shepherd on Fibers

2022-03-28 Thread Philip McGrath
sc.sch > Maybe it would be enough for this case for Fibers to provide variants of `dynamic-wind` and/or `call-with-continuation-barrier` that cooperate with the Fibers implementation. I don't know if that would be possible of not—in addition to my limited familiarity with Fibers, I hav

Re: PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-03-27 Thread raingloom
On Sun, 27 Mar 2022 22:55:36 +1100 Brendan Tildesley wrote: > On 27/3/22 01:24, Josselin Poiret wrote: > > > Hello Brendan, > > > > Brendan Tildesley writes: > >> I would like to replace pulseaudio with pipewire as the default in > >> %desktop-services, the only hurdle is how to launch the us

Re: PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-03-27 Thread Brendan Tildesley
On 27/3/22 01:24, Josselin Poiret wrote: Hello Brendan, Brendan Tildesley writes: I would like to replace pulseaudio with pipewire as the default in %desktop-services, the only hurdle is how to launch the user daemons in all the different desktop configurations one might use. Other distros us

Re: The Shepherd on Fibers

2022-03-26 Thread Ludovic Courtès
Hi Maxim! Maxim Cournoyer skribis: >> The goal is to make shepherd (the daemon) use Fibers¹ for concurrency. > > Very exciting work! I can't wait to have my 5 min boot reduced (mostly > busy-waiting on the child-hurd VM to start) ;-). Same here! The childhurd service will need some help as it

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: > Thoughts? To avoid accidentally using threads, perhaps Shepherd could do (set! call-with-new-thread (lambda () (error "multi-threading is not supported in Shepherd"))) ? Greetings, Maxime. signature.asc Description: This is a

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
pelzflorian (Florian Pelz) schreef op za 26-03-2022 om 17:52 [+0100]: > Oh yes, I had not tried that.  Thank you Maxime.  Still with unchanged > original shepherd package, I get exactly the same > shepherd-avahi-daemon.go.drv.gz build failure iff I set (shepherd > new-shepherd).  Therefore I ask ho

Re: The Shepherd on Fibers

2022-03-26 Thread pelzflorian (Florian Pelz)
On Sat, Mar 26, 2022 at 07:27:00PM +0800, Zhu Zihao wrote: > > IIUC, After fork and execute the program, shepherd will wait for the pid > file to appear. This is a block operation. > > Shepherd on Fiber make this operation non-blocking (because the pid file > is created by Linux kernel, Shepherd

Re: The Shepherd on Fibers

2022-03-26 Thread pelzflorian (Florian Pelz)
On Sat, Mar 26, 2022 at 12:59:20PM +0100, Maxime Devos wrote: > Grafting is not necessary. See (guix)Shepherd Services: > > >;; Use own Shepherd package. >(essential-services > (modify-services (operating-system-default-essential-services > this-

PipeWire as a PulseAudio replacement (was Re: The Shepherd on Fibers)

2022-03-26 Thread Josselin Poiret
Hello Brendan, Brendan Tildesley writes: > I would like to replace pulseaudio with pipewire as the default in > %desktop-services, the only hurdle is how to launch the user daemons in all > the > different desktop configurations one might use. Other distros use systemd's > socket activation to m

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: Thoughts? From service.scm: > + (define (sleep* n) > +;; In general we want to use (@ (fibers) sleep) to yield to the > scheduler. > +;; However, this code might be non-suspendable--e.g., if the user calls > +;; the 'start'

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: > Thoughts? What if 'exec-command' in 'fork+exec-command' fails? Is it still the case that the exception bubbles up, eventually causing the socket file to be deleted? Greetings, Maxime. signature.asc Description: This is a digitally si

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: > [...] > Thoughts? To help translators, I would use positional arguments in + (l10n "Accepted connection on ~a from ~:[~a~;~*local process~].") Greetings, Maxime. signature.asc Description: This is a digitally signed message part

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
Ludovic Courtès schreef op wo 23-03-2022 om 23:36 [+0100]: > Fibers is used in a single-threaded fashion, which is the main > constraint for shepherd since it forks. That also means that fibers > cannot be preempted, so it’s fully cooperative scheduling. When hz!=0, guile-fibers uses with-interru

Re: The Shepherd on Fibers

2022-03-26 Thread Maxime Devos
pelzflorian (Florian Pelz) schreef op za 26-03-2022 om 12:06 [+0100]: > * Lastly I grafted > > (define-public shepherd >   (package >     (name "shepherd") >     (replacement new-shepherd) >     … Grafting is not necessary. See (guix)Shepherd Services: ;; Use own Shepherd package.

Re: The Shepherd on Fibers

2022-03-26 Thread Zhu Zihao
IIUC, After fork and execute the program, shepherd will wait for the pid file to appear. This is a block operation. Shepherd on Fiber make this operation non-blocking (because the pid file is created by Linux kernel, Shepherd just need to wait for it), every service activation runs on its own fib

Re: The Shepherd on Fibers

2022-03-26 Thread pelzflorian (Florian Pelz)
On Sat, Mar 26, 2022 at 07:09:12PM +0800, Zhu Zihao wrote: > > So shepherd service authors still cannot write blocking code but need > > to yield? > > IMO, service should not block service, if they have something important > to do before running a program, why not fork first and do it in the > chi

Re: The Shepherd on Fibers

2022-03-26 Thread Zhu Zihao
Zhu Zihao writes: > [[PGP Signed Part:Undecided]] >> So shepherd service authors still cannot write blocking code but need >> to yield? > > IMO, service should not block service, if they have something important > to do before running a program, why not fork first and do it in the > child-proces

Re: The Shepherd on Fibers

2022-03-26 Thread Zhu Zihao
> So shepherd service authors still cannot write blocking code but need > to yield? IMO, service should not block service, if they have something important to do before running a program, why not fork first and do it in the child-process (maybe wrap the actual startup program in Guile script)? --

Re: The Shepherd on Fibers

2022-03-26 Thread pelzflorian (Florian Pelz)
Hi Ludo! That you add fibers to Shepherd is great news. On Wed, Mar 23, 2022 at 11:36:30PM +0100, Ludovic Courtès wrote: > Fibers is used in a single-threaded fashion, which is the main > constraint for shepherd since it forks. That also means that fibers > cannot be preempted, so it’s fully coo

Re: The Shepherd on Fibers

2022-03-25 Thread Maxim Cournoyer
Hi Ludo! Ludovic Courtès writes: > Hello Guix! > > 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. Very exciting work! I can't wait to have my

The Shepherd on Fibers

2022-03-24 Thread Nathan Dehnel
Hooray!

The Shepherd on Fibers

2022-03-23 Thread Brendan Tildesley
I think you are doing amazing work! I hope socket activation can be added because it may be helpful for launching the user services for pipewire, but I've never really understood how it actually works. I would like to replace pulseaudio with pipewire as the default in %desktop-services, the only h

The Shepherd on Fibers

2022-03-23 Thread Ludovic Courtès
Hello Guix! 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. Right now, actions in shepherd are all serialized: starting services, waiting for their PID