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

To download the newest version of Taskflow, please clone the master branch from Taskflow's GitHub.

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.