Skip to content

v2.1 Release

Choose a tag to compare

@accelerated accelerated released this 04 Nov 16:17
· 94 commits to master since this release
0e38871

Description

  • Added Travis tests for C++17 and upgraded to Ubuntu bionic distro for all tests. PR#122.
  • Allow access to the coroutine context from within any function call and added GenericFuture util class. PR#117.
  • Added coroutine local storage (similar to thread local storage which cannot be used in certain modes such as coroutine sharing). PR#103 and PR#115. Thanks @demin80.
  • Added drain functionality to the Sequencer class. PR#110
  • Named all threads running in Quantum. PR#100
  • Added shared coroutine mode which allows coroutines published to the any queue to be shared among all threads. This essentially allows a coroutine to run (suspend and resume) on different threads giving increased performance. Usage of thread_local should not be made in this mode. PR#96. Thanks @demin80.
  • Added QUANTUM_EXPORT_PKGCONFIG and QUANTUM_EXPORT_CMAKE_CONFIG to control the creation of config files. PR#99.
  • Generate QuantumConfig.cmake, QuantumTargets.cmake and QuantumConfigVersion.cmake files which are exported in the default location ${CMAKE_INSTALL_PREFIX}/share/cmake/Quantum. This location can now be overwritten via QUANTUM_CMAKE_CONFIG_DIR. Export Quantum::quantum target which can be imported by 3rd-party projects and applications. PR#97.
  • Switch to using steady_clock for time interval measurements. PR#95
  • Implement ReadWriteSpinLock. PR#90
  • Reduce contention on the run queue and added AllocatorTraits::ioQueueListAllocSize() to control the pre-allocation buffers. PR#87

API changes

  • V1 and V2 apis are now merged. V1 API is overloaded to take V2 signatures as well. PR#114 and PR#116.
  • Automatically deduce return type for all invokable functions. PR#106
  • Added support for compile-time determination of multiple function args. PR#107

Fixes

  • Added move semantics to the Quantum::Promise class. PR#118
  • Fix drain issue when last coroutine is still running. PR#113
  • Check for buffer validity in ContiguousPoolManager and fixed move constructor for HeapPoolAllocator. PR#112
  • Fixed memory leaks in the ContiguousPoolManager as well as Quantum::Function class. PR#104
  • Fixed INTERFACE_SOURCES target property as it was hard-coded to what's generated in the build server. Once installed it would not longer point to the proper file. PR#100
  • Changed empty condition signal to be under queue lock. PR#93
  • Removed boost dependency from pkg_config file. PR#89