Skip to content

v2.0 Release

Compare
Choose a tag to compare
@accelerated accelerated released this 13 May 20:08
· 168 commits to master since this release
2db8e21

Description

This is an API breaking release - see warnings below

  • Added support for the V2 coroutine API which simplifies coroutine signatures and makes conversion from a regular function to a coroutine seamless, especially for async IO where no changes are needed! Both V1 (original) and V2 APIS can be used concurrently.
  • Sequencer::post() and Sequencer::postAll() functions are now called Sequencer::enqueue() and Sequencer::enqueueAll(). This is needed because Sequencer::post() is calling the new post2() API underneath and it would cause too much confusion. Also first parameter in the passed-in functor has changed from CoroContextPtr<int> to VoidContextPtr. warning
  • Functors passed-in inside forEach()/forEachBatch()/mapReduce()/mapReduceBatch() now take an additional first parameter VoidContextPtr. This is to allow creating other coroutines or yielding which was not possible before. See documentation for details. warning
  • Internal allocator improvements.
  • Support for _GLIBCXX_USE_CXX11_ABI macro when determining if std::list::size() is linear or constant.
  • Rethrowing const boost::coroutines2::detail::forced_unwind exception to allow proper coroutine stack unwind in certain situations.
  • Added support for Boost segmented stacks and protected stacks.
  • New macros for enabling various stacks at compile-time: __QUANTUM_BOOST_USE_SEGMENTED_STACKS , __QUANTUM_BOOST_USE_PROTECTED_STACKS and __QUANTUM_BOOST_USE_FIXEDSIZE_STACKS .
  • Deprecation of __QUANTUM_USE_BOOST_CORO_ALLOCATOR . warning
  • Removal of old quantum::Dispatcher constructor which did not take a configuration object. warning