v2.0 Release
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()
andSequencer::postAll()
functions are now calledSequencer::enqueue()
andSequencer::enqueueAll()
. This is needed becauseSequencer::post()
is calling the newpost2()
API underneath and it would cause too much confusion. Also first parameter in the passed-in functor has changed fromCoroContextPtr<int>
toVoidContextPtr
. warning- Functors passed-in inside
forEach()/forEachBatch()/mapReduce()/mapReduceBatch()
now take an additional first parameterVoidContextPtr
. 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