Release Notes » Release 3.9.0 (2025/01/02)

Release Summary

This release improves scheduling performance with a decentralized work-stealing strategy and enhances exception handling across all task types.

Download

Taskflow 3.9.0 can be downloaded from here.

System Requirements

To use Taskflow v3.9.0, you need a compiler that supports C++17:

  • GNU C++ Compiler at least v8.4 with -std=c++17
  • Clang C++ Compiler at least v6.0 with -std=c++17
  • Microsoft Visual Studio at least v19.27 with /std:c++17
  • AppleClang Xcode Version at least v12.0 with -std=c++17
  • Nvidia CUDA Toolkit and Compiler (nvcc) at least v11.1 with -std=c++17
  • Intel C++ Compiler at least v19.0.1 with -std=c++17
  • Intel DPC++ Clang Compiler at least v13.0.0 with -std=c++17

Taskflow works on Linux, Windows, and Mac OS X.

New Features

Taskflow Core

  • improved the core scheduling algorithm using a decentralized work-stealing strategy
  • enhanced tf::Runtime to support preemptible execution flows
  • optimized task storage by storing detached tasks in their original subflows
  • optimized the query efficiency for strong dependencies by embedding their values in node states
  • updated tf::Graph to derive from a vector of unique pointers to nodes
  • expanded unit tests to include more exception handling scenarios
  • decoupled tf::Runtime from static task to accommodate distinct execution logic
  • removed the blocking behavior to avoid underutilized threads for the following tasks:
    • module task (#649)
    • subflow task
    • all parallel algorithms (through preemptible async tasks)
  • removed std::bind from asynchronous tasks to ensure proper constexpr switch
  • added compile-time macros to enable specific features
    • TF_ENABLE_TASK_POOL to enable the use of task pool
  • added taskflow execution through asynchronous tasking with tf::make_module_task
  • added tf::WorkerInterface for users to configure the behaviors of workers
  • added worker interface example and unit tests

Utilities

  • added tf::pause to relax CPU during busy spinning loop
  • added tf::seed to generate a random seed based on calling time point
  • added tf::atomic_min to update an atomic variable with the minimum value
  • added tf::atomic_max to update an atomic variable with the maximum value
  • added TF_CPP20 and TF_CPP17 macro for testing cpp versions

Bug Fixes

  • fixed AppleClang compile error in tsq.hpp (#651)
  • fixed wrong range in uuid test (#632)
  • fixed the exception bug in tf::Subflow::join (#602)
  • fixed the wrong prefix of target when running benchmark.py
  • fixed a bug in the join counter reset logic for scheduling condition tasks (#652)

Breaking Changes

Documentation

Miscellaneous Items

Please do not hesitate to contact Dr. Tsung-Wei Huang if you intend to collaborate with us on using Taskflow in your scientific computing projects.