Skip to content

Update status - #306

Open
dietmarkuehl wants to merge 36 commits into
mainfrom
update-status
Open

Update status#306
dietmarkuehl wants to merge 36 commits into
mainfrom
update-status

Conversation

@dietmarkuehl

Copy link
Copy Markdown
Member

No description provided.

Copilot AI lite review requested due to automatic review settings August 9, 2026 14:04
@dietmarkuehl
dietmarkuehl requested a review from camio as a code owner August 9, 2026 14:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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., scheduler now requires get_forward_progress_guarantee, receiver requires nothrow move construction, additions around get_start_scheduler/get_delegation_scheduler, read_env type checking).
  • Adds new exposition-only helpers/modules (data_type, call_with_default, SET-VALUE macro) 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, new docs/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)...);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants