Concurrencpp Versions Save

Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all

v.0.1.7

9 months ago
  • bug fixes
  • typo fixes
  • lock free shared_result
  • GCC 13 support 🎉
  • thread_started_callback and thread_terminated_callback added to runtime class to allow thread-lifecycle monitoring

v.0.1.6

1 year ago
  • 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

v.0.1.5

1 year ago
  • async_lock implementation
  • when_any data race fix
  • parallel coroutine to throw std::invalid_argument on null executor
  • tests compilation time optimization
  • result optimizations

v.0.1.4

2 years ago
  • generator implementation
  • delay object , when_any, when_all api changes
  • more refined exception guarantees
  • CI/CD now uses clang 12

Note: this version breaks API

  • make_delay_object returns a lazy_result instead of result.
  • when_any + when_all return a lazy_result instead of result, require resume-executor as their first argument.

v.0.1.3

2 years ago
  • resume_on improvements
  • binary_semaphore polyfill for appleclang
  • enable dynamic linking on Windows
  • typo fixes

v.0.1.2

2 years ago
  • deprecation of await_via and resume_via

  • addition of lazy_result

  • addition of resume_on

  • when_all + when_any rewrite

  • shared_result optimizations

  • examples rewrite

note: CI/CD still fail on TSAN tests because of google/sanitizers#1259 . In the next release, the library CI/CD might move to clang-12, which is supposed to fix the issue.

note: This version breaks ABI: await_via and resume_via are deprecated. use resume_on instead.

v.0.1.1

3 years ago
  • full move to ctest
  • timer queue idling mechanism
  • unified shutdown exception
  • test folder cleaning up
  • clang format changes
  • optimizations

This version breaks ABI: executors and the timer queue throw runtime_shutdown exception when accessed after the runtime object is destroyed. executor_shutdown and timer_queue_shutdown are deprecated.

Note: the CICD fails because of a regression in Clang's thread sanitizer. the bug is detailed in https://github.com/google/sanitizers/issues/1259

v.0.1.0

3 years ago
  • Addition of shared_result.
  • Thread-sanitizer tests were re-written.
  • result_coro_promise is now merged with result_state (every eager task allocates just one memory chunk instead of two, no refcount).
  • various bug fixes and improvements.

Tests were run locally, as Github actions still doesn't support clang-11.

v.0.0.9

3 years ago
  • addition of task objects
  • result refactor
  • executor refactor + optimizations
  • tests were completly re-written
  • move to MSVC 18.6.2 and clang 11
  • move to standard coroutines on MSVC
  • awaitables are uncopiable and unmovable
  • when timer is cancelled/destructed, spawned tasks that are not yet executed are cancelled.

Note: CI/CD fail as Clang 11 is still not supported on Github Actions. Tests were run locally on Window, Linux and Mac.

Note: This version breaks ABI if applications implemented their own executors.

v.0.0.8

3 years ago
  • project structure refactor - all header files go to include/concurrencpp directory, TSAN tests to test directory
  • sources were formatted using clang-format
  • move to modern cmake
  • partial move to ctest
  • CI/CD pipeline with github actions on Windows, Linux and macOS (uses xcode 12.2, clang fails with ICE)
  • readme improvements