Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

created the infrastructure for concurrent queues #97

Draft
wants to merge 41 commits into
base: main
Choose a base branch
from

Conversation

dietmarkuehl
Copy link
Collaborator

No description provided.

@ClausKlein
Copy link
Collaborator

ClausKlein commented Dec 2, 2024

We need to active ENABLE_SANITIZER_THREAD too!

see #100

@dietmarkuehl
Copy link
Collaborator Author

I hope I didn't create any issues! However, I agree: TSAN should probably be run, too.

@ClausKlein
Copy link
Collaborator

Note: there are lots of warnings:

[204/400] Building CXX object tests/beman/execution26/CMakeFiles/beman.execution26.bounded-queue.test.dir/bounded-queue.test.cpp.o
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:149:27: warning: declaration shadows a field of 'bounded_queue<T, type-parameter-0-1>' [-Wshadow]
  149 |         push_sender_queue push_queue(std::move(this->push_queue));
      |                           ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:354:31: note: previous declaration is here
  354 |     push_sender_queue         push_queue;
      |                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:150:26: warning: declaration shadows a field of 'bounded_queue<T, type-parameter-0-1>' [-Wshadow]
  150 |         pop_sender_queue pop_queue(std::move(this->pop_queue));
      |                          ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:356:31: note: previous declaration is here
  356 |     pop_sender_queue          pop_queue;
      |                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:235:31: warning: unused parameter 'element' [-Wunused-parameter]
  235 |     auto construct(element_t* element, Args&&... args) {
      |                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:116:25: warning: declaration shadows a local variable [-Wshadow]
  116 |         std::error_code ec{};
      |                         ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:85:21: note: previous declaration is here
   85 |     std::error_code ec;
      |                     ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:145:25: warning: declaration shadows a local variable [-Wshadow]
  145 |         std::error_code ec{};
      |                         ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:85:21: note: previous declaration is here
   85 |     std::error_code ec;
      |                     ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:204:69: warning: unused parameter 'five' [-Wunused-parameter]
  204 | auto test_async_pop(auto one, auto two, auto three, auto four, auto five) -> void {
      |                                                                     ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:37:16: warning: 'beman::execution26::bounded_queue<int>::push_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   37 |         struct state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:231:96: note: in instantiation of member class 'beman::execution26::bounded_queue<int>::push_sender::state_base' requested here
  231 |     using push_sender_queue      = ::beman::execution26::detail::intrusive_queue<&push_sender::state_base::next>;
      |                                                                                                ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:27:79: note: in instantiation of template class 'beman::execution26::bounded_queue<int>' requested here
   27 | struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible : integral_constant<bool, __is_nothrow_destructible(_Tp)> {};
      |                                                                               ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:58:51: note: in instantiation of template class 'std::is_nothrow_destructible<beman::execution26::bounded_queue<int>>' requested here
   58 | inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible<_Tp>::value;
      |                                                   ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: in instantiation of variable template specialization 'std::is_nothrow_destructible_v<beman::execution26::bounded_queue<int>>' requested here
   26 | concept destructible = is_nothrow_destructible_v<_Tp>;
      |                        ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: while substituting template arguments into constraint expression here
   26 | concept destructible = is_nothrow_destructible_v<_Tp>;
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:27:30: note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
   27 | concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>;
      |                              ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while checking the satisfaction of concept 'constructible_from<beman::execution26::bounded_queue<int>, beman::execution26::bounded_queue<int>>' requested here
   39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while substituting template arguments into constraint expression here
   39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while checking the satisfaction of concept 'move_constructible<beman::execution26::bounded_queue<int>>' requested here
   29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while substituting template arguments into constraint expression here
   29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:281:23: note: while checking the satisfaction of concept 'movable<beman::execution26::bounded_queue<int>>' requested here
  281 |     static_assert(not std::movable<test_std::bounded_queue<int>>);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:85:16: warning: 'beman::execution26::bounded_queue<int>::pop_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   85 |         struct state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:232:95: note: in instantiation of member class 'beman::execution26::bounded_queue<int>::pop_sender::state_base' requested here
  232 |     using pop_sender_queue       = ::beman::execution26::detail::intrusive_queue<&pop_sender::state_base::next>;
      |                                                                                               ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:27:79: note: in instantiation of template class 'beman::execution26::bounded_queue<int>' requested here
   27 | struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible : integral_constant<bool, __is_nothrow_destructible(_Tp)> {};
      |                                                                               ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:58:51: note: in instantiation of template class 'std::is_nothrow_destructible<beman::execution26::bounded_queue<int>>' requested here
   58 | inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible<_Tp>::value;
      |                                                   ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: in instantiation of variable template specialization 'std::is_nothrow_destructible_v<beman::execution26::bounded_queue<int>>' requested here
   26 | concept destructible = is_nothrow_destructible_v<_Tp>;
      |                        ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: while substituting template arguments into constraint expression here
   26 | concept destructible = is_nothrow_destructible_v<_Tp>;
      |                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:27:30: note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
   27 | concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>;
      |                              ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while checking the satisfaction of concept 'constructible_from<beman::execution26::bounded_queue<int>, beman::execution26::bounded_queue<int>>' requested here
   39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while substituting template arguments into constraint expression here
   39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while checking the satisfaction of concept 'move_constructible<beman::execution26::bounded_queue<int>>' requested here
   29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while substituting template arguments into constraint expression here
   29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:281:23: note: while checking the satisfaction of concept 'movable<beman::execution26::bounded_queue<int>>' requested here
  281 |     static_assert(not std::movable<test_std::bounded_queue<int>>);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:37:16: warning: 'beman::execution26::bounded_queue<std::string>::push_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   37 |         struct state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:231:96: note: in instantiation of member class 'beman::execution26::bounded_queue<std::string>::push_sender::state_base' requested here
  231 |     using push_sender_queue      = ::beman::execution26::detail::intrusive_queue<&push_sender::state_base::next>;
      |                                                                                                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:16:32: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>' requested here
   16 |     test_std::bounded_queue<T> queue(1);
      |                                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:287:5: note: in instantiation of function template specialization '(anonymous namespace)::test_close<std::string, std::string, std::string>' requested here
  287 |     test_close<std::string>("one"s, "two"s);
      |     ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:85:16: warning: 'beman::execution26::bounded_queue<std::string>::pop_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   85 |         struct state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:232:95: note: in instantiation of member class 'beman::execution26::bounded_queue<std::string>::pop_sender::state_base' requested here
  232 |     using pop_sender_queue       = ::beman::execution26::detail::intrusive_queue<&pop_sender::state_base::next>;
      |                                                                                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:16:32: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>' requested here
   16 |     test_std::bounded_queue<T> queue(1);
      |                                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:287:5: note: in instantiation of function template specialization '(anonymous namespace)::test_close<std::string, std::string, std::string>' requested here
  287 |     test_close<std::string>("one"s, "two"s);
      |     ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:48:16: warning: 'beman::execution26::bounded_queue<int>::push_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   48 |         struct state : state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<int>::push_sender::state<receiver>' requested here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:173:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<int>::push_sender, receiver>' requested here
  173 |     auto op2{test_std::connect(std::move(s2), receiver{c2})}; // connect order also doesn't matter
      |              ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:295:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_push<int, int, int, int, int, int>' requested here
  295 |     test_async_push<int>(1, 2, 3, 4, 5);
      |     ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:48:16: warning: 'beman::execution26::bounded_queue<std::string>::push_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   48 |         struct state : state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>::push_sender::state<receiver>' requested here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:173:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<std::string>::push_sender, receiver>' requested here
  173 |     auto op2{test_std::connect(std::move(s2), receiver{c2})}; // connect order also doesn't matter
      |              ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:296:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_push<std::string, std::string, std::string, std::string, std::string, std::string>' requested here
  296 |     test_async_push<std::string>("one"s, "two"s, "three"s, "four"s, "five"s);
      |     ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:94:16: warning: 'beman::execution26::bounded_queue<int>::pop_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   94 |         struct state : state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<int>::pop_sender::state<receiver>' requested here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:228:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<int>::pop_sender, receiver>' requested here
  228 |     auto op4{test_std::connect(std::move(s4), receiver{c4, vals})};
      |              ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:297:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_pop<int, int, int, int, int, int>' requested here
  297 |     test_async_pop<int>(1, 2, 3, 4, 5);
      |     ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:94:16: warning: 'beman::execution26::bounded_queue<std::string>::pop_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
   94 |         struct state : state_base {
      |                ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>::pop_sender::state<receiver>' requested here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                               ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
   34 |         if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
      |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:228:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<std::string>::pop_sender, receiver>' requested here
  228 |     auto op4{test_std::connect(std::move(s4), receiver{c4, vals})};
      |              ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:298:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_pop<std::string, std::string, std::string, std::string, std::string, std::string>' requested here
  298 |     test_async_pop<std::string>("one"s, "two"s, "three"s, "four"s, "five"s);
      |     ^
14 warnings generated.
[290/400] Building CXX object examples/CMakeFiles/beman.execution26.examples.doc-just_error.dir/doc-just_error.cpp.o
/Users/clausklein/Workspace/cpp/beman-project/execution26/examples/doc-just_error.cpp:11:10: warning: unused variable 'result' [-Wunused-variable]
   11 |     auto result = ex::sync_wait(ex::just_error(std::error_code(17, std::system_category())) |
      |          ^~~~~~
1 warning generated.
[291/400] Building CXX object examples/CMakeFiles/beman.execution26.examples.doc-just_stopped.dir/doc-just_stopped.cpp.o
/Users/clausklein/Workspace/cpp/beman-project/execution26/examples/doc-just_stopped.cpp:13:10: warning: unused variable 'result' [-Wunused-variable]
   13 |     auto result = ex::sync_wait(ex::just_stopped() | ex::upon_stopped([&] { stopped = true; }));
      |          ^~~~~~
1 warning generated.
[400/400] Linking CXX executable examples/beman.execution26.examples.doc-just_error
bash-5.2$ 

@dietmarkuehl
Copy link
Collaborator Author

I haven't run clang-tidy recently: when I tried there was a complaint that there is no compilation database. I haven't reaearched what's not working, yet.

@ClausKlein
Copy link
Collaborator

I haven't run clang-tidy recently: when I tried there was a complaint that there is no compilation database. I haven't reaearched what's not working, yet.

It should be generated in the binary directory and may be used like this:

make  clang-tidy 
# or
run-clang-tidy -p build/debug -checks='-*,bugprone-exception-escape' src/beman/execution26/

@dietmarkuehl
Copy link
Collaborator Author

I haven't run clang-tidy recently: when I tried there was a complaint that there is no compilation database. I haven't reaearched what's not working, yet.

It should be generated in the binary directory and may be used like this:

make  clang-tidy 
# or
run-clang-tidy -p build/debug -checks='-*,bugprone-exception-escape' src/beman/execution26/

Yes. It certainly worked at some point. However, since a while I get (this is the last line of make distclean; make clang-tidy):

FileNotFoundError: [Errno 2] No such file or directory: 'build/default/compile_commands.json'

I'm not sure what want missing to not emit this file.

@dietmarkuehl
Copy link
Collaborator Author

Note: there are lots of warnings:

I have addressed the warnings emitted by the CI. Sadly, the current setup fails to build on my Linux machine (a Raspberry PI) although I think I'm using a fairly recent cmake. As a result I can't see if there are additional warnings I'd need to address.

ClausKlein and others added 19 commits January 21, 2025 00:12
* Check and format json and c++ files

* Enable more checks

* Add pre-commint actions to CI
- fixed various clang-tidy warnings
- fixed various gcc warnings
- implemented missing noexcept specifications in some places to fix clang-tidy warnings
Signed-off-by: Radu Nichita <radunichita99@gmail.com>
* Fix missing environment in sync_wait

* sync_wait: add tests for its environment

* fixed a problem with env in sync_wait (and fixed the tests)

---------

Co-authored-by: Dietmar Kühl <dietmar.kuehl@me.com>
* Change exported install name to beman::execution26

* adjust the header update script and add missing headers

---------

Co-authored-by: Dietmar Kühl <dietmar.kuehl@me.com>
* started to implement on

* added structured binding support for types derived from product type

* added on algorithm and applies various fixes

* fix a silly formatting error

* fixed a few warnings
* fixed a few coroutine related issues

* fixed formatting issues

* reverted te chnage checking the result from unhandled_stopped().
* fixed a few coroutine related issues

* fixed formatting issues

* reverted te chnage checking the result from unhandled_stopped().

* addressed and issue which resulted in requiring a copy ctor

* removed a static_assert left for testing

* clang-format
* simplied gather signatures

* clang-format

* revert CMakeList.txt change

* fixed formatting issue
* tried to reduce the uses of sender_decompose

* clang-format
* Avoid to export Debug flags

* Fix typo and add more options
* added a few examples (some incomplete)

* added an example using a timer and fixed an issue with sync_wait

* restored cmake presets

* clang-format

* another attempt at clang-format
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.

4 participants