Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
4ffe67c
Start extending what's exported from stdexec
ispeters Jul 24, 2026
2bef5bd
Export more stuff
ispeters Jul 24, 2026
51f6263
Export everyting in __execution_fwd.hpp
ispeters Jul 24, 2026
274fbb5
Broken test_just.cpp
ispeters Jul 24, 2026
e3459c1
Fix test_just.cpp
ispeters Jul 25, 2026
d104be8
Export some symbols from the module
ispeters Jul 27, 2026
1b81797
Mostly get all the tests building
ispeters Jul 27, 2026
e721bc4
Test build worksish
ispeters Jul 28, 2026
d074fa5
Clang-format
ispeters Jul 26, 2026
845e27f
Make the test.exec build fail better in modules mode
ispeters Jul 27, 2026
6f5ba35
Clean up some TODOs
ispeters Jul 28, 2026
e4d89f3
Clean up test/CMakeLists.txt
ispeters Jul 28, 2026
6df9b89
Some random clean-ups
ispeters Jul 28, 2026
9afe862
Delete now-useless module test
ispeters Jul 28, 2026
c99d9ec
Standardize test include orders
ispeters Jul 28, 2026
7bd2a0d
Make more tests pass
ispeters Jul 28, 2026
1742944
Get test.scratch building
ispeters Jul 28, 2026
b8d8a55
Include some test.exec tests in the modules build
ispeters Jul 28, 2026
88ce02c
Fix typo in preprocessor token-pasting
ispeters Jul 28, 2026
b75188b
Get the ASIO tests building
ispeters Jul 29, 2026
f7238a8
clang-format include/exec/asio/completion_token.hpp
ispeters Aug 7, 2026
19a0a93
Fix linker error in ASIO tests
ispeters Aug 7, 2026
54fa87b
Disable TBB for now when building with modules
ispeters Aug 7, 2026
78e95a0
Make __spin_loop_pause inline instead of static
ispeters Aug 7, 2026
06a7c1f
Delete accidentally added precompiled module file
ispeters Aug 7, 2026
8262b69
Make __spin_loop_pause conditionally static and never inline
ispeters Aug 7, 2026
aab15cf
Modularize exec/trampoline_scheduler.hpp
ispeters Aug 7, 2026
2295844
Address post-rebase build failures
ispeters Aug 7, 2026
827632f
Re-add dropped include to static_thread_pool.hpp
ispeters Aug 8, 2026
f33d2ac
Fix clang-format error
ispeters Aug 8, 2026
fdf5453
Fix the build-failure tests
ispeters Aug 8, 2026
e39bbcf
Serialize the modular build in CI
ispeters Aug 8, 2026
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
6 changes: 4 additions & 2 deletions .github/workflows/ci.cpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ jobs:
cmake -S . -B build -GNinja \
-DCMAKE_BUILD_TYPE=${{ matrix.build }} \
-DCMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" \
-DSTDEXEC_ENABLE_TBB:BOOL=${{ !contains(matrix.cxxflags, '-fsanitize') }} \
-DSTDEXEC_ENABLE_TBB:BOOL=${{ !contains(matrix.cxxflags, '-fsanitize') && !contains(matrix.name, 'modules') }} \
-DSTDEXEC_ENABLE_ASIO:BOOL=TRUE \
-DSTDEXEC_ASIO_IMPLEMENTATION:STRING=boost \
-DCMAKE_CXX_STANDARD:STRING=${{ matrix.cxxstd }} \
Expand All @@ -124,7 +124,9 @@ jobs:
;

# Compile
cmake --build build -v -j 512;
# Run a serial build if we're building the modular build because it tends
# to result in fewer Clang ICEs.
cmake --build build -v -j ${{ contains(matrix.name, 'modules') && 1 || 512 }};

# Print sccache stats
sccache -s;
Expand Down
32 changes: 26 additions & 6 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,29 @@ stdexec should follow.
the `include/exec` directory, export them with
`STDEXEC_MODULE_EXPORT_AUTHORING`.

* The first non-comment, non-blank line in a test file should be
`#include <catch2/catch_all.hpp>` so as not to break the modules build.
If compile-time behavior needs to differ between modularized and
traditional builds, the next inclusion should be
`#include <stdexec/__detail/__config.hpp>` so that `STDEXEC_USE_MODULES()`
is defined and can be checked.
* In tests, the include order should be:
```c++
/* Copyright... */

// Catch2 must come before any potential import statements
#include <catch2/catch_all.hpp>

// Pull in all the macros in __config.hpp and either include all of
// stdexec's headers, or import stdexec, as appropriate
#include <stdexec/execution.hpp>

// other non-std headers, like anything in <exec/...> or in the test
// utility library
#include <exec/function.hpp>
#include <test_common/receivers.hpp>

// if the test has direct dependencies on std, the declarations thereof
// must come last, either as import std, or the usual includes. This has
// to come last because current compilers support including std headers
// *before* import std, but not *after*.
#if STDEXEC_USE_MODULES()
import std;
#else
# include <algorithm>
#endif
```
17 changes: 12 additions & 5 deletions include/exec/any_sender_of.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,21 @@
*/
#pragma once

#include "../stdexec/__detail/__any.hpp"
#include "../stdexec/__detail/__concepts.hpp"
#include "../stdexec/__detail/__receiver_ref.hpp"
#include "../stdexec/__detail/__receivers.hpp"
#include "../stdexec/__detail/__config.hpp"

#include "../stdexec/__detail/__receiver_ref.hpp"
#include "env.hpp"

#include <utility>
#if STDEXEC_USE_MODULES()
import std;
import stdexec;
#else
# include "../stdexec/__detail/__any.hpp"
# include "../stdexec/__detail/__concepts.hpp"
# include "../stdexec/__detail/__receivers.hpp"

# include <utility>
#endif

STDEXEC_PRAGMA_PUSH()
STDEXEC_PRAGMA_IGNORE_GNU("-Woverloaded-virtual")
Expand Down
10 changes: 8 additions & 2 deletions include/exec/asio/as_default_on.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,16 @@

#include <exec/asio/asio_config.hpp>

#include "../../stdexec/__detail/__config.hpp"

#include "executor_with_default.hpp"

#include <type_traits>
#include <utility>
#if STDEXEC_USE_MODULES()
import std;
#else
# include <type_traits>
# include <utility>
#endif

namespace experimental::execution::asio
{
Expand Down
42 changes: 25 additions & 17 deletions include/exec/asio/completion_token.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,33 @@

#include <exec/asio/asio_config.hpp>

#include "../../stdexec/__detail/__execution_fwd.hpp"

#include "../../stdexec/__detail/__completion_signatures_of.hpp"
#include "../../stdexec/__detail/__env.hpp"
#include "../../stdexec/__detail/__queries.hpp"
#include "../../stdexec/__detail/__receivers.hpp"
#include "../../stdexec/__detail/__type_traits.hpp"
#include "../../stdexec/stop_token.hpp"
#include "../../stdexec/__detail/__config.hpp"

#include "as_default_on.hpp"

#include <concepts>
#include <exception>
#include <functional>
#include <mutex>
#include <optional>
#include <tuple>
#include <type_traits>
#include <utility>
#include <version>
#if STDEXEC_USE_MODULES()
import std;
import stdexec;
#else
# include "../../stdexec/__detail/__execution_fwd.hpp"

# include "../../stdexec/__detail/__completion_signatures_of.hpp"
# include "../../stdexec/__detail/__env.hpp"
# include "../../stdexec/__detail/__queries.hpp"
# include "../../stdexec/__detail/__receivers.hpp"
# include "../../stdexec/__detail/__type_traits.hpp"
# include "../../stdexec/stop_token.hpp"

# include <concepts>
# include <exception>
# include <functional>
# include <mutex>
# include <optional>
# include <tuple>
# include <type_traits>
# include <utility>
# include <version>
#endif

namespace experimental::execution::asio
{
Expand Down
8 changes: 6 additions & 2 deletions include/exec/asio/noexcept_boost_throw.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,12 @@
# include <boost/asio/thread_pool.hpp>
# include <boost/throw_exception.hpp>

# include <cstdlib>
# include <exception>
# if STDEXEC_USE_MODULES()
import std;
# else
# include <cstdlib>
# include <exception>
# endif

namespace boost
{
Expand Down
33 changes: 20 additions & 13 deletions include/exec/asio/use_sender.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,29 @@

#include <exec/asio/asio_config.hpp>

#include "../../stdexec/__detail/__execution_fwd.hpp"

#include "../../stdexec/__detail/__completion_signatures_of.hpp"
#include "../../stdexec/__detail/__receivers.hpp"
#include "../../stdexec/__detail/__senders.hpp"
#include "../../stdexec/__detail/__transform_completion_signatures.hpp"
#include "../../stdexec/__detail/__type_traits.hpp"
#include "../../stdexec/__detail/__config.hpp"

#include "as_default_on.hpp"
#include "completion_token.hpp"

#include <concepts>
#include <exception>
#include <system_error>
#include <type_traits>
#include <utility>
#if STDEXEC_USE_MODULES()
import std;
import stdexec;
#else
# include "../../stdexec/__detail/__execution_fwd.hpp"

# include "../../stdexec/__detail/__completion_signatures_of.hpp"
# include "../../stdexec/__detail/__receivers.hpp"
# include "../../stdexec/__detail/__senders.hpp"
# include "../../stdexec/__detail/__transform_completion_signatures.hpp"
# include "../../stdexec/__detail/__type_traits.hpp"

# include <concepts>
# include <exception>
# include <system_error>
# include <type_traits>
# include <utility>
#endif

namespace experimental::execution::asio
{
Expand Down Expand Up @@ -71,7 +78,7 @@ namespace experimental::execution::asio
: r_(static_cast<T&&>(t))
{}

using receiver_concept = ::STDEXEC::receiver_t;
using receiver_concept = ::STDEXEC::receiver_tag;

constexpr void set_stopped() && noexcept
requires ::STDEXEC::receiver_of<
Expand Down
10 changes: 8 additions & 2 deletions include/exec/detail/basic_sequence.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,16 @@
*/
#pragma once

#include "../../stdexec/__detail/__basic_sender.hpp"
#include "../../stdexec/__detail/__config.hpp"
#include "../../stdexec/__detail/__meta.hpp"

#if STDEXEC_USE_MODULES()
import stdexec;
#else
# include "../../stdexec/__detail/__basic_sender.hpp"
# include "../../stdexec/__detail/__meta.hpp"
#endif

#include "../../stdexec/__detail/__basic_sender_macros.hpp"
#include "../sequence_senders.hpp"

namespace experimental::execution
Expand Down
8 changes: 7 additions & 1 deletion include/exec/env.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@
*/
#pragma once

#include "../stdexec/execution.hpp"
#include "../stdexec/__detail/__config.hpp"

#if STDEXEC_USE_MODULES()
import stdexec;
#else
# include "../stdexec/execution.hpp"
#endif

STDEXEC_PRAGMA_PUSH()
STDEXEC_PRAGMA_IGNORE_EDG(1302)
Expand Down
8 changes: 7 additions & 1 deletion include/exec/sender_for.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@
*/
#pragma once

#include "../stdexec/__detail/__sender_introspection.hpp"
#include "../stdexec/__detail/__config.hpp"

#if STDEXEC_USE_MODULES()
import stdexec;
#else
# include "../stdexec/__detail/__sender_introspection.hpp"
#endif

namespace experimental::execution
{
Expand Down
30 changes: 18 additions & 12 deletions include/exec/sequence/iterate.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,31 @@

#include "../../stdexec/__detail/__config.hpp"

#include "../../stdexec/__detail/__concepts.hpp"
#include "../../stdexec/__detail/__connect.hpp"
#include "../../stdexec/__detail/__env.hpp"
#include "../../stdexec/__detail/__execution_fwd.hpp"
#include "../../stdexec/__detail/__operation_states.hpp"
#include "../../stdexec/__detail/__optional.hpp"
#include "../../stdexec/__detail/__receivers.hpp"
#include "../../stdexec/__detail/__schedulers.hpp"
#include "../../stdexec/__detail/__sender_concepts.hpp"
#if STDEXEC_USE_MODULES()
import std;
import stdexec;
#else
# include "../../stdexec/__detail/__execution_fwd.hpp"

# include "../../stdexec/__detail/__concepts.hpp"
# include "../../stdexec/__detail/__connect.hpp"
# include "../../stdexec/__detail/__env.hpp"
# include "../../stdexec/__detail/__operation_states.hpp"
# include "../../stdexec/__detail/__optional.hpp"
# include "../../stdexec/__detail/__receivers.hpp"
# include "../../stdexec/__detail/__schedulers.hpp"
# include "../../stdexec/__detail/__sender_concepts.hpp"

# include <exception>
# include <ranges>
#endif

#include "../detail/basic_sequence.hpp"
#include "../sender_for.hpp"
#include "../sequence.hpp"
#include "../sequence_senders.hpp"
#include "../trampoline_scheduler.hpp"

#include <exception>
#include <ranges>

namespace experimental::execution
{
namespace __iterate
Expand Down
43 changes: 25 additions & 18 deletions include/exec/sequence_senders.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,31 @@
*/
#pragma once

#include "../stdexec/__detail/__execution_fwd.hpp"

#include "../stdexec/__detail/__completion_signatures.hpp"
#include "../stdexec/__detail/__concepts.hpp"
#include "../stdexec/__detail/__connect.hpp"
#include "../stdexec/__detail/__debug.hpp"
#include "../stdexec/__detail/__diagnostics.hpp"
#include "../stdexec/__detail/__env.hpp"
#include "../stdexec/__detail/__just.hpp"
#include "../stdexec/__detail/__meta.hpp"
#include "../stdexec/__detail/__receivers.hpp"
#include "../stdexec/__detail/__senders.hpp"
#include "../stdexec/__detail/__stop_token.hpp"
#include "../stdexec/__detail/__tag_invoke.hpp"
#include "../stdexec/__detail/__transform_sender.hpp"
#include "../stdexec/__detail/__type_traits.hpp"
#include "../stdexec/__detail/__utility.hpp"
#include "../stdexec/stop_token.hpp"
#include "../stdexec/__detail/__config.hpp"

#if STDEXEC_USE_MODULES()
import stdexec;
# include "../stdexec/__detail/__diagnostic_macros.hpp"
#else
# include "../stdexec/__detail/__execution_fwd.hpp"

# include "../stdexec/__detail/__completion_signatures.hpp"
# include "../stdexec/__detail/__concepts.hpp"
# include "../stdexec/__detail/__connect.hpp"
# include "../stdexec/__detail/__debug.hpp"
# include "../stdexec/__detail/__diagnostics.hpp"
# include "../stdexec/__detail/__env.hpp"
# include "../stdexec/__detail/__just.hpp"
# include "../stdexec/__detail/__meta.hpp"
# include "../stdexec/__detail/__receivers.hpp"
# include "../stdexec/__detail/__senders.hpp"
# include "../stdexec/__detail/__stop_token.hpp"
# include "../stdexec/__detail/__tag_invoke.hpp"
# include "../stdexec/__detail/__transform_sender.hpp"
# include "../stdexec/__detail/__type_traits.hpp"
# include "../stdexec/__detail/__utility.hpp"
# include "../stdexec/stop_token.hpp"
#endif

#include "completion_signatures.hpp"

Expand Down
Loading