Clean up stdexec-only paths and update affected tests#7123
Clean up stdexec-only paths and update affected tests#7123guptapratykshh wants to merge 57 commits intoTheHPXProject:masterfrom
Conversation
|
Can one of the admins verify this patch? |
7ca8cbe to
a24be1a
Compare
|
@isidorostsa Please have a look |
|
BTW, how does this relate to #6708? Does this PR superseds it? |
|
@guptapratykshh thanks for working on this. Could you please proactively keep an eye on the CI results. Currently there seem to be some compilation issues with this PR. |
this PR is a narrower follow up in the same direction as #6708, updated on top of the current master rather than a wholesale replacement for it. It keeps the stdexec-only cleanup goal, but its scope here is mainly removing the remaining dead internal paths and fixing the resulting test issues while preserving backward compatibility. |
Thanks for the explanations. Do we still need #6708? What does it have in addition to your PR? |
after merging #6708 into my branch and updating it to work with current master, I do not think we still need #6708 as separate PR |
c180673 to
82b73f8
Compare
3863598 to
62d14bc
Compare
isidorostsa
left a comment
There was a problem hiding this comment.
Thank you for taking on this task! Removing old senders would be helpful
To make it possible to review this please contain unnecessary or pedantic edits as much as possible.
49ba52e to
d94eaf8
Compare
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
This reverts commit c83517e. Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
3721230 to
2ce2ba3
Compare
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
This PR removes the remaining HPX_HAVE_STDEXEC-guarded legacy execution paths, making the stdexec-based implementation the single supported code path, and updates tests/build configuration accordingly.
Changes:
- Removed non-stdexec implementations and preprocessor guards across execution/execution_base and related algorithms/queries.
- Updated unit/performance tests and examples to match stdexec semantics (e.g., sender/receiver concepts, env-based queries, adaptor usage).
- Adjusted CMake/stdexec integration (stdexec required, FetchContent patching, compiler-specific workarounds and test selection).
Reviewed changes
Copilot reviewed 147 out of 167 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/core/execution_base/tests/unit/basic_schedule.cpp | Updates scheduler/sender test scaffolding to stdexec sender/scheduler conventions. |
| libs/core/execution_base/tests/unit/basic_operation_state.cpp | Removes non-stdexec assertions; adds Clang deprecation-warning suppression. |
| libs/core/execution_base/tests/unit/any_sender.cpp | Aligns sender concept checks with stdexec; adds Clang deprecation-warning suppression. |
| libs/core/execution_base/tests/unit/CMakeLists.txt | Disables execution_base unit tests for Clang/AppleClang builds. |
| libs/core/execution_base/tests/include/coroutine_task.hpp | Removes legacy await_suspend path; standardizes on stdexec continuation handle access. |
| libs/core/execution_base/include/hpx/execution_base/traits/coroutine_traits.hpp | Makes stdexec coroutine trait checks unconditional. |
| libs/core/execution_base/include/hpx/execution_base/this_thread.hpp | Switches to stdexec-forward include and re-exports this_thread + stdexec query. |
| libs/core/execution_base/include/hpx/execution_base/stdexec_forward.hpp | Centralizes stdexec includes, warning suppression, and forwards additional CPOs/utilities. |
| libs/core/execution_base/include/hpx/execution_base/sender.hpp | Removes non-stdexec sender CPOs/traits implementation; relies on stdexec forward. |
| libs/core/execution_base/include/hpx/execution_base/operation_state.hpp | Removes non-stdexec operation_state/start implementation; relies on stdexec forward. |
| libs/core/execution_base/include/hpx/execution_base/coroutine_utils.hpp | Removes non-stdexec coroutine sender-awaitable utilities declarations. |
| libs/core/execution_base/include/hpx/execution_base/completion_scheduler.hpp | Drops legacy completion_scheduler implementation; uses stdexec-based concepts/CPOs. |
| libs/core/execution_base/include/hpx/execution_base/any_sender.hpp | Updates type-erased senders/receivers to stdexec sender/receiver concepts and signatures. |
| libs/core/execution/tests/unit/forwarding_sender_query.cpp | Unifies forwarding query tests to stdexec forwarding_query. |
| libs/core/execution/tests/unit/forwarding_scheduler_query.cpp | Unifies forwarding scheduler query tests to stdexec forwarding_query. |
| libs/core/execution/tests/unit/forwarding_env_query.cpp | Unifies forwarding env query tests to stdexec forwarding_query. |
| libs/core/execution/tests/unit/environment_queries.cpp | Updates receiver/env query customization to stdexec-style members. |
| libs/core/execution/tests/unit/algorithm_transfer_when_all.cpp | Updates completion scheduler query usage and start invocation; adds Clang deprecation suppression. |
| libs/core/execution/tests/unit/algorithm_transfer.cpp | Updates env completion scheduler query and sender checks; adds Clang deprecation suppression. |
| libs/core/execution/tests/unit/algorithm_sync_wait_with_variant.cpp | Removes legacy pipeline form; uses direct sync_wait_with_variant calls. |
| libs/core/execution/tests/unit/algorithm_sync_wait.cpp | Removes legacy pipeline form; uses direct sync_wait calls. |
| libs/core/execution/tests/unit/algorithm_start_detached.cpp | Removes legacy operator| test block (non-stdexec-only behavior). |
| libs/core/execution/tests/unit/algorithm_let_value.cpp | Normalizes sender-in-env checks to stdexec is_sender_in_v. |
| libs/core/execution/tests/unit/algorithm_let_stopped.cpp | Normalizes sender-in-env checks and error-type expectations to stdexec behavior. |
| libs/core/execution/tests/unit/algorithm_let_error.cpp | Normalizes sender-in-env checks and value-type expectations to stdexec behavior. |
| libs/core/execution/tests/unit/algorithm_just_stopped.cpp | Removes redundant stdexec guards; matches stdexec error-type behavior. |
| libs/core/execution/tests/unit/algorithm_just_error.cpp | Removes redundant stdexec guards; matches stdexec error-type behavior. |
| libs/core/execution/tests/unit/algorithm_just.cpp | Removes redundant stdexec guards; aligns value/error type expectations with stdexec. |
| libs/core/execution/tests/unit/algorithm_execute.cpp | Unifies execute test to stdexec-only sender model; adds Clang deprecation suppression. |
| libs/core/execution/tests/unit/algorithm_as_sender.cpp | Normalizes sender-in-env checks to stdexec is_sender_in_v. |
| libs/core/execution/tests/unit/CMakeLists.txt | Disables execution unit tests for Clang/AppleClang builds. |
| libs/core/execution/src/run_loop.cpp | Removes legacy run_loop intrusive_ptr refcounting (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/queries/read.hpp | Removes legacy read query sender implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/queries/get_stop_token.hpp | Removes legacy get_stop_token implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/queries/get_scheduler.hpp | Removes legacy get_scheduler/forward_progress implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/queries/get_delegatee_scheduler.hpp | Removes legacy get_delegatee_scheduler implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/queries/get_allocator.hpp | Removes legacy get_allocator implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/when_all_vector.hpp | Switches to stdexec-forward header and stdexec completion signature utilities. |
| libs/core/execution/include/hpx/execution/algorithms/transfer_just.hpp | Removes legacy transfer_just implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/transfer.hpp | Removes legacy transfer implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/then.hpp | Removes legacy then implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/keep_future.hpp | Migrates sender/op_state customization to member connect/start style. |
| libs/core/execution/include/hpx/execution/algorithms/just.hpp | Removes legacy just/just_error/just_stopped implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/execute.hpp | Removes legacy execute implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/ensure_started.hpp | Removes legacy ensure_started implementation (non-stdexec-only). |
| libs/core/execution/include/hpx/execution/algorithms/detail/partial_algorithm.hpp | Uses env-based completion scheduler query unconditionally. |
| libs/core/execution/include/hpx/execution/algorithms/bulk.hpp | Converts bulk sender/receiver to stdexec-only concepts/env/query patterns. |
| libs/core/execution/include/hpx/execution/algorithms/as_sender.hpp | Migrates as_sender sender/op_state customization to member connect/start style. |
| libs/core/execution/CMakeLists.txt | Removes legacy headers/sources from build; drops run_loop.cpp from sources. |
| libs/core/async_mpi/tests/unit/mpi_ring_async_executor.cpp | Removes HPX_HAVE_STDEXEC guard around MPI test execution. |
| libs/core/async_mpi/tests/unit/algorithm_transform_mpi.cpp | Removes HPX_HAVE_STDEXEC guard around MPI test execution. |
| libs/core/async_mpi/include/hpx/async_mpi/transform_mpi.hpp | Updates sender/receiver concepts and completion signatures to stdexec-only. |
| libs/core/async_cuda/tests/unit/transform_stream.cu | Replaces transfer with continues_on for context handoff back to HPX scheduler. |
| libs/core/async_cuda/tests/unit/cuda_multi_device_polling.cpp | Fixes author name encoding in header comment. |
| libs/core/async_cuda/tests/performance/synchronize.cu | Replaces pipeline ` |
| libs/core/async_cuda/src/cuda_future.cpp | Fixes author name encoding in header comment. |
| libs/core/async_cuda/src/cuda_event_callback.cpp | Fixes author name encoding in header comment. |
| libs/core/async_cuda/include/hpx/async_cuda/transform_stream.hpp | Migrates to stdexec-only receiver/sender model (member ops, env, completion signatures). |
| libs/core/algorithms/tests/unit/container_algorithms/adjacentdifference_range_sender.cpp | Removes legacy pipeline ` |
| libs/core/algorithms/tests/unit/container_algorithms/CMakeLists.txt | Removes specific sender tests on Clang/AppleClang. |
| libs/core/algorithms/tests/unit/algorithms/unique_tests.hpp | Makes sender test helpers unconditional (stdexec-only). |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_value_constructn_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_value_construct_tests.hpp | Makes sender test helpers unconditional; adds assertions on "returned_from_algorithm". |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_value_construct_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_relocaten_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_relocate_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_relocate_backward_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_moven_sender.cpp | Makes sender test helpers unconditional; reduces tested execution policy combinations. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_move_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_move_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_filln_sender.cpp | Makes sender test helpers unconditional; reduces tested execution policy combinations. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_fill_sender.cpp | Makes sender test helpers unconditional; reduces tested execution policy combinations. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_default_constructn_sender.cpp | Makes sender test helpers unconditional; reduces tested execution policy combinations. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_default_construct_tests.hpp | Makes sender test helpers unconditional; adds assertions on "returned_from_algorithm". |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_default_construct_sender.cpp | Reduces tested execution policy combinations for sender tests. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_copyn_sender.cpp | Makes sender test helpers unconditional; reduces tested execution policy combinations. |
| libs/core/algorithms/tests/unit/algorithms/uninitialized_copy_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/transform_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/transform_reduce_binary_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/transform_binary_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/transform_binary2_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/remove_tests.hpp | Makes sender test helpers unconditional; changes random base/value to size_t. |
| libs/core/algorithms/tests/unit/algorithms/reduce_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/none_of_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/mismatch_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/mismatch_binary_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/is_sorted_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/is_heap_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/generaten_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/generate_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/foreach_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/foreach_scheduler.cpp | Adds Clang-version gating for problematic sender paths. |
| libs/core/algorithms/tests/unit/algorithms/findifnot_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/findif_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/findfirstof_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/findend_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/find_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/filln_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/fill_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/equal_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/equal_binary_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/destroy_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/countif_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/count_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/copyn_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/copy_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/any_of_tests.hpp | Makes sender test helpers unconditional; annotates unchecked optional access in test. |
| libs/core/algorithms/tests/unit/algorithms/any_of_sender.cpp | Adds Clang ICE workaround by compiling to a stub main on Clang<=20. |
| libs/core/algorithms/tests/unit/algorithms/all_of_tests.hpp | Makes sender test helpers unconditional; annotates unchecked optional access in test. |
| libs/core/algorithms/tests/unit/algorithms/all_of_sender.cpp | Adds Clang ICE workaround by compiling to a stub main on Clang<=20. |
| libs/core/algorithms/tests/unit/algorithms/adjacentfind_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/adjacentdifference_tests.hpp | Makes sender test helpers unconditional. |
| libs/core/algorithms/tests/unit/algorithms/CMakeLists.txt | Disables broad stdexec sender test set for Clang/AppleClang; additional Clang exclusions. |
| libs/core/algorithms/tests/performance/CMakeLists.txt | Disables foreach_report benchmark on Clang/AppleClang. |
| libs/core/algorithms/include/hpx/parallel/util/detail/algorithm_result.hpp | Always includes execution_base for sender traits. |
| libs/core/algorithms/include/hpx/parallel/algorithms/shift_right.hpp | Simplifies async result to return new_first directly. |
| examples/quickstart/sender_diamond.cpp | Adds local deprecation-warning suppression around deprecated CPO usage. |
| examples/quickstart/CMakeLists.txt | Disables sender_diamond example for Clang/AppleClang. |
| cmake/templates/std_headers.hpp.in | Makes stdexec-related diagnostic suppression unconditional (no longer guarded by HPX_HAVE_STDEXEC). |
| cmake/HPX_SetupStdexec.cmake | Adds stdexec header patching for modules builds; updates FetchContent include dirs to SYSTEM. |
| CMakeLists.txt | Makes stdexec mandatory and enables MSVC conforming preprocessor option for stdexec. |
| .github/workflows/tests.examples.targets | Adds 1d_stencil_8 example test target. |
| .github/workflows/macos_debug_fetch_hwloc.yml | Updates macOS CI exclusions for new/changed example targets. |
Comments suppressed due to low confidence (1)
libs/core/execution/tests/unit/CMakeLists.txt:1
- This disables all execution unit tests when building with Clang/AppleClang, which is a very broad reduction in CI/test coverage. If only specific tests or warnings are problematic on Clang, prefer selectively excluding those tests (as done elsewhere with
list(REMOVE_ITEM ...)) or applying targeted compile options/pragma suppression per-source/target instead of skipping the whole test suite.
# Copyright (c) 2014-2026 Hartmut Kaiser
06654c7 to
2ce2ba3
Compare
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 147 out of 167 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
libs/core/execution_base/tests/unit/CMakeLists.txt:1
- This disables the entire
execution_baseunit test suite for Clang/AppleClang, which significantly reduces CI signal and increases the risk of undetected regressions on those compilers. If only a subset fails (e.g., due to deprecation warnings or specific ICEs), prefer disabling only the affected targets (vialist(REMOVE_ITEM ...)or per-test conditions) or adding targeted compile options, rather than excluding the full suite.
# Copyright (c) 2019 Thomas Heller
…flow Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Signed-off-by: guptapratykshh <pratykshgupta9999@gmail.com>
Proposed Changes
HPX_HAVE_STDEXECguarded cleanup paths and kept the stdexec-only implementation as the single active pathAny background context you want to provide?
Checklist
Not all points below apply to all pull requests.