Re: Capy: Request for endorsements
Vinnie Falco via Boost <[email protected]>
| Newsgroups | gmane.comp.lib.boost.devel |
|---|---|
| Message-ID | <CA+EzHGfWU2HoSuvobjTSuSropSmiHr0PojFX7-nxefNc_5-SOg@mail.gmail.com> |
On Fri, Feb 20, 2026 at 4:32 AM Amlal El Mahrouss via Boost < [email protected]> wrote: > I also have a question about the following snippet at: > https://github.com/cppalliance/capy/blob/develop/example/asio/use_capy_example.cpp#L118C70-L119C1 > > We can see at line 119: > > ```cpp > capy::run_async(ctx.get_executor())(run_example(client, server)); > ``` > > It's elegant, but maybe we could also benefit from this syntax as well: > > ```cpp > auto& exec{ctx.get_executor()}; > exec.run_async(run_example(client, server)); > ``` > So, if I understand you correctly then you are asking for the Executor concept to have additional members: unspecified run_async( IoRunnable auto&& ); This is problematic for a few reasons explained P4003[1] 1. An Executor is a low-level primitive. It only specifies how a coroutine is resumed. A launch function is something different: a high level construct responsible for creating the environment in which a coroutine runs, and specifying behavior when the coroutine performs its final suspend. run_async falls in the latter category. 2. The one-call syntax you propose suffers from the allocator timing problem described in P4007 Senders and Coroutines [2]. The coroutine frame would be created before the allocator has the chance to propagate. 3. `run_async` is just one example of a launch function: a function which begins a new coroutine chain of execution either from a regular function (such as main) or a coroutine. The set of launch functions is open, as users can (and will) define their own. Here is one such example: https://github.com/cppalliance/corosio/blob/0cb2c0096ca2cf8f7c1f1617cb04c19120dd4f12/include/boost/corosio/tcp_server.hpp#L500 It makes sense to keep the Executor concept as a low-level narrow abstraction, and partition the launch functions into a higher level algorithmic set. Thanks [1] https://wg21.link/p4003 IoAwaitables: A Coroutines-Only Framework [2] https://wg21.link/p4007 Senders and Coroutines P.S. I suppose its pointless asking for the copyright discussion to be moved to a separate thread :) _______________________________________________ Boost mailing list -- [email protected] To unsubscribe send an email to [email protected] https://lists.boost.org/mailman3/lists/boost.lists.boost.org/ Archived at: https://lists.boost.org/archives/list/[email protected]/message/XP6QFNJJHR4WWIDTUF5P6M2LJVOEQQEG/