Skip to content

Commit d8b539f

Browse files
authored
drop support for finding sender algorithm customizations via tag_invoke (#1497)
1 parent ddd6f64 commit d8b539f

45 files changed

Lines changed: 501 additions & 920 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/Doxyfile.in

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ TIMESTAMP = NO
518518
# normally produced when WARNINGS is set to YES.
519519
# The default value is: NO.
520520

521-
EXTRACT_ALL = NO
521+
EXTRACT_ALL = YES
522522

523523
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
524524
# be included in the documentation.
@@ -542,7 +542,7 @@ EXTRACT_PACKAGE = NO
542542
# included in the documentation.
543543
# The default value is: NO.
544544

545-
EXTRACT_STATIC = NO
545+
EXTRACT_STATIC = YES
546546

547547
# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
548548
# locally in source files will be included in the documentation. If set to NO,
@@ -1063,15 +1063,16 @@ EXCLUDE_SYMLINKS = NO
10631063
# Note that the wildcards are matched against the file with absolute path, so to
10641064
# exclude all test directories for example use the pattern */test/*
10651065

1066-
EXCLUDE_PATTERNS = *__*
1066+
EXCLUDE_PATTERNS =
10671067

10681068
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
10691069
# (namespaces, classes, functions, etc.) that should be excluded from the
10701070
# output. The symbol name can be a fully qualified name, a word, or if the
10711071
# wildcard * is used, a substring. Examples: ANamespace, AClass,
10721072
# ANamespace::AClass, ANamespace::*Test
10731073

1074-
EXCLUDE_SYMBOLS = *__*
1074+
EXCLUDE_SYMBOLS = *__* \
1075+
_*
10751076

10761077
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
10771078
# that contain example code fragments that are included (see the \include

docs/source/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
2424

2525
project = 'stdexec'
26-
copyright = '2023, NVIDIA Corporation'
26+
copyright = '2025, NVIDIA Corporation'
2727
author = 'NVIDIA Corporation'
2828
release = 'dev'
2929

docs/source/developer/index.rst

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
.. =============================================================================
2+
.. Copyright 2025 NVIDIA Corporation
3+
..
4+
.. Licensed under the Apache License, Version 2.0 (the "License");
5+
.. you may not use this file except in compliance with the License.
6+
.. You may obtain a copy of the License at
7+
..
8+
.. http://www.apache.org/licenses/LICENSE-2.0
9+
..
10+
.. Unless required by applicable law or agreed to in writing, software
11+
.. distributed under the License is distributed on an "AS IS" BASIS,
12+
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
.. See the License for the specific language governing permissions and
14+
.. limitations under the License.
15+
.. =============================================================================
16+
17+
Developer's Guide
18+
=================
19+
20+
This section will eventually contain a guide for those interested in developing their own
21+
asynchronous, sender-based algorithms and execution contexts.
22+
23+
Essential concepts
24+
------------------
25+
26+
* Receivers
27+
* Custom Algorithms
28+
* Custom Schedulers
29+
* Customizing ``stdexec``'s algorithms
30+
* Domains
31+
* Early algorithm customization
32+
* Late algorithm customization

docs/source/index.rst

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,12 @@
1717
Welcome to ``stdexec``
1818
======================
1919

20-
``stdexec`` is the reference implementation for P2300, the ``std::execution`` proposal to the C++ standard library.
20+
``stdexec`` is the reference implementation for `P2300 <https://wg21.link/P2300>`_, the
21+
``std::execution`` proposal to the C++ standard library which will bring to C++26 a standard
22+
async programming model.
2123

2224
It provides:
25+
2326
* TODO
2427

2528
.. toctree::
@@ -28,9 +31,9 @@ It provides:
2831

2932
reference/index
3033

31-
.. user/index
32-
.. developer/index
34+
user/index
3335

36+
developer/index
3437

3538
.. .. toctree: :
3639
.. :maxdepth: 1

docs/source/reference/index.rst

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Concepts
2121
Sender Factories
2222
----------------
2323

24-
.. doxygenvariable:: stdexec::__write
24+
.. doxygenvariable:: stdexec::read_env
2525

2626
Sender Adaptors
2727
---------------
@@ -37,7 +37,3 @@ Sender Consumers
3737
Utilities
3838
---------
3939

40-
.. doxygenfunction:: stdexec::__write
41-
:project: stdexec
42-
:outline:
43-

docs/source/user/index.rst

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
.. =============================================================================
2+
.. Copyright 2025 NVIDIA Corporation
3+
..
4+
.. Licensed under the Apache License, Version 2.0 (the "License");
5+
.. you may not use this file except in compliance with the License.
6+
.. You may obtain a copy of the License at
7+
..
8+
.. http://www.apache.org/licenses/LICENSE-2.0
9+
..
10+
.. Unless required by applicable law or agreed to in writing, software
11+
.. distributed under the License is distributed on an "AS IS" BASIS,
12+
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
.. See the License for the specific language governing permissions and
14+
.. limitations under the License.
15+
.. =============================================================================
16+
17+
User's Guide
18+
============
19+
20+
This section will eventually contain a user's guide for ``stdexec`` that describes what the library
21+
is, the high-level concepts on which it is based, and how to use it.
22+
23+
TODO
24+
25+
26+
Essential concepts
27+
------------------
28+
29+
* Execution Contexts
30+
* Senders
31+
* Schedulers
32+
* Sender Algorithms
33+
* Sender Factories
34+
* Sender Adaptors
35+
* Sender Consumers

include/exec/finally.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -285,9 +285,9 @@ namespace exec {
285285

286286
struct finally_t {
287287
template <sender _Initial, sender _Final>
288-
requires __domain::__has_common_domain<_Initial, _Final>
288+
requires __has_common_domain<_Initial, _Final>
289289
auto operator()(_Initial&& __initial, _Final&& __final) const {
290-
using _Domain = __domain::__common_domain_t<_Initial, _Final>;
290+
using _Domain = __common_domain_t<_Initial, _Final>;
291291
return stdexec::transform_sender(
292292
_Domain(),
293293
__make_sexpr<finally_t>(

include/exec/sequence.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace exec {
3232
STDEXEC_ATTRIBUTE((nodiscard, host, device)) auto operator()(Sndr sndr) const -> Sndr;
3333

3434
template <class... Sndrs>
35-
requires(sizeof...(Sndrs) > 1) && stdexec::__domain::__has_common_domain<Sndrs...>
35+
requires(sizeof...(Sndrs) > 1) && stdexec::__has_common_domain<Sndrs...>
3636
STDEXEC_ATTRIBUTE((nodiscard, host, device)) auto operator()(Sndrs... sndrs) const -> _sndr<Sndrs...>;
3737
};
3838

@@ -198,7 +198,7 @@ namespace exec {
198198
}
199199

200200
template <class... Sndrs>
201-
requires(sizeof...(Sndrs) > 1) && stdexec::__domain::__has_common_domain<Sndrs...>
201+
requires(sizeof...(Sndrs) > 1) && stdexec::__has_common_domain<Sndrs...>
202202
STDEXEC_ATTRIBUTE((host, device)) auto sequence_t::operator()(Sndrs... sndrs) const -> _sndr<Sndrs...> {
203203
return _sndr<Sndrs...>{{}, {}, {static_cast<Sndrs&&>(sndrs)...}};
204204
}

include/stdexec/__detail/__bulk.hpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,20 +88,6 @@ namespace stdexec {
8888
{}
8989
};
9090
}
91-
92-
// This describes how to use the pieces of a bulk sender to find
93-
// legacy customizations of the bulk algorithm.
94-
using _Sender = __1;
95-
using _Shape = __nth_member<0>(__0);
96-
using _Fun = __nth_member<1>(__0);
97-
using __legacy_customizations_t = __types<
98-
tag_invoke_t(
99-
bulk_t,
100-
get_completion_scheduler_t<set_value_t>(get_env_t(_Sender&)),
101-
_Sender,
102-
_Shape,
103-
_Fun),
104-
tag_invoke_t(bulk_t, _Sender, _Shape, _Fun)>;
10591
};
10692

10793
struct __bulk_impl : __sexpr_defaults {

include/stdexec/__detail/__continues_on.hpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
#include "__sender_introspection.hpp"
2828
#include "__sender_adaptor_closure.hpp"
2929
#include "__senders_core.hpp"
30-
#include "__tag_invoke.hpp"
3130
#include "__transform_sender.hpp"
3231

3332
namespace stdexec {
@@ -57,18 +56,6 @@ namespace stdexec {
5756
return {{static_cast<_Scheduler&&>(__sched)}, {}, {}};
5857
}
5958

60-
//////////////////////////////////////////////////////////////////////////////////////////////
61-
using _Sched = __0;
62-
using _Sender = __1;
63-
using __legacy_customizations_t = //
64-
__types<
65-
tag_invoke_t(
66-
continues_on_t,
67-
get_completion_scheduler_t<set_value_t>(get_env_t(const _Sender&)),
68-
_Sender,
69-
_Sched),
70-
tag_invoke_t(continues_on_t, _Sender, _Sched)>;
71-
7259
static auto __transform_sender_fn() {
7360
return [&]<class _Data, class _Child>(__ignore, _Data&& __data, _Child&& __child) {
7461
return schedule_from(static_cast<_Data&&>(__data), static_cast<_Child&&>(__child));

0 commit comments

Comments
 (0)