[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: call-process should not block process filters from running
From: |
Spencer Baugh |
Subject: |
Re: call-process should not block process filters from running |
Date: |
Wed, 28 Jun 2023 08:08:47 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Po Lu <luangruo@yahoo.com> writes:
> Spencer Baugh <sbaugh@janestreet.com> writes:
>
>> When Lisp code calls call-process, then while call-process is running,
>> all Lisp is blocked from running, including process filters and timers
>> created beforehand by other Lisp. This call-process behavior is
>> harmful, but we can fix call-process to not behave this way.
>>
>> This call-process behavior is harmful:
>> Many packages rely on their process filters and timers being able to
>> run:
>> - Packages which communicate over the network (such as ERC)
>> rely on being able to respond to heartbeats and prevent timeouts.
>> - Packages which respond to requests from other programs (such as EXWM)
>> rely on being able to respond to those requests.
>> A simple (shell-command "sleep 60") will cause most such packages to
>> break or behave poorly.
>
> Have you considered that many programs may conversely rely on the fact
> that call-process can not run Lisp through selection converters or
> process filters?
Yes. Those programs can continue to use call-process. Others which
don't rely on this fact can be moved to a different interface which can
run Lisp, to avoid this downside.