Releases: stlab/libraries
Releases · stlab/libraries
1.6.1
- Simplified the portable default executor to use a priority queue instead of separate queues for each priority
- Simplified logic for blocking_get()
- Added support for blocking_get() to steal tasks when using the portable task system with exponential backoff
- Fixed a bug where setting the exception on a promise does not resolve the promise, and so subsequent destruction of the promise would change the exception to a broken_promise.
- Fixed two places where objects captured by lambdas were subsequently moved, but the lambdas were not marked as mutable. This meant that you could not move a future passed to
recover()
. - Disabled the task() template constructor in the case where the passed function was a task so that it doesn't match the copy constructor. Previously if you copied a task it would compile, but infinitely recurse when executed. Now copying a task will not compile.
- Fixed an issue where the task invoke arguments where always getting declared as rvalues (I think someone tried to make them universal references) - added a comment to avoid the mistake in the future.
- Made the top-level task invoke actually use universal references and perfect forwarding.
- Reduced the size of task for small object optimization (now will usually be size of 8 pointers, with 6 pointers of space for the small object)
- Fixed tasks for objects that require more than maximum alignment.
- Lifted the invoke vtable entry for task into the local task, filling an otherwise empty memory slot (on most architectures).
- Removed the move() on the invoke calls in task, these were intended to make all tasks single execution, but many are not, and so this is a slightly dangerous and, as far as I know, unused optimization. If needed it could come back as a new virtual (rvalue invoke) call and only be used with the task actually is an rvalue.
Minor feature release 1.6.0
- Backport the library to support C++14 and later
- Better auto-configuration - no need for compiler flags.
- Supported for threaded wasm using the portable tasking system (auto-configured).
Patch release 1.5.6
Patch release 1.5.5
Merge pull request #349 from FelixPetriconi/develop Prepare 1.5.5 release
Patch Release 1.5.4
- Fixed issues
- #317: when_all(range) and when_any(range) must not be used with an immediate_executor
Patch release 1.5.3
Patch release 1.5.2
Patch release 1.5.1
1.5.0
-
Fixed issues
-
Enhancements
1.4.1
Bug fix release