Skip to content

[2026-03 LWG Motion 35] P3927R2 task_scheduler support for parallel bulk execution#8927

Merged
tkoeppe merged 1 commit into
mainfrom
motions-2026-03-lwg-35
Apr 20, 2026
Merged

[2026-03 LWG Motion 35] P3927R2 task_scheduler support for parallel bulk execution#8927
tkoeppe merged 1 commit into
mainfrom
motions-2026-03-lwg-35

Conversation

@jensmaurer

@jensmaurer jensmaurer commented Apr 7, 2026

Copy link
Copy Markdown
Member

Fixes NB US 238-368 (C++26 CD).

Fixes #8869

Also fixes cplusplus/papers#2600
Also fixes cplusplus/papers#2503
Also fixes cplusplus/nbballot#943

@jensmaurer jensmaurer added this to the post-2026-03 milestone Apr 7, 2026
@jensmaurer jensmaurer force-pushed the motions-2026-03-lwg-35 branch 2 times, most recently from 2065583 to dbbd056 Compare April 7, 2026 12:48

@ericniebler ericniebler left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good. thanks!

Comment thread source/exec.tex
Comment thread source/exec.tex Outdated
@jensmaurer jensmaurer force-pushed the motions-2026-03-lwg-35 branch 2 times, most recently from 445b9de to 301d230 Compare April 10, 2026 09:39
@tkoeppe tkoeppe force-pushed the motions-2026-03-lwg-35 branch from 301d230 to 6e6b097 Compare April 20, 2026 12:30
Comment thread source/exec.tex Outdated
Comment thread source/exec.tex
Comment thread source/exec.tex

@jwakely jwakely left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a stray x in the pull request.

There are two places where the paper says that ts-domain::transform_sender is exposition-only, which are not in the pull request. But if it's exposition-only, why isn't it called transform-sender instead? If its name needs to be transform_sender then it's not exposition only, and the pull request is correct. I don't know.

@tkoeppe tkoeppe force-pushed the motions-2026-03-lwg-35 branch from 6e6b097 to 8a93fc6 Compare April 20, 2026 13:08
Fixes NB US 238-368 (C++26 CD).

Editorial note:
* [exec.task.scheduler] Change "Initialize sch_ with" to "Initializes
  sch_ with:", and put the (long) expression in a code block.
@tkoeppe tkoeppe force-pushed the motions-2026-03-lwg-35 branch from 8a93fc6 to 4956880 Compare April 20, 2026 13:47
@tkoeppe tkoeppe requested a review from jwakely April 20, 2026 13:47
@tkoeppe

tkoeppe commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

There are two places where the paper says that ts-domain::transform_sender is exposition-only, which are not in the pull request. But if it's exposition-only, why isn't it called transform-sender instead? If its name needs to be transform_sender then it's not exposition only, and the pull request is correct. I don't know.

Since ts-domain itself is an exposition-only class, I don't think it's observable whether its members are also exposition-only, and we don't need to also annotate members. E.g. the members of backend-for (added in the same paper) are also not annotated. I think that's fine, I don't see what else it could mean.

@tkoeppe tkoeppe merged commit 9beabb4 into main Apr 20, 2026
3 of 4 checks passed
@jensmaurer

jensmaurer commented Apr 20, 2026

Copy link
Copy Markdown
Member Author

Since ts-domain itself is an exposition-only class, I don't think it's observable whether its members are also exposition-only

I disagree here. get_completion_domain is specified to return ts-domain. Thus, even if this type doesn't have a known name, you can query for the presence of members using e.g. concepts or SFINAE. And you can trivially get a name for that type with using T = decltype(whatever);

@tkoeppe

tkoeppe commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

Hm, good point. We should look at the paper again, then, since indeed these members aren't marked up as expos-only, and in backend-for none of the members are marked expos-only. (Weirdly enough, the constructor of course needs to spell the declaration in expos-only italics, though it is (by your argument) not actually expos-only -- so the choice of font is in fact only an inadequate indicator in general.

@tkoeppe

tkoeppe commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

@ericniebler Could you please advice which parts of the paper are exposition-only?

@jwakely

jwakely commented Apr 21, 2026

Copy link
Copy Markdown
Member

A transform_sender member function on a domain is used by std::execution::transform_sender if it exists, so its presence or absence has normative meaning. I don't think it should have been exposition only in the paper.

@jensmaurer

Copy link
Copy Markdown
Member Author

I think omitting the "exposition-only" marking after "transform_sender" is good in the pull request, the paper is bad (in that regard), and life is overall splendid?

@ericniebler

ericniebler commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

the user has no way of getting their hands on a backend-for object. that is why it is exposition only, and i was uncertain whether to annotate its members as such.

in the case of ts-domain, the type's name doesn't matter since users will not be uttering it. that is why it is exposition-only. but its transform_sender member is not marked exposition-only. it must be present. whoops, mea culpa

@jwakely

jwakely commented Apr 21, 2026

Copy link
Copy Markdown
Member

but its transform_sender member is not marked exposition-only. it must be present.

It was marked expos-only in the paper, that's why we're asking.

@ericniebler

Copy link
Copy Markdown
Contributor

It was marked expos-only in the paper, that's why we're asking.

right, i just noticed that. i agree that was an error.

@tkoeppe

tkoeppe commented Apr 21, 2026

Copy link
Copy Markdown
Contributor

Thanks, @ericniebler!

@jensmaurer jensmaurer deleted the motions-2026-03-lwg-35 branch June 13, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

4 participants