Update status - #306
Open
dietmarkuehl wants to merge 36 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
This PR broadens the execution test suite and refines several core beman::execution utilities/concepts (notably scheduler/receiver requirements, environment forwarding, and exposition-only helpers) while expanding documentation and implementation-status tracking.
Changes:
- Tightens/extends core concepts and CPO behavior (e.g.,
schedulernow requiresget_forward_progress_guarantee,receiverrequires nothrow move construction, additions aroundget_start_scheduler/get_delegation_scheduler,read_envtype checking). - Adds new exposition-only helpers/modules (
data_type,call_with_default,SET-VALUEmacro) and exports/imports to support module builds. - Adds/updates many tests (including new focused tests like
exec-write-env,exec-unstoppable,exec-schedule-from,exec-queryable-concept,exec-cmplsigs) plus documentation updates (docs/overview.md, newdocs/implementation-status.md).
Reviewed changes
Copilot reviewed 72 out of 74 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/beman/execution/stopsource-mem.test.cpp | Adds import std path to reduce header includes under module-enabled builds. |
| tests/beman/execution/include/test/thread_pool.hpp | Supports import std and adds forward progress query to satisfy updated scheduler requirements. |
| tests/beman/execution/include/test/sender_env.hpp | New test sender/environment helper used to validate attribute forwarding behavior across adaptors. |
| tests/beman/execution/include/test/optional_sender.hpp | Adjusts includes (and common header) to support import std configurations. |
| tests/beman/execution/include/test/execution.hpp | Refactors standard includes to support import std and platform-conditional includes. |
| tests/beman/execution/execution-syn.test.cpp | Adds coverage for execution policies and forward progress query to scheduler test types. |
| tests/beman/execution/exec-write-env.test.cpp | New tests for write_env behavior and attribute forwarding. |
| tests/beman/execution/exec-when-all.test.cpp | Adds sender-env attribute forwarding tests for when_all. |
| tests/beman/execution/exec-unstoppable.test.cpp | New tests validating unstoppable behavior and env attribute forwarding. |
| tests/beman/execution/exec-then.test.cpp | Adds sender-env attribute forwarding tests for then/upon_*. |
| tests/beman/execution/exec-task-scheduler.test.cpp | Adds forward progress query for scheduler test type. |
| tests/beman/execution/exec-stopped-opt.test.cpp | Updates includes and adds attribute forwarding tests for stopped_as_optional. |
| tests/beman/execution/exec-stopped-err.test.cpp | Updates includes and adds attribute forwarding tests for stopped_as_error. |
| tests/beman/execution/exec-stop-when.test.cpp | Updates includes and adds attribute forwarding tests for stop_when. |
| tests/beman/execution/exec-starts-on.test.cpp | Adds import std path, forward progress query, and attribute forwarding tests for starts_on. |
| tests/beman/execution/exec-spawn.test.cpp | Updates includes for import std configuration. |
| tests/beman/execution/exec-spawn-future.test.cpp | Updates includes and adds attribute forwarding tests for spawn_future. |
| tests/beman/execution/exec-snd-expos.test.cpp | Expands exposition-only tests (e.g., SET-VALUE macro, completion domain checks, data_type). |
| tests/beman/execution/exec-schedule-from.test.cpp | New tests for schedule_from and its env attribute forwarding expectations. |
| tests/beman/execution/exec-sched.test.cpp | Adds infallible scheduler include and forward progress queries across scheduler test types. |
| tests/beman/execution/exec-recv-concepts.test.cpp | Adds negative receiver concept cases (non-receiver, final receiver) to match updated receiver constraints. |
| tests/beman/execution/exec-read-env.test.cpp | Adds compile-time type-check coverage for read_env implementation constraints. |
| tests/beman/execution/exec-queryable-concept.test.cpp | New tests for queryable concept behavior. |
| tests/beman/execution/exec-on.test.cpp | Updates includes and adds attribute forwarding tests for on. |
| tests/beman/execution/exec-let.test.cpp | Updates includes and adds attribute forwarding tests for let_* adaptors. |
| tests/beman/execution/exec-into-variant.test.cpp | Updates includes and adds attribute forwarding tests for into_variant. |
| tests/beman/execution/exec-inline-scheduler.test.cpp | Adds forward progress query to scheduler test types. |
| tests/beman/execution/exec-get-stop-token.test.cpp | Strengthens noexcept expectations for get_stop_token. |
| tests/beman/execution/exec-get-start-scheduler.test.cpp | Adds test coverage and noexcept checks for get_start_scheduler. |
| tests/beman/execution/exec-get-scheduler.test.cpp | Adds noexcept checks and forward progress query to scheduler type used in tests. |
| tests/beman/execution/exec-get-env.test.cpp | Adds noexcept checks for get_env across multiple cases. |
| tests/beman/execution/exec-get-domain.test.cpp | Adds noexcept expectation and additional domain-return-type checks. |
| tests/beman/execution/exec-get-delegation-scheduler.test.cpp | Improves test assertions and adds noexcept checks for get_delegation_scheduler. |
| tests/beman/execution/exec-get-compl-sched.test.cpp | Expands completion scheduler test coverage, including env overload forms. |
| tests/beman/execution/exec-get-compl-domain.test.cpp | Updates module imports/includes and strengthens forwarding-query expectations in tests. |
| tests/beman/execution/exec-get-allocator.test.cpp | Adds noexcept checking for get_allocator where applicable. |
| tests/beman/execution/exec-general.test.cpp | Adds section references in comments to align tests with spec paragraphs. |
| tests/beman/execution/exec-fwd-env.test.cpp | Adds noexcept coverage for forwarding_query checks. |
| tests/beman/execution/exec-continues-on.test.cpp | Updates includes and adds attribute forwarding tests for continues_on. |
| tests/beman/execution/exec-cmplsigs.test.cpp | New tests for completion signatures utilities (value_types_of_t, error_types_of_t, sends_stopped, etc.). |
| tests/beman/execution/exec-bulk.test.cpp | Updates includes and adds attribute forwarding tests for bulk* adaptors. |
| tests/beman/execution/exec-associate.test.cpp | Updates includes and adds attribute forwarding tests for associate. |
| tests/beman/execution/exec-affine.test.cpp | Updates includes and adds attribute forwarding tests for affine. |
| tests/beman/execution/CMakeLists.txt | Registers new/renamed tests in the test build. |
| src/beman/execution/query_with_default.cppm | Adjusts exports (drops call_with_default export from this module). |
| src/beman/execution/fwd_env.cppm | Exports fwd_env_t via module interface. |
| src/beman/execution/execution-detail.cppm | Adds data_type to the exported detail module set. |
| src/beman/execution/data_type.cppm | New module interface for data_type. |
| src/beman/execution/CMakeLists.txt | Adds new headers/modules (call_with_default, data_type) to build sources. |
| src/beman/execution/call_with_default.cppm | New module interface for call_with_default. |
| README.md | Updates the Compiler Explorer link. |
| include/beman/execution/execution.hpp | Removes direct import of execution_policy (likely reorganized exposure). |
| include/beman/execution/detail/task_scheduler.hpp | Imports/includes call_with_default and uses it to obtain completion schedulers. |
| include/beman/execution/detail/starts_on.hpp | Adds env query forwarding via fwd_env for tag queries. |
| include/beman/execution/detail/set_value.hpp | Introduces BEMAN_EXECUTION_SET_VALUE macro to handle void/non-void expressions. |
| include/beman/execution/detail/scheduler.hpp | Strengthens scheduler concept by requiring get_forward_progress_guarantee. |
| include/beman/execution/detail/receiver.hpp | Tightens receiver concept to require nothrow move construction. |
| include/beman/execution/detail/read_env.hpp | Adds data_type usage and new compile-time check_types hook in impls. |
| include/beman/execution/detail/query_with_default.hpp | Removes call_with_default from this header (moved to its own header/module). |
| include/beman/execution/detail/operation_state_task.hpp | Deletes move constructor, changing operation state movability semantics. |
| include/beman/execution/detail/on.hpp | Uses call_with_default and updates includes for non-modules builds. |
| include/beman/execution/detail/inline_scheduler.hpp | Adds forward progress query and updates imports/includes ordering. |
| include/beman/execution/detail/get_start_scheduler.hpp | Tightens requires-clause to ensure returned type models scheduler. |
| include/beman/execution/detail/get_forward_progress_guarantee.hpp | Restricts CPO to almost_scheduler and removes fallback default overload. |
| include/beman/execution/detail/get_delegation_scheduler.hpp | Tightens requires-clause to ensure returned type models scheduler. |
| include/beman/execution/detail/fwd_env.hpp | Adds fwd_env_t alias for the forwarded-environment type. |
| include/beman/execution/detail/default_impls.hpp | Adds a check_types hook for impl customization points. |
| include/beman/execution/detail/data_type.hpp | New exposition-only helper to extract sender “data” type from tuple-like sender representation. |
| include/beman/execution/detail/completion_signatures.hpp | Adds exposition-only helpers (count_of, for_each) to completion signature lists. |
| include/beman/execution/detail/compl_domain.hpp | Changes default completion domain fallback to indeterminate_domain(). |
| include/beman/execution/detail/call_with_default.hpp | New header providing exposition-only call_with_default utility. |
| include/beman/execution/detail/as_except_ptr.hpp | Adds a TODO note about preconditions. |
| docs/overview.md | Large documentation expansion/edits aligning spec wording, adding new sections/details. |
| docs/implementation-status.md | New implementation-status tracking document for spec coverage (implemented/tested/documented). |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| template <typename Env> | ||
| requires requires(const get_start_scheduler_t& self, const Env& env) { env.query(self); } | ||
| requires requires(const get_start_scheduler_t& self, const Env& env) { | ||
| { auto(::std::as_const(env).query(self)) } noexcept -> beman::execution::scheduler; |
Comment on lines
+40
to
+43
| template <typename Tag> | ||
| static constexpr bool count_of(Tag) { | ||
| return (::std::same_as<typename completion_signatures_tag<Signatures>::type, Tag> + ... + 0); | ||
| } |
| template <typename Env> | ||
| requires requires(Env&& env, const get_delegation_scheduler_t& g) { | ||
| { ::std::as_const(env).query(g) } noexcept -> ::beman::execution::scheduler; | ||
| { auto(::std::as_const(env).query(g)) } noexcept -> ::beman::execution::scheduler; |
Comment on lines
+86
to
+94
| template <typename Sndr, typename Env> | ||
| static consteval void check_types() { | ||
| using query_type = ::std::decay_t<::beman::execution::detail::data_type<Sndr>>; | ||
| if constexpr (!requires(const Env& env) { query_type()(env); }) { | ||
| throw ::std::logic_error("query is not invocable with the environment of the receiver"); | ||
| } else if constexpr (::std::same_as<::std::invoke_result_t<query_type, const Env&>, void>) { | ||
| throw ::std::logic_error("query returns void with the environment of the receiver"); | ||
| } | ||
| } |
Comment on lines
+59
to
+62
| template <test_std::receiver Receiver> | ||
| auto connect(Receiver&&) && noexcept { | ||
| return test_std::connect(test_std::just(), std::forward<Receiver>(Receiver{})); | ||
| } |
Comment on lines
+31
to
+34
| test::test_sender_env<true>(84, test::test_non_forwardable_attr{}, s); | ||
| test::test_sender_env<true>(42, test::test_forwardable_attr{}, test_std::schedule_from(s)); | ||
| test::test_sender_env<false>(84, test::test_non_forwardable_attr{}, test_std::write_env(s)); | ||
| } |
Comment on lines
+142
to
+148
| template <typename Tag, typename... Env> | ||
| requires requires(const Tag& tag, const ChildAttrs& child_attrs, Env&&... env) { | ||
| tag(::beman::execution::detail::fwd_env(child_attrs), ::std::forward<Env>(env)...); | ||
| } | ||
| auto query(Tag tag, Env&&... env) const noexcept { | ||
| return tag(::beman::execution::detail::fwd_env(this->child_attrs), ::std::forward<Env>(env)...); | ||
| } |
Comment on lines
+17
to
+22
| template <typename Tag, typename DefaultValue, typename Env, typename... Args> | ||
| requires requires(const Tag& tag, const Env& env, Args&&... args) { tag(env, ::std::forward<Args>(args)...); } | ||
| constexpr auto call_with_default(Tag, DefaultValue&&, const Env& env, Args&&... args) noexcept( | ||
| noexcept(Tag()(env, ::std::forward<Args>(args)...))) -> decltype(auto) { | ||
| return Tag()(env, ::std::forward<Args>(args)...); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.