Skip to content
New issue

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

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

Already on GitHub? # 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
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants