diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1a6f3146..e0cbb9cf 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,19 +1,15 @@ -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception - // For format details, see https://aka.ms/devcontainer.json. For config options, see the - // README at: https://github.com/devcontainers/templates/tree/main/src/cpp - - { - "name": "Beman Project Generic Devcontainer", - "build": { - "dockerfile": "Dockerfile" - }, - "postCreateCommand": "bash .devcontainer/postcreate.sh", - "customizations": { - "vscode": { - "extensions": [ - "ms-vscode.cpptools", - "ms-vscode.cmake-tools" - ] - } - } +{ + "name": "Beman Project Generic Devcontainer", + "build": { + "dockerfile": "Dockerfile" + }, + "postCreateCommand": "bash .devcontainer/postcreate.sh", + "customizations": { + "vscode": { + "extensions": [ + "ms-vscode.cpptools", + "ms-vscode.cmake-tools" + ] } + } +} diff --git a/pre-commit.yml b/.github/workflows/pre-commit.yml similarity index 100% rename from pre-commit.yml rename to .github/workflows/pre-commit.yml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index db70bf25..bffa58ed 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,19 +4,21 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - # TODO: - id: trailing-whitespace - # TODO: - id: end-of-file-fixer - # FIXME: - id: check-yaml + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-json + - id: check-yaml + exclude: ^\.clang-(format|tidy)$ - id: check-added-large-files - # TODO: Clang-format for C++ # This brings in a portable version of clang-format. # See also: https://github.com/ssciwr/clang-format-wheel - # - repo: https://github.com/pre-commit/mirrors-clang-format - # rev: v19.1.4 - # hooks: - # - id: clang-format - # types_or: [c++, c, json] + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v19.1.4 + hooks: + - id: clang-format + types_or: [c++, c, json] + exclude: docs/TODO.json # TODO: CMake linting and formatting # - repo: https://github.com/BlankSpruce/gersemi diff --git a/docs/TODO.md b/docs/TODO.md index 5ce79912..a161b0d6 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,4 +1,4 @@ -# ToDo +# ToDo | Section | Code | Test | Doc | Comment | | ------- |:----:|:----:|:---:| ------- | diff --git a/docs/dependency.txt b/docs/dependency.txt index e6fea924..b88965b1 100644 --- a/docs/dependency.txt +++ b/docs/dependency.txt @@ -515,4 +515,4 @@ when_all_with_variant into_variant when_all_with_variant when_all with_awaitable_senders as_awaitable write_env make_sender -write_env queryable \ No newline at end of file +write_env queryable diff --git a/docs/overview.md b/docs/overview.md index 99d4384d..67fd7c07 100644 --- a/docs/overview.md +++ b/docs/overview.md @@ -20,7 +20,7 @@ When an asynchronous operation completes it _signals_ its completion by calling
environment The term _enviroment_ refers to the bag of properties associated with an _object_ by the call std::execution::get_env(_object_). By default the environment for objects is empty (std::execution::empty_env). In particular, environments associated with receivers are used to provide access to properties like the stop token, scheduler, or allocator associated with the receiver. The various properties associated with an object are accessed via queries. -
+ ## Concepts This section lists the concepts from `std::execution`. @@ -46,7 +46,7 @@ struct example_state { using operation_state_concept = std::execution::operation_state_t; std::remove_cvref_t receiver; - + auto start() & noexcept { std::execution::set_value(std::move(this->receiver)); } @@ -54,7 +54,7 @@ struct example_state static_assert(std::execution::operation_state>); ``` - +
receiver<Receiver> @@ -90,7 +90,7 @@ struct example_receiver { using receiver_concept = std::execution::receiver_t; std::remove_cvref_t nested; - + auto get_env() const noexcept { return std::execution::get_env(this->nested); } @@ -112,7 +112,7 @@ struct example_receiver static_assert(std::execution::receiver>); ``` -
+
receiver_of<Receiver, Completions> @@ -129,7 +129,7 @@ The example defines a simple receiver a struct example_receiver { using receiver_concept = std::execution::receiver_t; - + auto set_value(int) && noexcept ->void {} auto set_stopped() && noexcept ->void {} }; @@ -141,7 +141,7 @@ static_assert(std::execution::receiver_of); -// providing a superset of signal models models receiver_of: +// providing a superset of signal models models receiver_of: static_assert(std::execution::receiver_of; - + int value{}; template auto connect(Receiver&& receiver) const -> state { @@ -238,7 +238,7 @@ To determine if _Receiver_ can receive all sends_stopped<Sender, Env = std::execution::empty_env> -The concept sends_stopped<Sender, Env> determines if _Sender_ may send a stopped completion signal. To do so, the concepts determines if std::execution::get_completion_signals(_sender_, _env_) contains the signatures std::execution::set_stopped_t(). +The concept sends_stopped<Sender, Env> determines if _Sender_ may send a stopped completion signal. To do so, the concepts determines if std::execution::get_completion_signals(_sender_, _env_) contains the signatures std::execution::set_stopped_t().
stoppable_token<_Token_> @@ -284,7 +284,7 @@ void compute(std::stoppable_token auto token) Example: inactive
This example shows how an operation_state can use the callback_type together with a _token_ to get notified when cancellation is requested. - + ```c++ template struct example_state @@ -328,7 +328,7 @@ struct example_state std::execution::set_value(std::move(this->receiver)); } } -}; +}; ```
diff --git a/docs/questions.md b/docs/questions.md index fd070514..7e120b04 100644 --- a/docs/questions.md +++ b/docs/questions.md @@ -49,4 +49,4 @@ likely observable. - [exec.when.all] uses on-stop-request without saying what it actually does. most likely on-stop-request is supposed to call stop_src.request_stop - [exec.when.all] p11.1 uses a non-existing conversion for tuple to implement its "tie" - actually, that one may be new in C++23! \ No newline at end of file + actually, that one may be new in C++23! diff --git a/examples/doc-just.cpp b/examples/doc-just.cpp index f62298ab..fc5f5aba 100644 --- a/examples/doc-just.cpp +++ b/examples/doc-just.cpp @@ -11,4 +11,4 @@ int main() { auto result = ex::sync_wait(ex::just(17, "hello"s, true)); assert(result); assert(*result == std::tuple(17, "hello"s, true)); -} \ No newline at end of file +} diff --git a/examples/doc-just_error.cpp b/examples/doc-just_error.cpp index 54771202..3a790e52 100644 --- a/examples/doc-just_error.cpp +++ b/examples/doc-just_error.cpp @@ -14,4 +14,4 @@ int main() { had_error = true; })); assert(had_error); -} \ No newline at end of file +} diff --git a/examples/doc-just_stopped.cpp b/examples/doc-just_stopped.cpp index a7cc8a77..cd7fdd72 100644 --- a/examples/doc-just_stopped.cpp +++ b/examples/doc-just_stopped.cpp @@ -12,4 +12,4 @@ int main() { auto result = ex::sync_wait(ex::just_stopped() | ex::upon_stopped([&] { stopped = true; })); assert(stopped); -} \ No newline at end of file +} diff --git a/examples/playground.cpp b/examples/playground.cpp index eb8a343b..472d57a1 100644 --- a/examples/playground.cpp +++ b/examples/playground.cpp @@ -10,10 +10,9 @@ namespace ex = ::beman::execution26; // ---------------------------------------------------------------------------- -int main() -{ +int main() { auto [result] = ex::sync_wait(ex::when_all(ex::just(std::string("hello, ")), ex::just(std::string("world"))) | ex::then([](const auto& s1, const auto& s2) { return s1 + s2; })) .value_or(std::tuple(std::string("oops"))); std::cout << "result='" << result << "'\n"; -} \ No newline at end of file +} diff --git a/examples/stop_token.cpp b/examples/stop_token.cpp index aa74aa41..33f36639 100644 --- a/examples/stop_token.cpp +++ b/examples/stop_token.cpp @@ -46,8 +46,8 @@ namespace exec = beman::execution26; // - std::print isn't available everywhere, yet. Let's try a simple // placeholder. namespace { -::std::mutex io_lock; -void print(std::string_view text, auto&&...) { +::std::mutex io_lock; +void print(std::string_view text, auto&&...) { const std::lock_guard guard(io_lock); ::std::cout << text; } @@ -71,7 +71,7 @@ struct stop_callback_for_t { #ifdef __cpp_lib_latch template auto inactive(const Token& token) -> void { - ::std::latch latch(1); + ::std::latch latch(1); const stop_callback_for_t cb(token, [&latch] { latch.count_down(); }); latch.wait(); diff --git a/include/beman/execution26/detail/atomic_intrusive_stack.hpp b/include/beman/execution26/detail/atomic_intrusive_stack.hpp index e579c4dc..445c1fb8 100644 --- a/include/beman/execution26/detail/atomic_intrusive_stack.hpp +++ b/include/beman/execution26/detail/atomic_intrusive_stack.hpp @@ -31,7 +31,7 @@ class atomic_intrusive_stack; //! //! @tparam Item The type of the item in the stack. //! @tparam Next The pointer to the next item in the stack. -template +template class atomic_intrusive_stack { public: atomic_intrusive_stack() = default; @@ -85,4 +85,4 @@ class atomic_intrusive_stack { } // namespace beman::execution26::detail -#endif \ No newline at end of file +#endif diff --git a/include/beman/execution26/detail/awaitable_sender.hpp b/include/beman/execution26/detail/awaitable_sender.hpp index 0eeb9004..3de4e804 100644 --- a/include/beman/execution26/detail/awaitable_sender.hpp +++ b/include/beman/execution26/detail/awaitable_sender.hpp @@ -19,4 +19,4 @@ concept awaitable_sender = }; } // namespace beman::execution26::detail -#endif \ No newline at end of file +#endif diff --git a/include/beman/execution26/detail/completion_signatures_of_t.hpp b/include/beman/execution26/detail/completion_signatures_of_t.hpp index a7d74fe5..d6d08770 100644 --- a/include/beman/execution26/detail/completion_signatures_of_t.hpp +++ b/include/beman/execution26/detail/completion_signatures_of_t.hpp @@ -20,7 +20,7 @@ template requires ::beman::execution26::sender_in using completion_signatures_of_t = ::beman::execution26::detail::call_result_t< ::beman::execution26::get_completion_signatures_t, Sender, Env>; -} +} // namespace beman::execution26 // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/completion_tag.hpp b/include/beman/execution26/detail/completion_tag.hpp index 8dca471a..f1e64174 100644 --- a/include/beman/execution26/detail/completion_tag.hpp +++ b/include/beman/execution26/detail/completion_tag.hpp @@ -21,7 +21,7 @@ template concept completion_tag = ::std::same_as || ::std::same_as || ::std::same_as; -} +} // namespace beman::execution26::detail // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/connect_all_result.hpp b/include/beman/execution26/detail/connect_all_result.hpp index b9c3b110..109bf06e 100644 --- a/include/beman/execution26/detail/connect_all_result.hpp +++ b/include/beman/execution26/detail/connect_all_result.hpp @@ -23,7 +23,7 @@ using connect_all_result = ::beman::execution26::detail::basic_state*, Sender, ::beman::execution26::detail::indices_for >; -} +} // namespace beman::execution26::detail // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/decayed_tuple.hpp b/include/beman/execution26/detail/decayed_tuple.hpp index 5c11d271..bd071fbd 100644 --- a/include/beman/execution26/detail/decayed_tuple.hpp +++ b/include/beman/execution26/detail/decayed_tuple.hpp @@ -17,7 +17,7 @@ namespace beman::execution26::detail { */ template using decayed_tuple = ::std::tuple<::std::decay_t...>; -} +} // namespace beman::execution26::detail // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/decayed_typeof.hpp b/include/beman/execution26/detail/decayed_typeof.hpp index fad49e25..602a6132 100644 --- a/include/beman/execution26/detail/decayed_typeof.hpp +++ b/include/beman/execution26/detail/decayed_typeof.hpp @@ -16,7 +16,7 @@ namespace beman::execution26::detail { */ template using decayed_typeof = ::std::decay_t; -} +} // namespace beman::execution26::detail // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/decays_to.hpp b/include/beman/execution26/detail/decays_to.hpp index 9cf1d4a6..98deb351 100644 --- a/include/beman/execution26/detail/decays_to.hpp +++ b/include/beman/execution26/detail/decays_to.hpp @@ -17,7 +17,7 @@ namespace beman::execution26::detail { */ template concept decays_to = ::std::same_as<::std::decay_t, To>; -} +} // namespace beman::execution26::detail // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/env_of_t.hpp b/include/beman/execution26/detail/env_of_t.hpp index 4e002d6f..11390919 100644 --- a/include/beman/execution26/detail/env_of_t.hpp +++ b/include/beman/execution26/detail/env_of_t.hpp @@ -16,7 +16,7 @@ namespace beman::execution26 { */ template using env_of_t = decltype(::beman::execution26::get_env(::std::declval())); -} +} // namespace beman::execution26 // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/env_type.hpp b/include/beman/execution26/detail/env_type.hpp index 7d5b4e19..f0da379f 100644 --- a/include/beman/execution26/detail/env_type.hpp +++ b/include/beman/execution26/detail/env_type.hpp @@ -24,7 +24,7 @@ using env_type = ::beman::execution26::detail::call_result_t< Index, ::beman::execution26::detail::state_type&, const Receiver&>; -} +} // namespace beman::execution26::detail // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/error_types_of_t.hpp b/include/beman/execution26/detail/error_types_of_t.hpp index 5503d2e8..b9d47f71 100644 --- a/include/beman/execution26/detail/error_types_of_t.hpp +++ b/include/beman/execution26/detail/error_types_of_t.hpp @@ -28,7 +28,7 @@ using error_types_of_t = ::beman::execution26::completion_signatures_of_t, ::std::type_identity_t, Variant>; -} +} // namespace beman::execution26 // ---------------------------------------------------------------------------- diff --git a/include/beman/execution26/detail/get_completion_signatures.hpp b/include/beman/execution26/detail/get_completion_signatures.hpp index 24dc7342..8cf764fe 100644 --- a/include/beman/execution26/detail/get_completion_signatures.hpp +++ b/include/beman/execution26/detail/get_completion_signatures.hpp @@ -55,9 +55,9 @@ struct get_completion_signatures_t { public: template - requires(not ::std::same_as(), - ::std::declval()))>) + requires(not::std::same_as(), + ::std::declval()))>) auto operator()(Sender&& sender, Env&& env) const noexcept { return this->get(::std::forward(sender), ::std::forward(env)); } @@ -67,4 +67,4 @@ inline constexpr get_completion_signatures_t get_completion_signatures{}; // ---------------------------------------------------------------------------- -#endif \ No newline at end of file +#endif diff --git a/include/beman/execution26/detail/inplace_stop_source.hpp b/include/beman/execution26/detail/inplace_stop_source.hpp index 609da36b..970c70e1 100644 --- a/include/beman/execution26/detail/inplace_stop_source.hpp +++ b/include/beman/execution26/detail/inplace_stop_source.hpp @@ -85,7 +85,7 @@ class beman::execution26::inplace_stop_callback final template inplace_stop_callback(::beman::execution26::inplace_stop_token, Init&&); inplace_stop_callback(const inplace_stop_callback&) = delete; - inplace_stop_callback(inplace_stop_callback&&) = delete; + inplace_stop_callback(inplace_stop_callback&&) = delete; ~inplace_stop_callback() { if (this->source) { this->source->deregister(this); diff --git a/include/beman/execution26/detail/intrusive_stack.hpp b/include/beman/execution26/detail/intrusive_stack.hpp index 4ee89ffb..172d7d1c 100644 --- a/include/beman/execution26/detail/intrusive_stack.hpp +++ b/include/beman/execution26/detail/intrusive_stack.hpp @@ -16,7 +16,7 @@ template class intrusive_stack; //! @brief This data structure is an intrusive queue that is not thread-safe. -template +template class intrusive_stack { public: //! @brief Pushes an item to the queue. @@ -44,4 +44,4 @@ class intrusive_stack { } // namespace beman::execution26::detail -#endif \ No newline at end of file +#endif diff --git a/include/beman/execution26/detail/join_env.hpp b/include/beman/execution26/detail/join_env.hpp index f61852e6..6bd6a0de 100644 --- a/include/beman/execution26/detail/join_env.hpp +++ b/include/beman/execution26/detail/join_env.hpp @@ -25,9 +25,7 @@ class join_env { requires(Env1&, const Query& query, Args&&... args) { env1.query(query, ::std::forward(args)...); } || - requires(Env2& e2, const Query& query, Args&&... args) { - e2.query(query, ::std::forward(args)...); - }) + requires(Env2& e2, const Query& query, Args&&... args) { e2.query(query, ::std::forward(args)...); }) auto query(const Query& query, Args&&... args) noexcept -> decltype(auto) { if constexpr (requires { env1.query(query, ::std::forward(args)...); }) { return env1.query(query, ::std::forward(args)...); diff --git a/include/beman/execution26/detail/just.hpp b/include/beman/execution26/detail/just.hpp index 13188155..8296e87d 100644 --- a/include/beman/execution26/detail/just.hpp +++ b/include/beman/execution26/detail/just.hpp @@ -108,15 +108,15 @@ using just_stopped_t = ::beman::execution26::detail::just_t<::beman::execution26 * } * */ -inline constexpr ::beman::execution26::just_t just{}; +inline constexpr ::beman::execution26::just_t just{}; /*! * \brief just_error(_error_) yields a sender completing with set_error_t(_Error_) * \headerfile beman/execution26/execution.hpp * * \details - * `just_error` is a callable object of type `just_error_t`. Invoking just_error(_error_) yields a sender which - * stores its argument and produces an error completion with this error when started. This sender completes + * `just_error` is a callable object of type `just_error_t`. Invoking just_error(_error_) yields a sender + * which stores its argument and produces an error completion with this error when started. This sender completes * synchronously when started. * *

Usage

@@ -145,10 +145,9 @@ inline constexpr ::beman::execution26::just_t just{}; * uses that as the input for `upon_error` consuming the error and producing * a value completion: using sync_wait(just_error(_error_)) * directly doesn't work because `sync_wait` requires exactly one value completion - * from its argument and `set_error` only has an error completion. The function used with `upon_error` verifies that the - * expected code was produced and also sets the flag `had_error` indicating it - * was called at all. This flag is checked after waiting for the result - * in `sync_wait`. + * from its argument and `set_error` only has an error completion. The function used with `upon_error` verifies that + * the expected code was produced and also sets the flag `had_error` indicating it was called at all. This flag is + * checked after waiting for the result in `sync_wait`. * *
  * #include 
@@ -167,16 +166,15 @@ inline constexpr ::beman::execution26::just_t         just{};
  * }
  * 
*/ -inline constexpr ::beman::execution26::just_error_t just_error{}; +inline constexpr ::beman::execution26::just_error_t just_error{}; /*! * \brief just_stopped(_) yields a sender completing with set_stopped_t() * \headerfile beman/execution26/execution.hpp * * \details - * `just_stopped` is a callable object of type `just_stopped_t`. Invoking just_stopped() yields a sender which - * produces a cancellation completion when started. This sender completes - * synchronously when started. + * `just_stopped` is a callable object of type `just_stopped_t`. Invoking just_stopped() yields a sender + * which produces a cancellation completion when started. This sender completes synchronously when started. * *

Usage

*
@@ -200,7 +198,7 @@ inline constexpr ::beman::execution26::just_error_t   just_error{};
  * uses that as the input for `upon_stopped` consuming the cancellation and producing
  * a value completion: using sync_wait(just_stopped())
  * directly doesn't work because `sync_wait` requires exactly one value completion
- * from its argument and `set_stopped` only has a cancellation completion. The function used with `upon_stopped` 
+ * from its argument and `set_stopped` only has a cancellation completion. The function used with `upon_stopped`
  * sets the flag `had_stopped` indicating it
  * was called at all. This flag is checked after waiting for the result
  * in `sync_wait`.
diff --git a/include/beman/execution26/detail/run_loop.hpp b/include/beman/execution26/detail/run_loop.hpp
index 1f6b47cf..560a2024 100644
--- a/include/beman/execution26/detail/run_loop.hpp
+++ b/include/beman/execution26/detail/run_loop.hpp
@@ -117,9 +117,9 @@ class run_loop {
     }
 
   public:
-    run_loop() noexcept  = default;
+    run_loop() noexcept       = default;
     run_loop(const run_loop&) = delete;
-    run_loop(run_loop&&) = delete;
+    run_loop(run_loop&&)      = delete;
     ~run_loop() {
         ::std::lock_guard guard(this->mutex);
         if (this->front != nullptr || this->current_state == state::running)
diff --git a/include/beman/execution26/detail/schedule_from.hpp b/include/beman/execution26/detail/schedule_from.hpp
index 6f053561..b0ac6e20 100644
--- a/include/beman/execution26/detail/schedule_from.hpp
+++ b/include/beman/execution26/detail/schedule_from.hpp
@@ -81,7 +81,7 @@ struct impls_for<::beman::execution26::detail::schedule_from_t> : ::beman::execu
             try {
                 ::std::visit(
                     [this](Tuple& result) noexcept -> void {
-                        if constexpr (not ::std::same_as<::std::monostate, Tuple>) {
+                        if constexpr (not::std::same_as<::std::monostate, Tuple>) {
                             ::std::apply(
                                 [this](auto&& tag, auto&&... args) {
                                     tag(::std::move(this->state->receiver), ::std::move(args)...);
diff --git a/include/beman/execution26/detail/sender_awaitable.hpp b/include/beman/execution26/detail/sender_awaitable.hpp
index 36660fa4..cfaa013a 100644
--- a/include/beman/execution26/detail/sender_awaitable.hpp
+++ b/include/beman/execution26/detail/sender_awaitable.hpp
@@ -90,4 +90,4 @@ class sender_awaitable {
 };
 } // namespace beman::execution26::detail
 
-#endif
\ No newline at end of file
+#endif
diff --git a/include/beman/execution26/detail/split.hpp b/include/beman/execution26/detail/split.hpp
index 4c38418c..477164a8 100644
--- a/include/beman/execution26/detail/split.hpp
+++ b/include/beman/execution26/detail/split.hpp
@@ -246,7 +246,7 @@ struct impls_for : ::beman::execution26::detail::default_impls {
                 try {
                     ::std::visit(
                         [&](const Arg& arg) noexcept -> void {
-                            if constexpr (not ::std::same_as<::std::decay_t, ::std::monostate>) {
+                            if constexpr (not::std::same_as<::std::decay_t, ::std::monostate>) {
                                 ::std::apply(
                                     [&](auto tag, const auto&... args) noexcept -> void {
                                         tag(::std::move(*receiver), args...);
diff --git a/include/beman/execution26/detail/stop_source.hpp b/include/beman/execution26/detail/stop_source.hpp
index 0ed9c7c1..acaa579c 100644
--- a/include/beman/execution26/detail/stop_source.hpp
+++ b/include/beman/execution26/detail/stop_source.hpp
@@ -144,7 +144,7 @@ class beman::execution26::stop_callback final : private CallbackFun, beman::exec
         this->setup();
     }
     stop_callback(const stop_callback&) = delete;
-    stop_callback(stop_callback&&) = delete;
+    stop_callback(stop_callback&&)      = delete;
     ~stop_callback() { this->deregister(); }
     auto operator=(stop_callback&&) -> stop_callback&      = delete;
     auto operator=(const stop_callback&) -> stop_callback& = delete;
diff --git a/include/beman/execution26/detail/suppress_pop.hpp b/include/beman/execution26/detail/suppress_pop.hpp
index 562a323e..1ae33d58 100644
--- a/include/beman/execution26/detail/suppress_pop.hpp
+++ b/include/beman/execution26/detail/suppress_pop.hpp
@@ -11,4 +11,4 @@
 #pragma clang diagnostic pop
 #endif
 #undef BEMAN_EXECUTION26_DIAGNOSTIC_PUSHED
-#endif
\ No newline at end of file
+#endif
diff --git a/include/beman/execution26/detail/suppress_push.hpp b/include/beman/execution26/detail/suppress_push.hpp
index f81bcd76..aba7e80c 100644
--- a/include/beman/execution26/detail/suppress_push.hpp
+++ b/include/beman/execution26/detail/suppress_push.hpp
@@ -16,4 +16,4 @@
 #pragma clang diagnostic ignored "-Wunknown-warning-option"
 #pragma clang diagnostic ignored "-Wmissing-braces"
 #pragma clang diagnostic ignored "-Wc++26-extensions"
-#endif
\ No newline at end of file
+#endif
diff --git a/include/beman/execution26/detail/unspecified_promise.hpp b/include/beman/execution26/detail/unspecified_promise.hpp
index e22ddff2..5f18c9a5 100644
--- a/include/beman/execution26/detail/unspecified_promise.hpp
+++ b/include/beman/execution26/detail/unspecified_promise.hpp
@@ -17,4 +17,4 @@ struct unspecified_promise {
 };
 } // namespace beman::execution26::detail
 
-#endif
\ No newline at end of file
+#endif
diff --git a/include/beman/execution26/detail/with_awaitable_senders.hpp b/include/beman/execution26/detail/with_awaitable_senders.hpp
index e86817f5..790457c0 100644
--- a/include/beman/execution26/detail/with_awaitable_senders.hpp
+++ b/include/beman/execution26/detail/with_awaitable_senders.hpp
@@ -47,4 +47,4 @@ struct with_awaitable_senders {
 
 } // namespace beman::execution26
 
-#endif
\ No newline at end of file
+#endif
diff --git a/src/beman/execution26/execution.cpp b/src/beman/execution26/execution.cpp
index 14b64107..5677512b 100644
--- a/src/beman/execution26/execution.cpp
+++ b/src/beman/execution26/execution.cpp
@@ -4,4 +4,4 @@
 
 namespace beman::execution26 {
 int version{000};
-}
\ No newline at end of file
+}
diff --git a/tests/beman/execution26/exec-connect.test.cpp b/tests/beman/execution26/exec-connect.test.cpp
index 4b23ec1b..5c5ef2e6 100644
--- a/tests/beman/execution26/exec-connect.test.cpp
+++ b/tests/beman/execution26/exec-connect.test.cpp
@@ -24,7 +24,7 @@ struct state {
     template 
     state(int value, R&& r) : value(value), receiver(std::forward(r)) {}
     state(const state&)                    = delete;
-    state(state&&) = delete;
+    state(state&&)                         = delete;
     ~state()                               = default;
     auto operator=(const state&) -> state& = delete;
     auto operator=(state&&) -> state&      = delete;
@@ -47,7 +47,7 @@ struct rvalue_sender {
 
     explicit rvalue_sender(int value) : value(value) {}
     rvalue_sender(const rvalue_sender&)                    = delete;
-    rvalue_sender(rvalue_sender&&) = default;
+    rvalue_sender(rvalue_sender&&)                         = default;
     auto operator=(const rvalue_sender&) -> rvalue_sender& = delete;
     auto operator=(rvalue_sender&&) -> rvalue_sender&      = default;
     ~rvalue_sender()                                       = default;
@@ -105,7 +105,7 @@ struct domain_receiver {
     int value{};
 
     explicit domain_receiver(int value) : value(value) {}
-    domain_receiver(domain_receiver&&)                    = default;
+    domain_receiver(domain_receiver&&)                         = default;
     domain_receiver(const domain_receiver&)                    = delete;
     ~domain_receiver()                                         = default;
     auto operator=(domain_receiver&&) -> domain_receiver&      = default;
diff --git a/tests/beman/execution26/exec-general.test.cpp b/tests/beman/execution26/exec-general.test.cpp
index a433cd09..5b71ea8b 100644
--- a/tests/beman/execution26/exec-general.test.cpp
+++ b/tests/beman/execution26/exec-general.test.cpp
@@ -15,15 +15,15 @@ struct error {
 };
 
 struct non_movable {
-    non_movable(non_movable&&) = delete;
+    non_movable(non_movable&&)                         = delete;
     non_movable(const non_movable&)                    = delete;
     ~non_movable()                                     = default;
     auto operator=(non_movable&&) -> non_movable&      = delete;
     auto operator=(const non_movable&) -> non_movable& = delete;
 };
 struct non_copyable {
-    non_copyable(non_copyable&&)      = default;
-    non_copyable(const non_copyable&) = delete;
+    non_copyable(non_copyable&&)                         = default;
+    non_copyable(const non_copyable&)                    = delete;
     ~non_copyable()                                      = default;
     auto operator=(non_copyable&&) -> non_copyable&      = default;
     auto operator=(const non_copyable&) -> non_copyable& = delete;
diff --git a/tests/beman/execution26/exec-just.test.cpp b/tests/beman/execution26/exec-just.test.cpp
index 3108e2d0..dd0fc7ce 100644
--- a/tests/beman/execution26/exec-just.test.cpp
+++ b/tests/beman/execution26/exec-just.test.cpp
@@ -16,9 +16,9 @@
 
 namespace {
 struct not_movable {
-    not_movable()              = default;
+    not_movable()                                      = default;
     not_movable(const not_movable&)                    = delete;
-    not_movable(not_movable&&) = delete;
+    not_movable(not_movable&&)                         = delete;
     ~not_movable()                                     = default;
     auto operator=(const not_movable&) -> not_movable& = delete;
     auto operator=(not_movable&&) -> not_movable&      = delete;
@@ -173,10 +173,7 @@ struct counting_resource : std::pmr::memory_resource {
         ++this->count;
         return operator new(size);
     }
-    auto do_deallocate(void* p, std::size_t, std::size_t) -> void override
-    {
-        operator delete(p);
-    }
+    auto do_deallocate(void* p, std::size_t, std::size_t) -> void override { operator delete(p); }
     auto do_is_equal(const std::pmr::memory_resource& other) const noexcept -> bool override { return this == &other; }
 };
 auto test_just_allocator() -> void {
diff --git a/tests/beman/execution26/exec-let.test.cpp b/tests/beman/execution26/exec-let.test.cpp
index 6d890357..beb4efc5 100644
--- a/tests/beman/execution26/exec-let.test.cpp
+++ b/tests/beman/execution26/exec-let.test.cpp
@@ -72,7 +72,7 @@ auto test_let_value() {
 template 
 struct inline_resource : std::pmr::memory_resource {
     std::array buffer;
-    std::byte* next{+this->buffer};
+    std::byte*                  next{+this->buffer};
 
     void* do_allocate(std::size_t size, std::size_t) override {
         if (size <= std::size_t(std::distance(next, std::end(buffer)))) {
diff --git a/tests/beman/execution26/exec-recv.test.cpp b/tests/beman/execution26/exec-recv.test.cpp
index b64c28ff..95f31356 100644
--- a/tests/beman/execution26/exec-recv.test.cpp
+++ b/tests/beman/execution26/exec-recv.test.cpp
@@ -37,19 +37,19 @@ struct no_get_env {
 };
 
 struct not_move_constructible {
-    using receiver_concept                                = test_std::receiver_t;
-    not_move_constructible()                              = default;
-    not_move_constructible(const not_move_constructible&) = default;
-    not_move_constructible(not_move_constructible&&)      = delete;
+    using receiver_concept                                                   = test_std::receiver_t;
+    not_move_constructible()                                                 = default;
+    not_move_constructible(const not_move_constructible&)                    = default;
+    not_move_constructible(not_move_constructible&&)                         = delete;
     ~not_move_constructible()                                                = default;
     auto operator=(const not_move_constructible&) -> not_move_constructible& = default;
     auto operator=(not_move_constructible&&) -> not_move_constructible&      = delete;
 };
 struct not_copy_constructible {
-    using receiver_concept                                = test_std::receiver_t;
-    not_copy_constructible()                              = default;
-    not_copy_constructible(const not_copy_constructible&) = delete;
-    not_copy_constructible(not_copy_constructible&&)      = default;
+    using receiver_concept                                                   = test_std::receiver_t;
+    not_copy_constructible()                                                 = default;
+    not_copy_constructible(const not_copy_constructible&)                    = delete;
+    not_copy_constructible(not_copy_constructible&&)                         = default;
     ~not_copy_constructible()                                                = default;
     auto operator=(const not_copy_constructible&) -> not_copy_constructible& = delete;
     auto operator=(not_copy_constructible&&) -> not_copy_constructible&      = default;
diff --git a/tests/beman/execution26/exec-sched.test.cpp b/tests/beman/execution26/exec-sched.test.cpp
index 07ddcaff..83f0b4bc 100644
--- a/tests/beman/execution26/exec-sched.test.cpp
+++ b/tests/beman/execution26/exec-sched.test.cpp
@@ -30,11 +30,11 @@ struct no_scheduler_concept {
 };
 
 struct not_queryable {
-    using scheduler_concept = test_std::scheduler_t;
+    using scheduler_concept                                = test_std::scheduler_t;
     not_queryable()                                        = default;
     not_queryable(const not_queryable&)                    = default;
     not_queryable(not_queryable&&)                         = default;
-    ~not_queryable()        = delete;
+    ~not_queryable()                                       = delete;
     auto operator=(const not_queryable&) -> not_queryable& = default;
     auto operator=(not_queryable&&) -> not_queryable&      = default;
     auto schedule() -> sender> { return {}; }
@@ -52,8 +52,8 @@ struct not_equality_comparable {
 };
 
 struct not_copy_constructible {
-    using scheduler_concept                               = test_std::scheduler_t;
-    not_copy_constructible(const not_copy_constructible&) = delete;
+    using scheduler_concept                                                  = test_std::scheduler_t;
+    not_copy_constructible(const not_copy_constructible&)                    = delete;
     not_copy_constructible(not_copy_constructible&&)                         = default;
     ~not_copy_constructible()                                                = default;
     auto operator=(const not_copy_constructible&) -> not_copy_constructible& = delete;
diff --git a/tests/beman/execution26/exec-snd-concepts.test.cpp b/tests/beman/execution26/exec-snd-concepts.test.cpp
index ebad148c..b6361519 100644
--- a/tests/beman/execution26/exec-snd-concepts.test.cpp
+++ b/tests/beman/execution26/exec-snd-concepts.test.cpp
@@ -121,7 +121,7 @@ auto test_sender_in() -> void {
         non_queryable()                                        = default;
         non_queryable(non_queryable&&)                         = default;
         non_queryable(const non_queryable&)                    = default;
-        ~non_queryable() = delete;
+        ~non_queryable()                                       = delete;
         auto operator=(non_queryable&&) -> non_queryable&      = default;
         auto operator=(const non_queryable&) -> non_queryable& = default;
     };
diff --git a/tests/beman/execution26/exec-with-awaitable-senders.test.cpp b/tests/beman/execution26/exec-with-awaitable-senders.test.cpp
index bf077e4c..35438909 100644
--- a/tests/beman/execution26/exec-with-awaitable-senders.test.cpp
+++ b/tests/beman/execution26/exec-with-awaitable-senders.test.cpp
@@ -77,4 +77,4 @@ TEST(exec_with_awaitable_senders) {
     test_sync_wait_awaitable();
     test_sync_wait_void_awaitable();
     test_mix_awaitable_and_sender().resume();
-}
\ No newline at end of file
+}
diff --git a/tests/beman/execution26/functional-syn.test.cpp b/tests/beman/execution26/functional-syn.test.cpp
index 294c4cc6..ed7afb64 100644
--- a/tests/beman/execution26/functional-syn.test.cpp
+++ b/tests/beman/execution26/functional-syn.test.cpp
@@ -19,7 +19,7 @@ struct non_destructible {
 struct non_copyable {
     non_copyable()                                       = default;
     non_copyable(const non_copyable&)                    = delete;
-    non_copyable(non_copyable&&) = delete;
+    non_copyable(non_copyable&&)                         = delete;
     ~non_copyable()                                      = default;
     auto operator=(const non_copyable&) -> non_copyable& = delete;
     auto operator=(non_copyable&&) -> non_copyable&      = delete;
diff --git a/tests/beman/execution26/include/test/stop_token.hpp b/tests/beman/execution26/include/test/stop_token.hpp
index 1e427621..189496a1 100644
--- a/tests/beman/execution26/include/test/stop_token.hpp
+++ b/tests/beman/execution26/include/test/stop_token.hpp
@@ -215,7 +215,7 @@ inline auto test::stop_callback_dtor_same_thread(Token token, Stop stop) -> void
         Base()                               = default;
         Base(Base&&)                         = default;
         Base(const Base&)                    = default;
-        virtual ~Base() = default;
+        virtual ~Base()                      = default;
         auto operator=(Base&&) -> Base&      = default;
         auto operator=(const Base&) -> Base& = default;
     };
diff --git a/tests/beman/execution26/stoptoken-concepts.test.cpp b/tests/beman/execution26/stoptoken-concepts.test.cpp
index 4c5cfa7d..8d2ff0b9 100644
--- a/tests/beman/execution26/stoptoken-concepts.test.cpp
+++ b/tests/beman/execution26/stoptoken-concepts.test.cpp
@@ -123,11 +123,11 @@ struct non_swappable {
     template 
     struct callback_type {};
 
-    non_swappable(const non_swappable&) noexcept               = default;
+    non_swappable(const non_swappable&) noexcept                    = default;
     non_swappable(non_swappable&&) noexcept                         = delete;
     ~non_swappable() noexcept                                       = default;
     auto operator=(const non_swappable&) noexcept -> non_swappable& = delete;
-    auto operator=(non_swappable&&) noexcept -> non_swappable& = delete;
+    auto operator=(non_swappable&&) noexcept -> non_swappable&      = delete;
     auto stop_requested() const noexcept -> bool;
     auto stop_possible() const noexcept -> bool;
     auto operator==(const non_swappable&) const -> bool = default;
diff --git a/tests/beman/execution26/stoptoken-mem.test.cpp b/tests/beman/execution26/stoptoken-mem.test.cpp
index 1c733b98..88600b4e 100644
--- a/tests/beman/execution26/stoptoken-mem.test.cpp
+++ b/tests/beman/execution26/stoptoken-mem.test.cpp
@@ -16,7 +16,7 @@ auto test_stop_token_swap() -> void {
     // - Then the tokens compare equal to the respective other member.
     // Reference: [stoptoken.mem] p1
 
-    ::test_std::stop_source s0, s1;
+    ::test_std::stop_source                 s0, s1;
     ::std::array<::test_std::stop_token, 2> pair0 = {s0.get_token(), s0.get_token()};
     ::std::array<::test_std::stop_token, 2> pair1 = {s1.get_token(), s1.get_token()};
 
diff --git a/tests/beman/execution26/stoptoken-never-general.test.cpp b/tests/beman/execution26/stoptoken-never-general.test.cpp
index 01fde390..56a6423c 100644
--- a/tests/beman/execution26/stoptoken-never-general.test.cpp
+++ b/tests/beman/execution26/stoptoken-never-general.test.cpp
@@ -8,7 +8,7 @@ TEST(stoptoken_never_general) {
     // Reference: [stoptoken.never.general]
     static_assert(::test_std::unstoppable_token<::test_std::never_stop_token>);
 
-    ::test_std::never_stop_token token;
+    ::test_std::never_stop_token       token;
     const ::test_std::never_stop_token other(token);
     static_assert(false == token.stop_requested());
     static_assert(false == token.stop_possible());
diff --git a/tests/beman/execution26/thread-stoptoken-intro.test.cpp b/tests/beman/execution26/thread-stoptoken-intro.test.cpp
index 6e176872..5fffd7b8 100644
--- a/tests/beman/execution26/thread-stoptoken-intro.test.cpp
+++ b/tests/beman/execution26/thread-stoptoken-intro.test.cpp
@@ -13,10 +13,10 @@ struct test_source : test_detail::immovable {
         callback_base()                                                = default;
         callback_base(callback_base&&)                                 = default;
         callback_base(const callback_base&)                            = default;
-        virtual ~callback_base()    = default;
+        virtual ~callback_base()                                       = default;
         auto         operator=(callback_base&&) -> callback_base&      = default;
         auto         operator=(const callback_base&) -> callback_base& = default;
-        virtual auto call() -> void = 0;
+        virtual auto call() -> void                                    = 0;
     };
     struct token {
         template