Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
36d165c
Start extending what's exported from stdexec
ispeters Jul 24, 2026
497bada
Export more stuff
ispeters Jul 24, 2026
efe3ee6
Export everyting in __execution_fwd.hpp
ispeters Jul 24, 2026
bcb3dd7
Broken test_just.cpp
ispeters Jul 24, 2026
f75bdc1
Fix test_just.cpp
ispeters Jul 25, 2026
24e2710
Export some symbols from the module
ispeters Jul 27, 2026
e2a9724
Mostly get all the tests building
ispeters Jul 27, 2026
c256a22
Test build worksish
ispeters Jul 28, 2026
871c5e7
Clang-format
ispeters Jul 26, 2026
2b46f35
Make the test.exec build fail better in modules mode
ispeters Jul 27, 2026
e89f6a8
Clean up some TODOs
ispeters Jul 28, 2026
f4f2d75
Clean up test/CMakeLists.txt
ispeters Jul 28, 2026
5934425
Some random clean-ups
ispeters Jul 28, 2026
25573a3
Delete now-useless module test
ispeters Jul 28, 2026
5b3553a
Standardize test include orders
ispeters Jul 28, 2026
9ac919c
Make more tests pass
ispeters Jul 28, 2026
e23d7fa
Get test.scratch building
ispeters Jul 28, 2026
f6cf072
Include some test.exec tests in the modules build
ispeters Jul 28, 2026
8f4eb93
Fix typo in preprocessor token-pasting
ispeters Jul 28, 2026
76cb625
Get the ASIO tests building
ispeters Jul 29, 2026
2a0adff
clang-format include/exec/asio/completion_token.hpp
ispeters Aug 7, 2026
8993bd2
Fix linker error in ASIO tests
ispeters Aug 7, 2026
fa7c047
Disable TBB for now when building with modules
ispeters Aug 7, 2026
b8094f2
Make __spin_loop_pause inline instead of static
ispeters Aug 7, 2026
93b339c
Delete accidentally added precompiled module file
ispeters Aug 7, 2026
5c62f2d
Make __spin_loop_pause conditionally static and never inline
ispeters Aug 7, 2026
2493991
Modularize exec/trampoline_scheduler.hpp
ispeters Aug 7, 2026
cea99df
Address post-rebase build failures
ispeters Aug 7, 2026
5652776
Re-add dropped include to static_thread_pool.hpp
ispeters Aug 8, 2026
a3ccc0c
Fix clang-format error
ispeters Aug 8, 2026
360db95
Fix the build-failure tests
ispeters Aug 8, 2026
f99fdf7
Serialize the modular build in CI
ispeters Aug 8, 2026
de9ee94
Remove test_on.cpp and test_on3.cpp from the modular build
ispeters Aug 8, 2026
83343fa
Remove test_just_error.cpp from the modular build
ispeters Aug 9, 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
Loading