Release Notes » Release 3.8.0 (Master)

Taskflow 3.8.0 is the newest developing line to new features and improvements we continue to support. It is also where this documentation is generated. Many things are considered experimental and may change or break from time to time. While it may be difficult to be keep all things consistent when introducing new features, we continue to try our best to ensure backward compatibility.

Download

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

System Requirements

To use Taskflow v3.8.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.

Release Summary

This releases (1) enhances the scheduling performance through C++20 atomic notification and (2) revised the semaphore model for better runtime control.

New Features

Taskflow Core

  • Enhanced the core scheduling performance using C++20 atomic notification
# compile your taskflow program with C++20 enabled
~$ g++ -std=c++20 my_taskflow.cpp 
  • Revised the semaphore programming model for better runtime control through tf::Runtime
tf::Executor executor(8);   // create an executor of 8 workers
tf::Taskflow taskflow;
tf::Semaphore semaphore(1); // create a semaphore with initial count 1
for(size_t i=0; i<1000; i++) {
  taskflow.emplace([&](tf::Runtime& rt){ 
    rt.acquire(semaphore);
    std::cout << "critical section here (one worker here only)\n"; 
    critical_section();
    rt.release(semaphore);
  });
}
executor.run(taskflow).wait();
  • Enhanced async-tasking performance through TLS
  • Added async-task benchmark

Utilities

Bug Fixes

  • Fixed the compilation error for not finding the C++ atomic library
  • Fixed the missing tf::Runtime in asynchronous tasking

Breaking Changes

  • Removed the support of object pool by default

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.