Skip to content

stlab-execution 1.0.0

Latest

Choose a tag to compare

@sean-parent sean-parent released this 08 Oct 17:45

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.