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/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.