stlab is the ongoing work of what was Adobe’s Software Technology Lab. The Adobe Source Libraries (ASL), Platform Libraries, and new stlab libraries are hosted on github.
v2.0.0a10 |
What’s Changed
Moved the portable and macOS default executor singletons to a .cpp file to make it easier to package in a DLL without getting duplicated thread pools or pre-exit handlers.
Moved the pre-exit handling registry to a .cpp file to make it easier to avoid duplication when packaged as a DLL; the symbols vector through extern "C" stlab_xxx() function to make it simpler to export the necessary symbols.
- by @gbottesi in https://github.com/stlab/libraries/pull/556
New Contributors
- @gbottesi made their first contribution in https://github.com/stlab/libraries/pull/556
Full Changelog: https://github.com/stlab/libraries/compare/v2.0.0a9…v2.0.0a10
|
zip | tar |
v2.0.0a9 |
Full Changelog: https://github.com/stlab/libraries/compare/v2.0.0a8…v2.0.0a9
- Rewrite and remove bad
when_any tests that could deadlock
- Updated README with a complete list of
STLAB_ CMake options
- Added an option to run
STLAB_ with the minimal default executor thread pool size for testing
- Corrected docs for
invoke_waiting()
- Added equality comparison to move_only test model
- Corrected all usage of
invoke_waiting()
- Attempted to use iwyu - minimal success
- Split out tuple_algorithm_test (it was included twice in futures and channels)
- Added STLAB_MINIMAL_TASK_POOL option for testing
- Changed
STLAB_NO_STD_COROUTINE in config.hpp to STLAB_STD_COROUTINE() to avoid mistakes in usage.
|
zip | tar |
v2.0.0a8 |
What’s Changed
- Static Analysis by @sean-parent in https://github.com/stlab/libraries/pull/546
- Nix an unused matrix element by @dabrahams in https://github.com/stlab/libraries/pull/548
- Update code base to pass clang-tidy by @sean-parent in https://github.com/stlab/libraries/pull/552
- Reworked future reduction by @sean-parent in https://github.com/stlab/libraries/pull/551
- Restructured CMake to simplify Windows build (and all builds) by @sean-parent in https://github.com/stlab/libraries/pull/553
- Minor fixes to await and await docs. by @sean-parent in https://github.com/stlab/libraries/pull/555
Full Changelog: https://github.com/stlab/libraries/compare/v2.0.0a7…v2.0.0a8
|
zip | tar |
v2.0.0a7 |
What’s Changed
- Update layout-terminology.md by @sean-parent in https://github.com/stlab/libraries/pull/542
- Update layout-terminology.md by @sean-parent in https://github.com/stlab/libraries/pull/543
- add move implementation which asserts on providing const argument by @dhaibatc in https://github.com/stlab/libraries/pull/544
New Contributors
- @dhaibatc made their first contribution in https://github.com/stlab/libraries/pull/544
Full Changelog: https://github.com/stlab/libraries/compare/v2.0.0a6…v2.0.0a7
|
zip | tar |
v2.0.0a6 |
What’s Changed
Full Changelog: https://github.com/stlab/libraries/compare/v2.0.0a5…v2.0.0a6
|
zip | tar |
v2.0.0a5 |
|
zip | tar |
v2.0.0a4 |
Moved packaged tasks to move only to resolve odd copy issue on Windows.
Other general cleanup
|
zip | tar |
v2.0.0a3 |
|
zip | tar |
v2.0.0a2 |
The documentation is now built with Hyde 2.0 but has not yet been updated to finalize the release.
What’s Changed
- Updating documentation and documentation system to hyde 2.0 by @sean-parent in https://github.com/stlab/libraries/pull/534
Full Changelog: https://github.com/stlab/libraries/compare/v2.0.0a1…v2.0.0a2
|
zip | tar |
v2.0.0a1 |
This is a draft of version 2.0.0. Bumping the major version number is due to the breaking changes mentioned below. I’m in the process of updating the documentation to use Hyde 2.0 and moving to use GitHub Actions to build the Jekyll pages. The final release will be done when those tasks are completed. This release is for those who “just need the code”.
Breaking Changes
- C++17 or later is now required. The was done to make the executors and
task<> noexcept aware. Executors now require the tasks being passed to them are noexcept . package<>() can be used to create noexcept packaged_task<> s. The task<> interface can now require that a captured task is noexcept . For example, task<int(double) noexcept> will accept a type invocable with a double, where the result is convertible to int, and is declared noexcept . This is statically checked. If noexcept is ommited, the task will except either a function with a matching signature, noexcept or not.
- As part of moving to C++17, the ability to configure the library to use
boost::optional and boost::variant has been removed.
Bug fixes and other changes are listed below.
What’s Changed
- Adds a call to pre_exit() on each example using default_executor by @fpelliccioni in https://github.com/stlab/libraries/pull/500
- new API: bool packaged_task::canceled() const by @KevinHopps in https://github.com/stlab/libraries/pull/498
- Changes to support C++14 and fixed missing include file (#501) by @sean-parent in https://github.com/stlab/libraries/pull/503
- Fix name conflict with boost math in Boost <= 1.76 by @fpelliccioni in https://github.com/stlab/libraries/pull/499
- Changed CMake paths to be robust to subprojects by @laserallan in https://github.com/stlab/libraries/pull/507
- Fixes to futures by @sean-parent in https://github.com/stlab/libraries/pull/505
- Fix typo from main_scheduler_type to main_executor_type by @nickpdemarco in https://github.com/stlab/libraries/pull/516
- Revisit Reduce by @sean-parent in https://github.com/stlab/libraries/pull/521
- Add check for C++20, make ambiguous case assume 23 by @nickpdemarco in https://github.com/stlab/libraries/pull/522
- Restore Qt5 compatibility by @touraill-adobe in https://github.com/stlab/libraries/pull/524
- Minor comment fix by @sean-parent in https://github.com/stlab/libraries/pull/526
- Requiring executor tasks are noexcept. by @sean-parent in https://github.com/stlab/libraries/pull/528
- Removing use of boost::variant and optional from stlab now that it has moved to C++17 by @thinlang in https://github.com/stlab/libraries/pull/531
New Contributors
- @KevinHopps made their first contribution in https://github.com/stlab/libraries/pull/498
- @laserallan made their first contribution in https://github.com/stlab/libraries/pull/507
- @touraill-adobe made their first contribution in https://github.com/stlab/libraries/pull/524
- @thinlang made their first contribution in https://github.com/stlab/libraries/pull/531
Full Changelog: https://github.com/stlab/libraries/compare/v1.7.1…v2.0.0a1
|
zip | tar |
v1.7.1 |
Patch release that just fixes some missing files in a CMakeLists.txt file
|
zip | tar |
v1.7.0 |
This release was created to address a number of issues.
- Building the library now requires a CMake step to generate a configuration file. Prior versions of the library were self-configuring but that was causing issues when headers were included in different compilation units compiled with different options.
- When using
default_executor a call to pre_exit() is required prior to exiting main or invoking std::exit() . It is not necessary if using std::quick_exit() . This allows the executor to shut down so canceled and detached tasks do not run concurrently with exit.
blocking_get() and associated functions have been renamed await()
- A new operation
invoke_waiting() was added to hint the portable default_executor when a task is waiting for some condition.
- The
await() does not attempt to steal tasks from the portable default_executor and instead will spin up additional threads (to a limit) to avoid deadlocking.
See more details in changes.md.
|
zip | tar |
v1.6.2 |
- Fixed issues
- 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
|
zip | tar |
v1.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.
|
zip | tar |
v1.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).
|
zip | tar |
v1.5.6 |
- Fixed issues
- [#352]:(https://github.com/stlab/libraries/issues/352) Non portable ‘warning’ preprocessor command
|
zip | tar |
v1.5.5 |
|
zip | tar |
v1.5.4 |
- Fixed issues
- #317: when_all(range) and when_any(range) must not be used with an immediate_executor
|
zip | tar |
v1.5.3 |
- Fixed issues
- #312: default_executor implementation for Windows has a memory leak
- #305 stlab/concurrency/future.hpp won’t compile with C++20
- #303 range based stlab::when_any data race
- Enhancement
- Adding Forest container and algorithms
|
zip | tar |
v1.5.2 |
- Fixed issues
- #292: What happened to our mutable lambdas?
- #287: future’s
then doesn’t fully support mutable lambdas yet
|
zip | tar |
v1.5.1 |
- Fixed issues
- #285: steady_clock.now()
- #262: time_point_to_FILETIME() to duration_to_FILETIME()
|
zip | tar |
v1.5.0 |
- Fixed issues
- #264:
future::error() interface is odd
- #260: set_exception() should be a const member.
-
#248: Lifetime of receivers returned by operator |
- #243: Vector of move only type passed to continuation fails to compile.
- Enhancements
- #269: Extend the default_executor with high and low priority
- #262:
system_timer interface is cumbersome. Now it accepts a
duration from now. The previously available interface with a time_point is marked as deprecated and will be removed in a future release.
|
zip | tar |
v1.4.1 |
Bug fix release
|
zip | tar |
v1.4.0 |
Minor bugfix and feature release
|
zip | tar |
v1.3.3 |
Patch release 1.3.3
|
zip | tar |
v1.3.2 |
|
zip | tar |
v1.3.1 |
Pure bugfix release
|
zip | tar |
v1.3.0 |
Some bug fixes and new small enhancements. See CHANGES.md for further datails.
|
zip | tar |
v1.2.0 |
Somebug fixes and new small enhancements. See CHANGES.md for further datails.
|
zip | tar |
v1.1.1 |
Hot fix release. See CHANGES.md for further datails.
|
zip | tar |