Back to Taskflow

Release Summary

docs/release-4-1-0.html

4.1.07.9 KB
Original Source

| | Taskflow: A General-purpose Task-parallel Programming System |

Loading...

Searching...

No Matches

Release 4.1.0 (2026/06/19)

Release Summary

Following v4.0, this release (v4.1) further modernizes the codebase with C++20 concepts to improve extensibility, readability, and type safety. It introduces new parallel algorithms, including N-dimensional parallel iteration and parallel merge, as well as a redesigned profiler that improves scalability by replacing D3-based rendering with Canvas. This release also expands the documentation with many new examples and tutorials to help users learn and adopt Taskflow more effectively.

Download

Taskflow 4.1.0 can be downloaded here.

System Requirements

To use Taskflow v4.1.0, you need a compiler that supports C++20:

  • GNU C++ Compiler at least v11.0 with -std=c++20
  • Clang C++ Compiler at least v12.0 with -std=c++20
  • Microsoft Visual Studio at least v19.29 (VS 2019) with /std:c++20
  • Apple Clang (Xcode) at least v13.0 with -std=c++20
  • NVIDIA CUDA Toolkit and Compiler (nvcc) at least v12.0 with host compiler supporting C++20
  • Intel oneAPI DPC++ Compiler at least v2022.0 with -std=c++20

NoteIf your project does not support C++20, please use Taskflow v3.11.0, which can be downloaded here.

New Features

Taskflow Core

  • refactored the codebase with C++20 concept to enhance readability

    • credit goest to the amazing Anthropic Claude
  • added bulk cache update method in executor

  • added more unit tests to test_notifiers.cpp

  • added a new unittest test_partitioners.cpp

  • added module support under taskflow/modules/

  • added adopted module task to support composable tasking with move semantics

  • added a new parallel-for algorithm over a multi-dimensional index range

  • added a new parallel-merge algorithm tf::Taskflow::merge

  • improved the dump format with proper indention

  • improved the dump format of tf::Subflow with cluster-level edges

  • optimized executor member variable data layout to reduce false sharing

    • aligned num_topologies to a cache line
    • aligned notifier to a cache line
  • optimized tf::Executor::run(Taskflow&&) with asynchronous tasking

    • removed satellite field from both taskflow and executor classes
  • optimized the locking cost of topology

  • introduced a new profiler to replace the existing tfprof

    • older version of the profiler can be referred to index.html at pre-v4.0
  • removed extra copy on dependency tasks when creating a dependent-async task

Utilities

Bug Fixes

  • fixed the scope bug in creating tf::Future<T> from std::future (#761)
  • fixed the async bug in taking name as a parameter
  • fixed the redundant call when N is zero in for_each_by_index
  • fixed the bug in find_if where result is dangling under N=0

Breaking Changes

  • renamed tf::IndexRange::discrete_domain to tf::IndexRange::unravel
  • replaced the D3-based rendering in tfprof with Canvas for better scalability

NoteThe newest tfprof can only take .tfp generated by v4.1, which introduces a more efficient format to load by the browser than the previous version. For .tfp generated before v4.1, please refer to the old version of tfprof at pre-v4.0.

Documentation

Miscellaneous Items

If you are interested in collaborating with us on applying Taskflow to your projects, please feel free to reach out to Dr. Tsung-Wei Huang!