- [#496] Add missing files to CMakeLists.txt
- Breaking Changes
- The build setup now requires executing CMake to generate a config.hpp file for the build. This was done to avoid ODR/API/ABI breakage from having the library self-configure differently when used by multiple sub-projects. See the build instructions.
- To avoid having canceled or detached tasks execute concurrently with exit, leading to undefined behavior, a
pre_exit()
call was added which must be invoked if using thedefault_executor
prior to returning frommain()
or invokingexit()
. Ifquick_exit()
is used,pre_exit()
is not necessary.
- Changes & Additions
- The documentation source has been moved from
stlab/stlab.github.io
intostlab/libraries/docs
. The documentation was re-generated with the latest version of hyde but still requires some manual fixup. We are working with the hyde team to address this. blocking_get()
and associated functions have been renamedawait()
and the correspondingblocking_get()
API is deprecated.
- The documentation source has been moved from
- Fixed issues
- #408 The prior version of the portable
blocking_get()
would steal tasks while blocking. This can lead to deadlocks if the task stolen is the one being waited on. The portable default executor now behaves more like the platform default executors and will add additional threads (to a limit) to the thread pool if there are no available threads andawait()
is used. - #406 Added support for a
main_exector
for WASM when compiled with threads enabled. - #405 Added official WASM support and WASM builds are now part of our CI.
- A number of bugs were fixed with
future<>::recover()
when used with move-only types.
- #408 The prior version of the portable
- Fixed issues
- [#371]:(#371 include in concurrency/utility.hpp
- The _hold for detach was being done on the executor instead of the continuation. The result was a (silenced) broken exception getting thrown if detach() is called on a ready exception. This would trigger an exception which is caught internally in a packaged task and dropped.
stlab::make_ready_future(stlab::immediate_executor).detach();
- Fixed an issue with the serial queue using a "temporary" executor which was copied into the future shared state.
- Added stealing to blocking_get
- Also cleaned up blocking_get implementation.
- blocking_get_for() added
- Fix for make_exceptional_future and improvements blocking_get_for added
- deprecated blocking_get() with timeout
- Fixing bugs and naming our threads
- Fixed issue with backoff
- min() duration on a clock apparently is not a minimum length duration as documented, but is a negative duration... instead we us a single tick.
- Update utility.hpp
- Fixed issues
- [#363]:(#363) Wrong version in the 1.6.0 release
- 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).
- Fixed issues
- Fixed issues
- #317: Recovery continuations not invoked on broken promises
- Better conan.io support (Many thanks to Fernando Pelliccioni)
- Fix several minor scripting and configuration issues (Many thanks to Fernando Pelliccioni)
- Fix in SerialQueue UnitTest that could lead to dead lock on systems with few cores
-
Fixed issues
-
Enhancement
- Adding Forest container and algorithms
- Fixed issues
-
Fixed issues
-
Enhancements
- Fixed Issues
-
Fixed Issues
-
Enhancements
-
Library Changes
- Now C++17 is required to use the channels (This change was necessary, because the code became really messy to dispatch between copyable, move-only and void types)
-
Additional Comments
- It is necessary to patch std::variant for the combination of clang version <= 7 and stdlibc++. For further details see https://stackoverflow.com/questions/46506387/getstring-for-variants-fail-under-clang-but-not-g and ./travis/patches/patch_std_variant.sh. This is because the clang bug https://bugs.llvm.org/show_bug.cgi?id=31852
-
Fixed Issues
- #154 : Compilation error with gcc
- Race condition in timed blocking_get
-
Enhancements
- The library can now be included as cmake dependency (Many thanks to Austin McCartney)
- Fixed Issues
- #169 : when_all() appears to ignore the passed-in executor
- Fixed Issues
- Fixed Issues
- Library Breaking Changes
- Concurrency Library
- The functionality of channel's
zip
has changed. Now it behaves comparable to the ranges TS zip. The previous functionality is replaced withzip_with
. - The
merge
andjoin
functions are now deprecated and are replaced withmerge_channel<unordered_t>
andmerge_channel<round_robin_t>
.
- The functionality of channel's
- Concurrency Library
- Fixed Issues
- Library Additions
- Concurrency Library
- Adding usage of std::optional, std::variant or std::experimental::optional when compiling with C++17 mode. So the dependency to boost.optional is optional.
- Adding co-routine support for futures. (Only for VS 2017 and clang 5.0)
- Adding main_executor for Qt support
- Concurrency Library
- Fixed Issues
- Fixed Issues
- #94 : Use of moved executor in futures.hpp:1234
- #93 : Stack overflow with exception handling in futures
- #85 : (non-default) Executors and
make_ready_future
- #80 :
stlab::async
will not accept non-const reference parameters - #79 :
when_all
does not support continuing futures that returnvoid
- #69 : Support move-only tasks
- #59 :
task_system
andnotification_queue
doesn't work with move only lambda - #26 : channel TODO get process state under mutex?
- #18 : future TODO
get_try()
- Library Additions
- Concurrency library
- serial queue
- task
- Added feature requests #95 (flatten futures) and #38 (reduction on
future<void>
). Reduction of futures is now supported. So afuture<future<T>>
is reduced tofuture<T>
. Currently this is restricted to copyable typesT
.
- copy on write
- scope
- Test library
- annotate
- regular
- move-only
- Concurrency library
- Build & Test Improvements
- CMake overhaul
- Extended Travis CI support
- AppVeyor support
- Breaking Changes
- With Issue #85 the interface of
make_ready_future
andmake_exceptional_future
now require an executor as a second parameter.
- With Issue #85 the interface of
- Added the concurrency library:
- futures
- executors
- channels