namespace tf {

/** @page release-3-11-0 Release 3.11.0 (2025/11/24)

@tableofcontents

@section release-3-11-0_summary Release Summary

This release improves scheduling performance through optimized memory ordering in the notification algorithm 
and fixes a few bugs related to exception handling. We also revised multiple cookbook pages to enhance readability.

@section release-3-11-0_download Download

%Taskflow 3.11.0 can be downloaded <a href="https://github.com/taskflow/taskflow/releases/tag/v3.11.0">here</a>.

@section release-3-11-0_system_requirements System Requirements

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

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

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

@attention
Although %Taskflow supports primarily C++17, you can enable C++20 compilation
through `-std=c++20` to achieve better performance due to new C++20 features.
That being said, we are actively working on migrating %Taskflow to C++20, 
which is planned for the next major release v4.

@section release-3-11-0_new_features New Features

@subsection release-3-11-0_taskflow_core Taskflow Core

+ added `examples/task_visitor.cpp` to demonstrate how to traverse a taskflow ([#699](https://github.com/taskflow/taskflow/issues/699))
+ added five benchmarks to showcase the capability of tf::Runtime
  + fibonacci
  + skynet
  + integrate
  + nqueens
  + primes
+ added methods to retrieve the exception pointer of a task
  + tf::Task::exception_ptr
  + tf::AsyncTask::exception_ptr
+ added methods to check if a task holds an exception pointer 
  + tf::Task::has_exception_ptr
  + tf::AsyncTask::has_exception_ptr
+ added several new unit tests for exception handling (`test_exception.cpp`)
  + recursive exception propagation
  + concurrent exception throwing
+ added dependent-async methods to tf::Runtime ([#701](https://github.com/taskflow/taskflow/issues/701))
  + tf::Runtime::dependent_async
  + tf::Runtime::silent_dependent_async
+ removed code support for SYCL
+ removed `thread_local` to avoid incorrect references caused by Windows DLL boundaries
+ replaced `TF_CACHELINE_SIZE` with std::hardware_destructive_interference_size
+ enhanced the performance of atomic notifier via relaxed memory order
+ enforced implicit synchronization at the end of a runtime task's scope for safer usage

@subsection release-3-11-0_utilities Utilities

+ added `coprime` function
+ added `floor_log2` function

@section release-3-11-0_bug_fixes Bug Fixes 

+ toggled exception block in executor ([#690](https://github.com/taskflow/taskflow/pull/690))
+ fixed missing exception on thread creation failure in executor ([#693](https://github.com/taskflow/taskflow/issues/693))
+ fixed segmentation fault caused by empty async dependency ([#700](https://github.com/taskflow/taskflow/issues/700))
+ fixed compilation errors for CUDA 13 ([#721](https://github.com/taskflow/taskflow/pull/721))
+ fixed missing exception on recursive runtime tasking ([#724](https://github.com/taskflow/taskflow/issues/724))
+ fixed memory leak in exception handling for async tasks ([#730](https://github.com/taskflow/taskflow/issues/730))

@section release-3-11-0_breaking_changes Breaking Changes

+ removed `tf::corun(graph)` due to a design flaw in its exception-handling behavior
 
@code{.cpp}
// previously
taskflow.emplace([&](tf::Runtime& rt){
  rt.corun(graph);
});
// now - simply use tf::Executor::corun
taskflow.emplace([&](tf::Runtime& rt){
  executor.corun(graph);
});
@endcode

@section release-3-11-0_documentation Documentation

+ revised @ref StaticTasking
+ revised @ref ExecuteTaskflow
+ revised @ref ConditionalTasking
+ revised @ref RuntimeTasking
+ revised @ref AsyncTasking
+ revised @ref DependentAsyncTasking
+ revised @ref ExceptionHandling
  + @ref RetrieveTheExceptionPointerOfATask
+ revised @ref RequestCancellation

@section release-3-11-0_miscellaneous_items Miscellaneous Items

+ %Taskflow won the best poster award from 2025 CppCon!

@image html images/taskflow-poster.png width=100%

If you are interested in collaborating with us on applying %Taskflow to your projects, please feel free to reach out to @twhuang!

*/

}


