# API and ABI Change Log

This document tracks API and ABI changes across oneTBB releases. Each release may introduce new APIs, modify existing ones, or add new symbols to the binary interface. Generally, we strive to maintain backward compatibility, but some releases may include changes that require attention when upgrading. If a release adds new entry points to the binary library, this is a backwards compatible change, since applications compiled with an older set of headers will not be affected by the presence of new symbols in the library. However, if a release includes layout changes to classes defined in the headers, this can lead to compatibility issues for applications that are partially recompiled with a mix of use of new and old headers. In such cases, it is recommended to recompile the entire application with the new version of oneTBB to ensure compatibility.

Through the most recent oneTBB release, we have maintained backwards compatibility. However, there have been layout changes in the 2023.0.0 and 2022.0.0 releases, which can lead to compatibility issues for applications that are partially recompiled with different versions of the library headers. We therefore increased the major version number for those releases to highlight the potential for compatibility issues and to encourage users to recompile their entire application and any plugins when upgrading to those versions.

## Summary Table

Release Version | Binary Version / Interface Version | Date | Release Notes | API Changes | ABI Changes
--- | --- | --- | --- | --- | ---
2023.0.0 | 12.18 / 12180 | April 2026 | Release Notes | Yes | Layout changes
2022.3.0 | 12.17 / 12170 | Oct 2025 | Release Notes | Yes | New entry points
2022.2.0 | 12.16 / 12160 | Jun 2025 | Release Notes | No | No
2022.1.0 | 12.15 / 12150 | Mar 2025 | Release Notes | Yes | New entry points
2022.0.0 | 12.14 / 12140 | Oct 2024 | Release Notes | Yes | New entry points and layout changes
2021.13.0 | 12.13 / 12130 | Jun 2024 | Release Notes | Yes | No
2021.12.0 | 12.12 / 12120 | Apr 2024 | Release Notes | No | No
2021.11.0 | 12.11 / 12110 | Nov 2023 | Release Notes | No | No
2021.10.0 | 12.10 / 12100 | Jul 2023 | Release Notes | Yes | No
2021.9.0 | 12.9 / 12090 | Apr 2023 | Release Notes | Yes | No
2021.8.0 | 12.8 / 12080 | Feb 2023 | Release Notes | Yes | No
2021.7.0 | 12.7 / 12070 | Oct 2022 | Release Notes | No | No
2021.6.0 | 12.6 / 12060 | Sep 2022 | Release Notes | Yes | No
2021.5.0 | 12.5 / 12050 | Dec 2021 | Release Notes | Yes | No
2021.4.0 | 12.4 / 12040 | Oct 2021 | Release Notes | Yes | New entry points
2021.3.0 | 12.3 / 12030 | Jun 2021 | Release Notes | Yes | New entry points
2021.2.0 | 12.2 / 12020 | Apr 2021 | Release Notes | Yes | New entry points
2021.1.1 | 12.1 / 12010 | Dec 2020 | Release Notes | Initial oneTBB API | Initial oneTBB ABI

## Release Details

### 2023.0.0

API Changes:

- Function create_numa_task_arenas introduced to create a set of NUMA bound arenas

- Additional deduction guides for flow graph

- Additional deduction guides for blocked_range_nd

- flow graph indexer_node and join_node now support 10 or more input ports

- Preview Feature: wait for single task in task_group

- Preview Feature: resource_limited_node and resource_limiter classes

- Preview Feature: advanced core-type selection

- Preview Feature: global control parameter for default block time behavior

ABI Changes:

- ordered container layout changes for scalability improvements that impact concurrent_map, concurrent_multimap, concurrent_set, and concurrent_multiset

Notes:

The ABI is backwards compatible but issues can arise for partial recomplilation cases when objects with modified layouts are passed across compilation units built against headers with the older layout.

### 2022.3.0

API Changes:

- task_arena::enqueue and task_arena::wait_for to enqueue to and wait for specific task_group

- custom assertion handler support

- Preview Feature: dynamic task graph

ABI Changes:

- set/get_assertion_handler

- current_task_ptr

Notes:

set/get_assertion_handler symbols are used by custom assertion handler support, current_task_ptr is used by preview of task_group dependencies

### 2022.2.0

No API or ABI changes in this release.

### 2022.1.0

API Changes:

- Added explicit deduction guides for blocked_nd_range

- preview of parallel phase

ABI Changes:

- enter/exit_parallel_phase

Notes:

enter/exit_parallel_phase is only used by preview of parallel phase. WARNING: there was temporary, inadvertent change that made the unsafe_wait exception local for this release only.

### 2022.0.0

API Changes:

- Preview of flow graph try_put_and_wait

ABI Changes:

- get_thread_reference_vertex

- execution_slot

Notes:

The layouts of task_group and flow::graph were changed to improve scalability. The binary library is backwards compatible but issues can arise for partial recomplilation cases (see linked discussion). get_thread_reference_vertex and execution_slot added for scalability improvements.

### 2021.13.0

API Changes:

- Better rvalues support for parallel_reduce and parallel_deterministic_reduce functional API

ABI Changes:

No ABI changes in this release.

### 2021.12.0

No API or ABI changes in this release.

### 2021.11.0

No API or ABI changes in this release.

Notes:

Thread Composability Manager support introduced. It can be enabled by setting “TCM_ENABLE” environmental variable to 1

### 2021.10.0

API Changes:

- parallel algorithms and Flow Graph nodes allowed to accept pointers to the member functions and member objects as the user-provided callables

- Added missed member functions, such as assignment operators and swap function, to the concurrent_queue and concurrent_bounded_queue containers

ABI Changes:

No ABI changes in this release.

### 2021.9.0

API Changes:

- Hybrid core type constraints are fully supported and no longer guarded by preview macro

ABI Changes:

No ABI changes in this release.

Notes:

Hybrid CPU support is now production features, including use of symbols introduced in 2021.2.0

### 2021.8.0

API Changes:

- Fixed concurrent_bounded_queue return type to match specification

ABI Changes:

No ABI changes in this release.

### 2021.7.0

No API or ABI changes in this release.

### 2021.6.0

API Changes:

- Improved support and use of the latest C++ standards for parallel_sort that allows using this algorithm with user-defined and standard library-defined objects with modern semantics

- The following features are now fully functional: task_arena extensions, collaborative_call_once, heterogeneous overloads for concurrent_hash_map, and task_scheduler_handle

ABI Changes:

No ABI changes in this release.

### 2021.5.0

API Changes:

- Preview of task_group interface with a new run_and_wait overload to accept task_handle

ABI Changes:

No ABI changes in this release.

### 2021.4.0

API Changes:

- Preview of collaborative_call_once algorithm

ABI Changes:

- notify_waiters

### 2021.3.0

API Changes:

- Extended the high-level task API to simplify migration from TBB to oneTBB

- Added mutex and rw_mutex that are suitable for long critical sections and resistant to high contention

- Added ability to customize the concurrent_hash_map mutex type

- Added heterogeneous lookup, erase, and insert operations to concurrent_hash_map

ABI Changes:

- enqueue(d1::task&, d1::task_group_context&, d1::task_arena_base*)

- is_writer for queuing_rw_mutex

- wait_on_address

- notify_by_address/address_all/address_one

### 2021.2.0

API Changes:

- Three-way comparison operators for concurrent ordered containers and concurrent_vector

- Preview of Hybrid core type constraints

ABI Changes:

- core_type_count

- fill_core_type_indices

- constraints_threads_per_core

- constraints_default_concurrency

Notes:

New symbols used by preview of Hybrid CPU support (entered production in 2021.9).

### 2021.1.1

API Changes:

- Initial modernized oneTBB API

ABI Changes:

- Initial oneTBB ABI