Skip to content

Releases: stlab/libraries


20 Apr 00:16
Choose a tag to compare
v2.0.0a7 Pre-release

What's Changed

New Contributors

Full Changelog: v2.0.0a6...v2.0.0a7


15 Mar 00:16
Choose a tag to compare
v2.0.0a6 Pre-release

What's Changed

  • Bumping the inline namespace version to v2 to avoid ODR violations.
  • The pre_exit code remains at v1 (it must be bumped more carefully).
  • The portable default executor is moving to v2 - which may lead to more than one thread pool for the portable instance. Pinning the version here is more difficult.
  • Removed dead reset() operations in future shared_base
  • Documented (and assert) precondition that future::exception() is only invoked on a ready exception.
  • Made more of the tuple meta-facilities public to avoid detail:: namespace usage in unit tests.
  • Restructured unit tests to avoid sleep-wait-loops.

Full Changelog: v2.0.0a5...v2.0.0a6

Fix use after move in future reduction

11 Mar 23:47
Choose a tag to compare

Update stlab.yml


04 Mar 19:49
Choose a tag to compare
v2.0.0a4 Pre-release

Moved packaged tasks to move only to resolve odd copy issue on Windows.

Other general cleanup

Additional bug fixes

23 Feb 02:03
Choose a tag to compare
Additional bug fixes Pre-release
Some minor fixes (#537)

* Minor bug fixes around operations that require mutability.
* Replacing an incorrect identity function with std::identity{}
* Removed unnecessary moves.


08 Feb 01:06
Choose a tag to compare
2.0.0a2 Pre-release

The documentation is now built with Hyde 2.0 but has not yet been updated to finalize the release.

What's Changed


26 Oct 00:53
Choose a tag to compare
v2.0.0a1 Pre-release

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 noexceptis 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

New Contributors

Full Changelog: v1.7.1...v2.0.0a1


24 Sep 14:12
Choose a tag to compare

Patch release that just fixes some missing files in a CMakeLists.txt file


06 Sep 22:29
Choose a tag to compare

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

Patch release 1.6.2

25 Mar 19:05
Choose a tag to compare
  • 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.
    • 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