Skip to content

update the release notes for R10 #261

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 28, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 50 additions & 13 deletions execution.bs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
Title: `std::execution`
H1: <code>std::execution</code>
Shortname: P2300
Revision: 9
Revision: 10
Status: P
Group: WG21
Date: 2024-06-28
Audience: SG1, LEWG
Editor: Michał Dominiak, griwes@griwes.info
Editor: Georgy Evtushenko, evtushenko.georgy@gmail.com
Expand Down Expand Up @@ -1503,9 +1504,22 @@ The changes since R9 are as follows:

<b>Fixes:</b>

* Fixed `connect` and `get_completion_signatures` to use `transform_sender`,
as "[[P2999R3]]" proposed (but failed) to do. See "[[P3303R1]]" for details.

* `ensure_started`, `start_detached`, `execute`, and `execute_may_block_caller`
are removed from the proposal. They are to be replaced with safer and more
structured APIs by [@P3149R3].
structured APIs by "[[P3149R3]]". See "[[P3187R1]]" for details.

* Fixed a logic error in the specification of `split` that could have caused a
receiver to be completed twice in some cases.

* Fixed `stopped_as_optional` to handle the case where the child sender
completes with more than one value, in which case the `stopped_as_optional`
sender completes with an `optional` of a `tuple` of the values.

* The `queryable`, `stoppable_source`, and `stoppable_callback_for` concepts
have been made exposition-only.

<b>Enhancements:</b>

Expand All @@ -1515,18 +1529,35 @@ The changes since R9 are as follows:
* The `get_delegatee_scheduler` query has been renamed to
`get_delegation_scheduler`.

* The `read` environment has been renamed to `read_env`.

* The nullary forms of the queries which returned instances of the `read_env`
sender have been removed. That is, `get_scheduler()` is no longer another way
to spell `read_env(get_scheduler)`. Same for the other queries.

* A feature test macro has been added: `__cpp_lib_senders`.

* `transfer` has been renamed to `continues_on`. `on` has been renamed to
`starts_on`. A new `on` algorithm has been added that is a combination of
`starts_on` and `continues_on` for performing work on a different context
and automatically transitioning back to the starting one. See "[[P3175R3]]"
for details.

* An exposition-only <i>`simple-allocator`</i> concept is added to the
Library introduction ([library]), and the specification of the
`get_allocator` query is expressed in terms of it.

* An exposition-only <i>`write-env`</i> sender adaptor has been added for
use in the implementation of the new `on` algorithm.

## R9 ## {#r9}

The changes since R8 are as follows:

<b>Fixes:</b>

* The `tag_invoke` mechanism has been replaced with member functions
for customizations as per \[P2855](https://wg21.link/p2855).
for customizations as per "[[P2855R1]]".

* Per guidance from LWG and LEWG, `receiver_adaptor` has been removed.

Expand Down Expand Up @@ -4275,7 +4306,6 @@ namespace std {
template&lt;class CallbackFn>
class inplace_stop_callback;

<span class="ed-note">Do we need the `::template` here?</span>
template&lt;class T, class CallbackFn>
using stop_callback_for_t = T::template callback_type&lt;CallbackFn>;</div>
}
Expand Down Expand Up @@ -6932,13 +6962,6 @@ namespace std::execution {

- Otherwise, `tag_of_t<Sndr>` is ill-formed.

<span class="ed-note">
There is no way in standard C++ to determine whether the above declaration
is well-formed without causing a hard error, so this presumes compiler
magic. However, the author anticipates the adoption of [@P2141R1], which
makes it possible to implement this purely in the library. P2141 has already
been approved by EWG for C++26.</span>

6. Let <i>`sender-for`</i> be an exposition-only concept defined as follows:

<pre highlight="c++">
Expand Down Expand Up @@ -7856,10 +7879,10 @@ namespace std::execution {
* `decltype((sch))` does not satisfy `scheduler`, or

* `decltype((sndr))` does not satisfy `sender` and `sndr` is not
a pipeable sender adaptor closure object ([exec.adapt.objects]), or
a pipeable sender adaptor closure object ([exec.adapt.objects]), or

* `decltype((sndr))` satisfies `sender` and `sndr` is also
a pipeable sender adaptor closure object.
a pipeable sender adaptor closure object.

3. Otherwise, if `decltype((sndr))` satisfies `sender`, the expression `on(sch,
sndr)` is expression-equivalent to:
Expand Down Expand Up @@ -9955,6 +9978,20 @@ void finish();
"pages": 2352,
"publisher": "The Open Journal",
"journal": "Journal of Open Source Software"
},

"P3175R3": {
"authors": ["Eric Niebler"],
"href": "https://wg21.link/P3175R3",
"title": "Reconsidering the std::execution::on algorithm",
"date": "2024-06-24"
},

"P3303R1": {
"authors": ["Eric Niebler"],
"href": "https://wg21.link/P3303R1",
"title": "Fixing Lazy Sender Algorithm Customization",
"date": "2024-06-24"
}
}
</pre>