Skip to content

Conversation

David-Haim
Copy link
Owner

  • memory leak fixes
  • CI/CD overhaul
  • use stdlibc++ on linux by default
  • library to properly export symbols when used from a shared-library
  • async_condition_variable implementation
  • interrupted_task as a base class for runtime_shutdown and broken_task
  • readme improvements

friendlyanon and others added 30 commits October 2, 2020 11:48
* Add CLion ignores

* Use Modern CMake

* Restructure the project files

* Move test files around

* Remove Unnecessary CMakeLists.txt

* Restructure the examples

* Move thread sanitizer tests to the test directory

* Put coroutine options in a separate CMake module

* Rewrite the example lists files

* Add the option to build the library with thread sanitizer (This only works when the compiler is Clang based.)

* Rewrite the sandbox lists file

* Add coroutine options to tests as well

* Make the add_test function forward properties

* Stop script execution early to reduce indentation

* Include coroutine options using a relative path

Remembering to always pass the CMAKE_MODULE_PATH for every cmake
invocation might become troublesome otherwise.

Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
* Run clang-format
* Missing <algorithm> header
* Rework the test folder
* Fix include paths in library and example code
* Add a lists file that builds all the examples
* Rework coroutineOptions.cmake
* Fix ignores for CLion
* Add CI support

There are 4 builds in CI, on 2 providers:

Github Actions:
* Ubuntu Bionic, Clang 10, with TSAN
* Ubuntu Bionic, Clang 10, without TSAN
* Windows, VS2019

Travis CI:
* macOS, Xcode 10.3

* Allow failures in the Travis CI
* Add missing newlines at EOF

Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
* fix include path in the sandbox and tests
* Simplify CI process (Remove Travis.ci, move macOS steps to github actions)

Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
* Modify the imported target directly
* Use a single variable for TSAN

Co-authored-by: friendlyanon <friendlyanon@users.noreply.github.com>
* clang-format fine tuning
* better readme, fix include path in examples
* Make TSAN compile correctly by adding missing cmake properties
* remove buggish assert from thread-pool test
* compile everything in release mode with debug info
* result_core refactor
* renamed to result_state
* broken to consumer_context and producer_context
* await_via behaviuor fine tune - resolve_via throws executor_exception if the coroutine is supended and enqueueing its resumption throws
* await/await_via/resolve/resolve_via tests were re-written
* task object replaces raw usage of std::coroutine_handle
* calls to executor::post try to inline the memory by using the task inline buffer (the callable doesn't run as a coroutine anymore)
* await(_via)/relove(_via) throw concurrencpp::broken_task if the executor destroyed the associated task, for example, by throwing
* await small refactor
* complete executors-refactor
* timer::cancel also cancels scheduled-not-executed tasks, ongoing tasks are uneffected
* test utils refactor
* complete tests-re-write
* support shared_result objects
* result_state and result_coro_promise were merged together (finally!)
* thread sanitizer tests were rewritten
* small improvements and bug fixes
Co-authored-by: NN <NN---@users.noreply.github.com>
* timer queue idling mechanism
* unified shutdown exception
* test folder cleaning up
* clang format changes
* optimizations
David-Haim and others added 24 commits September 23, 2022 15:31
This fixes building with libstdc++.
* Add Clang 15 to CI

* Catch exceptions by const-ref

Co-authored-by: chausner <chausner@users.noreply.github.com>
* Make libc++ optional

Co-authored-by: chausner <chausner@users.noreply.github.com>
* add a lot more build configurations to the ci

Co-authored-by: David-Haim <dhayim1@gmail.com>
* load build matrix from json file
* async_condition_variable implementation
* replace details::wait_context with std::binary_semaphore
)

Co-authored-by: Mathias Eggert <mathias.eggert@nordsec.com>
@David-Haim
Copy link
Owner Author

@ohanar
Hi there! long time :)
It's finally the time to release all the changes we've added in the last few months.
As you can see, the TSAN tests are failing to compile for some reason.
Can you please take a look at it? nothing has really changed since we've merged those changes to develop.. :/

@ohanar
Copy link
Contributor

ohanar commented Mar 18, 2023

Hmm, it looks like libclang-rt is not being installed.

Adding "libclang-rt-${version}-dev" to https://github.com/David-Haim/concurrencpp/blob/develop/.github/actions/fetch-clang/action.yml#L42 should fix it, but I'm not sure if there was a change in packaging between versions (like with libunwind).

@David-Haim
Copy link
Owner Author

David-Haim commented Mar 19, 2023

@ohanar
It seems like there's no such package, tried to apply the patch here

@ohanar
Copy link
Contributor

ohanar commented Mar 20, 2023

It looks like it is as I suspected, they changed the packaging like libunwind. In this case between versions 13 and 14. Instead of universally adding the package, you could add it conditionally like libunwind with

if (${version} -ge 14) {
    $pkgs += "libclang-rt-${version}-dev"
}

* install clang-tsan manually
@David-Haim David-Haim merged commit 944a65f into master Mar 21, 2023
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.

8 participants