Skip to content

Remove the re-exports of stdexec's tag_invoke - #7973

Merged
hkaiser merged 1 commit into
masterfrom
remove-stdexec-tag-invoke
Nov 5, 2026
Merged

hkaiser merged 1 commit into
masterfrom
remove-stdexec-tag-invoke

Conversation

@hkaiser

@hkaiser hkaiser commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

stdexec dropped tag_invoke in NVIDIA/stdexec@49edf9a6a0 ("drop all support for tag_invoke"). stdexec_forward.hpp still re-exports stdexec::tag_invoke, tag_invoke_result, tag_invocable and nothrow_tag_invocable in hpx::execution::experimental::stdexec_non_standard_tag_invoke, so every file that includes it fails to compile against current stdexec. Nothing in HPX uses that namespace, so this PR removes it.

With this change HPX 2.0.0 builds against stdexec 1d58877ad8 (MSVC on Windows and GCC 12 on Linux, full builds with the distributed runtime), and the execution and execution_base unit tests pass with GCC 12. The same change is applied as a patch in the vcpkg port of HPX 2.0.0, which now uses vcpkg's stdexec port (microsoft/vcpkg#54814). It doesn't change anything with the stdexec revision HPX currently uses.

Code outside HPX that used hpx::execution::experimental::stdexec_non_standard_tag_invoke has to use stdexec's own customization mechanism (member functions) instead; with current stdexec, tag_invoke doesn't exist anymore anyway.

stdexec dropped tag_invoke in NVIDIA/stdexec@49edf9a6a0, so these
using-declarations break the build against current stdexec. Nothing in
HPX uses the stdexec_non_standard_tag_invoke namespace.

Signed-off-by: Hartmut Kaiser <[email protected]>
@hkaiser hkaiser added this to the 2.1.0 milestone Nov 2, 2026
@hkaiser hkaiser added type: compatibility issue category: senders/receivers Implementations of the p0443r14 / p2300 + p1897 proposals labels Nov 2, 2026
@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: dc43d5e1-dbdc-479e-ae90-187e45bff274
Commits

Reviewing files that changed from the base of the PR and between 974ae9d and 7a38f88.

Files selected for processing: 1
  • libs/core/execution_base/include/hpx/execution_base/stdexec_forward.hpp
Files with no reviewable changes: 1
  • libs/core/execution_base/include/hpx/execution_base/stdexec_forward.hpp

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

Summary

Summary by CodeRabbit

  • Changes
    • Removed the non-standard tag_invoke aliases from the public interface.

The change removes the stdexec_non_standard_tag_invoke namespace and its four exported aliases. The adjacent stdexec_internal aliases remain.

Changes: Public API surface

Layer / File(s) Summary
Remove exported aliases
libs/core/execution_base/include/hpx/execution_base/stdexec_forward.hpp
Removes the tag_invoke, tag_invoke_result, nothrow_tag_invocable, and tag_invocable aliases from stdexec_non_standard_tag_invoke. The adjacent stdexec_internal aliases remain.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Possibly related issues

  • Issue 7547 describes removal of tag_invoke customization as a breaking change; this PR removes HPX re-exports of stdexec tag_invoke APIs.

Possibly related PRs

Suggested labels: category: API

Suggested reviewers: isidorostsa, charan-003

Merge Risk: Minimal · up to 7a38f

The intended API removal has no identified HPX build dependency or unresolved merge-blocking issue.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly and concisely describes the removal of HPX's re-exports of stdexec's tag_invoke APIs.
Description check Passed The description explains the stdexec compatibility problem, the removed namespace and aliases, validation results, and impact on external users. It is directly related to the changeset.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files.

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@hkaiser
hkaiser merged commit ff30aa0 into master Nov 5, 2026
80 of 83 checks passed
@hkaiser
hkaiser deleted the remove-stdexec-tag-invoke branch November 5, 2026 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: senders/receivers Implementations of the p0443r14 / p2300 + p1897 proposals type: compatibility issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant