Repository navigation
stlab-execution 1.0.0
The first standalone release of STLab's C++17/20 execution runtime, under the Boost Software License 1.0.
Included
- Move-only
stlab::task, default/high/low executors, main-executor adapters, and the immediate executor. - Asynchronous system timers and process-wide
at_pre_exit()/pre_exit()lifecycle coordination. - Native libdispatch, Windows thread-pool, and portable task backends; independently selected libdispatch, Qt, portable, or unavailable main execution.
- Emscripten support for both pthreads and the threadless cooperative host-event-loop backend.
- Standalone CMake source and installed-package consumption through
stlab::execution.
Execution has no dependency on STLab. Futures, channels, serial queues, and coroutine policy remain in the higher-level library.
Compatibility and lifecycle
Existing stlab:: API names and canonical <stlab/concurrency/*.hpp> and <stlab/pre_exit.hpp> includes are preserved. Public interfaces support C++17; the build defaults to C++20.
Rebuild all C++ consumers. Independent execution inline namespaces and library filenames change the C++ ABI. This release preserves source compatibility, task-storage guards, and the versioned v2 C scheduling ABI, not compatibility with older prebuilt STLab C++ binaries.
Call stlab::pre_exit() exactly once before normal process exit. Default/high/low tasks and native timer callbacks must not initiate it. Threadless Emscripten shutdown is asynchronous; a subsequently submitted ordinary main task is the completion fence.
Queued callable construction and moved-from destruction must not submit work. Submission from task bodies and executed-target cleanup remains supported while admission is open.
Consumption
CPMAddPackage("gh:stlab/stlab-execution@1.0.0")
target_link_libraries(app PRIVATE stlab::execution)For an installed package:
find_package(stlab-execution 1.0.0 CONFIG REQUIRED)
target_link_libraries(app PRIVATE stlab::execution)Build prerequisites are CMake 3.24 or newer, Ninja, and a configured C++ compiler environment. Static linkage is the default; BUILD_SHARED_LIBS=ON selects shared linkage. The build toolkit is pinned to the published cpp-library v5.5.0 commit.
Git checkouts derive the release version from v1.0.0. For source archives without Git metadata, configure with -DCPP_LIBRARY_VERSION=1.0.0 to select the release version and C++ inline namespace.
STLab's downstream dependency pin and minimum installed-package requirement must be updated together when it adopts this release.
Release validation
The tagged commit is d339489577e9a22b82a16459dd3a3a927243617f. Validation used the pinned remote toolkit without a local toolkit-source override.
| Local Windows x64 MSVC configuration | CTest result |
|---|---|
| Native C++20 static, including installed C++17/20 consumers | 27/27 passed |
| Native C++17 static | 26/26 passed |
| Native C++20 shared, including installed C++17/20 consumers | 24/24 passed |
| Portable task system and portable main executor, including installed C++17/20 consumers | 50/50 passed |
| Fresh C++17 consumer using the exact CPM fetch shown above, compile-time 1.0.0 version checks, and executor/shutdown smoke test | 1/1 passed |
Hosted CI for the release commit passed Windows, Ubuntu GCC, Ubuntu Clang, macOS, and clang-tidy, including the native build/install/consumer checks.
A source archive without Git metadata also configured and built successfully with the default Release preset and -DCPP_LIBRARY_VERSION=1.0.0.
Qt, Emscripten, and sanitizer configurations were not revalidated in this release preparation. The hosted documentation job was skipped; this release does not publish an API documentation site or prebuilt binaries.