@@ -17,6 +17,10 @@ the respective issue):
1717- fix: ` initial_suspend() -> suspend_always ` and constraint start
1818- commment: rephrase to clarify it is resumed later
1919
20+ => say it always suspend (steal wording from suspend_always) but don't nail down suspend_always + change op_state.start(): calls handle.resume() on an execution agent associated with SCHED(prom)
21+
22+ - we may want to require that the awaiter operations are not potentially throwing/noexcept
23+
2024## Initial resume shouldn't reschedule
2125
2226[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#task-should-not-unconditionally-reschedule-when-control-enters-the-coroutine )
@@ -27,6 +31,13 @@ the respective issue):
2731- fix: constrain ` start(rcvr) ` to be called on ` get_scheduler(get_env(rcvr)) ` instead
2832- comment: the description from ` initial_suspend() ` merely lays out what needs to hold => that's OK
2933
34+ => Change op_state.start() to handle.resume() on the correct execution agent.
35+
36+ - this change isn't really task but could be a different paper
37+ - we are not saying anything about schedule - we just say where we aer executing
38+ - maybe add a recommended practice about task constructed from task
39+ - co_await on a task should never call schedule
40+
3041## Shouldn't reschedule after ` co_await ` ing task
3142
3243[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#task-awaiting-another-task-should-not-reschedule-on-resumption )
@@ -35,6 +46,21 @@ the respective issue):
3546- fix: specify a custom ` affine_on ` for ` task ` and arrange for various things
3647- comment: how can a user tell what exactly happened? the ` co_await ` ing ` task ` and the ` co_await ` ed task are from the implementation
3748
49+ => define affine_on such that it start on the receiver's get_scheduler
50+ - LB: I'm imagining
51+ - it turns out that task doen't have any default parameters!
52+ - inline_scheduler should have a customization of affine_on and we drop the special case
53+ - affine_on on the task could be specialized via the task's domain: it just returns the task
54+
55+ - get_scheduler is where the operation is started
56+ - affine_on should just take one argument and use get_scheduler but that requires that start is called on get_scheduler's scheduler
57+
58+ [ unrelated:
59+ - get_scheduler: where we got started
60+ - get_delegation_scheduler: where to start new work
61+ - get_completion_scheduler: where things complet
62+ ]
63+
3864## No symmetric transfer
3965
4066[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#task-coroutine-awaiting-another-task-does-not-use-symmetric-transfer )
@@ -62,6 +88,8 @@ the respective issue):
6288- fix: say something specific
6389- comment: we don't have the tools to say what implementations can do for known senders
6490
91+ => get a continues_on p5-like paragraph which calls continues_on
92+
6593## ` affine_on ` semantics unclear
6694
6795[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#affine_on-semantics-are-not-clear )
@@ -70,13 +98,18 @@ the respective issue):
7098- fix: two versions
7199- comment: I think I had the 2nd in mind
72100
101+ => allow affine_on to complete inline regardless that's the difference to continues_on
102+ in addition it can be customized separately
103+
73104## ` affine_on ` shape
74105
75106[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#affine_on-might-not-have-the-right-shape )
76107
77108- ` affine_on ` should just depend on the receiver's ` get_scheduler() ` .
78109- comment: agreed; that is design, though
79110
111+ => starts on get_scheduler, complete on the passed scheduler (which may get dropped)
112+
80113## ` affine_on ` schedule vs. stop token
81114
82115[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#affine_on-should-probably-not-forward-stop-requests-to-reschedule-operation )
@@ -86,6 +119,11 @@ the respective issue):
86119- comment: in case of ` set_stopped() ` the coroutine doesn't resume; for ` set_error(e) ` other reasons may exist
87120- comment: however, I don't object to this direction
88121
122+ => this requirement needs to align with what continues_on does
123+ - the actual conclusion is: affine_on may need to do what continues_on does
124+ - unless continues_on's schedule operation should also not be cancelable
125+ - alternatively we could call continues_on with an adapted scheduler
126+
89127## ` affine_on ` vs. other algorithms
90128
91129[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#we-should-probably-define-customsiations-for-affine_on-for-some-other-senders )
@@ -118,6 +156,10 @@ the respective issue):
118156- fix: use type-erased allocator in that case like generator
119157- comment: that's an oversight; I didn't realize generator does that
120158
159+ => write up the pros and cons
160+ - we could construct environment with the allocator so the user can choose which allocator to use
161+ - use the coroutine_traits to determine the promise_type based on the allocator?
162+
121163## allocator_arg more permissive
122164
123165[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#handling-of-allocator_arg-is-more-permissive-than-for-stdgenerator )
@@ -127,6 +169,8 @@ the respective issue):
127169- fix: should generator be generalized?
128170- comment: yes but not for C++26
129171
172+ => coroutines can forward - write design discussion
173+
130174## hiding parent's allocator
131175
132176[ LB] ( https://github.com/lewissbaker/papers/blob/master/isocpp/task-issues.org#minor-task-environments-allocator_type-overrides-the-parent-environments-get_allocator )
0 commit comments