diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000000..5ace4600a1
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/.github/labeler.yml b/.github/labeler.yml
index 8d13d71446..839d7f36c0 100644
--- a/.github/labeler.yml
+++ b/.github/labeler.yml
@@ -1,4 +1,4 @@
-# Copyright (c) 2023 Intel Corporation
+# Copyright (c) 2023-2024 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -13,6 +13,5 @@
# limitations under the License.
allocator:
-- 'src/tbbmalloc/**/*'
-- 'src/tbbmalloc_proxy/**/*'
-- 'test/tbbmalloc/**/*'
+- changed-files:
+ - any-glob-to-any-file: ['src/tbbmalloc/**/*', 'src/tbbmalloc_proxy/**/*', 'test/tbbmalloc/**/*']
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a65de62241..abda1e140f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -37,7 +37,7 @@ jobs:
runs-on: [ubuntu-20.04]
timeout-minutes: 10
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run scan
run: |
sudo apt update && sudo apt install -y codespell
@@ -47,7 +47,7 @@ jobs:
runs-on: [ubuntu-20.04]
timeout-minutes: 10
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run scan
run: |
command -v clang-format-10
@@ -62,7 +62,7 @@ jobs:
runs-on: [ubuntu-22.04]
timeout-minutes: 10
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Install prerequisites
run: |
pip3 install -U Jinja2
@@ -75,7 +75,7 @@ jobs:
export BUILD_TYPE=${BUILD_TYPE} && sphinx-build doc html
tar -czvf html.tar.gz html/
- name: Save docs
- uses: actions/upload-artifact@v2.2.1
+ uses: actions/upload-artifact@v4
with:
name: oneTBB-html-docs-${{ env.GITHUB_SHA_SHORT }}
path: html.tar.gz
@@ -90,14 +90,14 @@ jobs:
needs: [documentation]
steps:
- name: Checkout gh-pages
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
ref: gh-pages
path: gh-pages
- name: Set env
run: echo GITHUB_SHA_SHORT=${GITHUB_SHA::8} >> $GITHUB_ENV
- name: Download documetation
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v4
with:
name: oneTBB-html-docs-${{ env.GITHUB_SHA_SHORT }}
- name: Publish to github pages
@@ -117,7 +117,7 @@ jobs:
if: ${{ github.ref != 'refs/heads/master' }}
runs-on: [ubuntu-20.04]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run check
@@ -137,7 +137,7 @@ jobs:
runs-on: [ubuntu-latest]
timeout-minutes: 15
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
run: |
mkdir build && cd build
@@ -179,7 +179,7 @@ jobs:
preview: 'ON'
cmake_static: -DBUILD_SHARED_LIBS=OFF
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
shell: bash
run: |
@@ -198,7 +198,7 @@ jobs:
fail-fast: false
matrix:
include:
- - os: macos-12
+ - os: macos-14
c_compiler: clang
cxx_compiler: clang++
std: 14
@@ -212,7 +212,7 @@ jobs:
preview: 'ON'
cmake_static: -DBUILD_SHARED_LIBS=OFF
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
shell: bash
run: |
@@ -257,7 +257,7 @@ jobs:
preview: 'OFF'
job_name: windows_cl2022_cxx17_relwithdebinfo_preview=OFF
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
run: |
mkdir build
@@ -295,7 +295,7 @@ jobs:
build_type: debug
preview: 'ON'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
shell: bash
run: |
@@ -314,14 +314,14 @@ jobs:
fail-fast: false
matrix:
include:
- - os: macos-12
+ - os: macos-15
c_compiler: clang
cxx_compiler: clang++
std: 14
build_type: relwithdebinfo
preview: 'ON'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
shell: bash
run: |
@@ -357,7 +357,7 @@ jobs:
preview: 'OFF'
job_name: examples_windows_cl2022_cxx17_relwithdebinfo_preview=OFF
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: Run testing
run: |
mkdir build
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 7a80c5f0e2..28d3ff62b1 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -46,7 +46,7 @@ jobs:
steps:
- name: Harden Runner
- uses: step-security/harden-runner@v2.6.1
+ uses: step-security/harden-runner@v2.10.2
with:
egress-policy: audit
diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
new file mode 100644
index 0000000000..b9a01bb069
--- /dev/null
+++ b/.github/workflows/coverity.yml
@@ -0,0 +1,61 @@
+# Copyright (c) 2024 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Coverity Scan
+
+on:
+
+# Only run on push to master branch
+ push:
+ branches: [master]
+
+permissions: read-all
+
+env:
+ BUILD_CONCURRENCY: 4
+ COVERITY_PROJECT: oneapi-src%2FoneTBB
+
+jobs:
+ coverity_linux:
+ name: Coverity Linux
+ runs-on: [ubuntu-latest]
+ steps:
+ - uses: actions/checkout@v4
+ - name: Download Linux 64 Coverity Tool
+ run: |
+ curl https://scan.coverity.com/download/cxx/linux64 --output ${GITHUB_WORKSPACE}/cov-linux64-tool.tar.gz \
+ --data "token=${{secrets.COVERITY_TOKEN}}&project=${{env.COVERITY_PROJECT}}"
+ mkdir cov-linux64-tool
+ tar -xzf cov-linux64-tool.tar.gz --strip 1 -C cov-linux64-tool
+ - name: Build with cov-build
+ run: |
+ export PATH="${PWD}/cov-linux64-tool/bin:${PATH}"
+ mkdir build && cd build
+ cmake -DCMAKE_CXX_STANDARD=20 -DCMAKE_BUILD_TYPE=relwithdebinfo \
+ -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DTBB_CPF=ON ..
+ cov-build --dir cov-int make VERBOSE=1 -j${{env.BUILD_CONCURRENCY}}
+ - name: Archive Coverity build results
+ run: |
+ cd build
+ tar -czvf cov-int.tgz cov-int
+ - name: Submit Coverity results for analysis
+ run: |
+ cd build
+ curl \
+ --form token="${{ secrets.COVERITY_TOKEN }}" \
+ --form email="${{ secrets.COVERITY_EMAIL }}" \
+ --form file=@cov-int.tgz \
+ --form version="${GITHUB_SHA}" \
+ --form description="" \
+ "https://scan.coverity.com/builds?project=${{env.COVERITY_PROJECT}}"
diff --git a/.github/workflows/issue_labeler.yml b/.github/workflows/issue_labeler.yml
index 80591aa974..1f8e9f78bc 100644
--- a/.github/workflows/issue_labeler.yml
+++ b/.github/workflows/issue_labeler.yml
@@ -29,9 +29,8 @@ jobs:
issues: write
contents: read
steps:
- - uses: github/issue-labeler@v3.2 #May not be the latest version
+ - uses: github/issue-labeler@v3.4 #May not be the latest version
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: .github/issue_labeler.yml
enable-versioned-regex: 0
- sync-labels: 1
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 36812ebd62..770c211780 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -24,5 +24,7 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- - uses: actions/labeler@v4
-
+ - uses: actions/checkout@v4
+ - uses: actions/labeler@v5
+ with:
+ configuration-path: .github/labeler.yml
diff --git a/.github/workflows/ossf-scorecard.yml b/.github/workflows/ossf-scorecard.yml
index 9f45569f8a..e03dbb750a 100644
--- a/.github/workflows/ossf-scorecard.yml
+++ b/.github/workflows/ossf-scorecard.yml
@@ -47,7 +47,7 @@ jobs:
persist-credentials: false
- name: "Run analysis"
- uses: ossf/scorecard-action@v2.3.1
+ uses: ossf/scorecard-action@v2.4.0
with:
results_file: results.sarif
results_format: sarif
diff --git a/BUILD.bazel b/BUILD.bazel
index 9073f4640d..7c479ca3ed 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -37,6 +37,7 @@ cc_library(
]),
copts = ["-w"] + select({
"@platforms//os:windows": [""],
+ "@platforms//cpu:arm64": [""],
"//conditions:default": ["-mwaitpkg"],
}),
defines =
diff --git a/Bazel.md b/Bazel.md
index 09a630a72b..13b112ee81 100644
--- a/Bazel.md
+++ b/Bazel.md
@@ -40,7 +40,7 @@ load("@platforms//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
name = "oneTBB",
branch = "master",
- remote = "https://github.com/oneapi-src/oneTBB/",
+ remote = "https://github.com/uxlfoundation/oneTBB/",
)
```
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 19232a9920..0416364300 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,6 +16,12 @@ cmake_minimum_required(VERSION 3.5)
# Enable CMake policies
+if (POLICY CMP0063)
+ # The NEW behavior for this policy is to honor the visibility properties for all target types.
+ cmake_policy(SET CMP0063 NEW)
+ set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
+endif()
+
if (POLICY CMP0068)
# RPATH settings do not affect install_name on macOS since CMake 3.9
cmake_policy(SET CMP0068 NEW)
@@ -49,7 +55,7 @@ string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" _tbb_ver_min
string(REGEX REPLACE ".*#define TBB_VERSION_PATCH ([0-9]+).*" "\\1" _tbb_ver_patch "${_tbb_version_info}")
string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" TBB_INTERFACE_VERSION "${_tbb_version_info}")
string(REGEX REPLACE ".*#define __TBB_BINARY_VERSION ([0-9]+).*" "\\1" TBB_BINARY_VERSION "${_tbb_version_info}")
-set(TBB_BINARY_MINOR_VERSION ${_tbb_ver_minor})
+string(REGEX REPLACE "..(..)." "\\1" TBB_BINARY_MINOR_VERSION "${TBB_INTERFACE_VERSION}")
set(TBBMALLOC_BINARY_VERSION 2)
set(TBBBIND_BINARY_VERSION 3)
@@ -84,6 +90,11 @@ endif()
set(CMAKE_CXX_EXTENSIONS OFF) # use -std=c++... instead of -std=gnu++...
# ---------------------------------------------------------------------------------------------------------
+# Setup symbol visibility properties.
+
+set(CMAKE_VISIBILITY_INLINES_HIDDEN TRUE)
+set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
+# ---------------------------------------------------------------------------------------------------------
# Detect architecture (bitness).
if (CMAKE_SIZEOF_VOID_P EQUAL 4)
@@ -105,8 +116,13 @@ option(TBB_CPF "Enable preview features of the library" OFF)
option(TBB_FIND_PACKAGE "Enable search for external oneTBB using find_package instead of build from sources" OFF)
option(TBB_DISABLE_HWLOC_AUTOMATIC_SEARCH "Disable HWLOC automatic search by pkg-config tool" ${CMAKE_CROSSCOMPILING})
option(TBB_ENABLE_IPO "Enable Interprocedural Optimization (IPO) during the compilation" ON)
+option(TBB_CONTROL_FLOW_GUARD "Enable Control Flow Guard (CFG) during the compilation" OFF)
option(TBB_FUZZ_TESTING "Enable fuzz testing" OFF)
option(TBB_INSTALL "Enable installation" ON)
+option(TBB_FILE_TRIM "Enable __FILE__ trim" ON)
+if(LINUX)
+option(TBB_LINUX_SEPARATE_DBG "Enable separation of the debug symbols during the build" OFF)
+endif()
if(APPLE)
option(TBB_BUILD_APPLE_FRAMEWORKS "Build as Apple Frameworks" OFF)
endif()
@@ -226,6 +242,16 @@ if (TBB_ENABLE_IPO AND BUILD_SHARED_LIBS AND NOT ANDROID_PLATFORM AND NOT TBB_SA
endif()
endif()
+if (TBB_FILE_TRIM)
+ file(RELATIVE_PATH TBB_RELATIVE_BIN_PATH ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
+ file(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR} NATIVE_TBB_PROJECT_ROOT_DIR)
+ file(TO_NATIVE_PATH ${TBB_RELATIVE_BIN_PATH} NATIVE_TBB_RELATIVE_BIN_PATH)
+endif ()
+
+if (TBB_CONTROL_FLOW_GUARD)
+ message(STATUS "Control Flow Guard (CFG) enabled")
+endif()
+
set(TBB_COMPILER_SETTINGS_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/compilers/${CMAKE_CXX_COMPILER_ID}.cmake)
if (EXISTS ${TBB_COMPILER_SETTINGS_FILE})
include(${TBB_COMPILER_SETTINGS_FILE})
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b2b6a968cd..3414b9eaf6 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -19,17 +19,17 @@ As an open source project, we welcome community contributions to oneAPI Threadin
## Licensing
-Licensing is very important to open source projects. It helps ensure the software continues to be available under the terms that the author desired. The oneTBB project uses the [Apache 2.0 License](https://github.com/oneapi-src/oneTBB/blob/master/LICENSE.txt), a permissive open source license that allows you to freely use, modify, and distribute your own products that include Apache 2.0 licensed software. By contributing to the oneTBB project, you agree to the license and copyright terms therein and release your own contributions under these terms.
+Licensing is very important to open source projects. It helps ensure the software continues to be available under the terms that the author desired. The oneTBB project uses the [Apache 2.0 License](https://github.com/uxlfoundation/oneTBB/blob/master/LICENSE.txt), a permissive open source license that allows you to freely use, modify, and distribute your own products that include Apache 2.0 licensed software. By contributing to the oneTBB project, you agree to the license and copyright terms therein and release your own contributions under these terms.
-Some imported or reused components within oneTBB use other licenses, as described in [third-party-programs.txt](https://github.com/oneapi-src/oneTBB/blob/master/third-party-programs.txt). By carefully reviewing potential contributions, we can ensure that the community can develop products with oneTBB without concerns over patent or copyright issues.
+Some imported or reused components within oneTBB use other licenses, as described in [third-party-programs.txt](https://github.com/uxlfoundation/oneTBB/blob/master/third-party-programs.txt). By carefully reviewing potential contributions, we can ensure that the community can develop products with oneTBB without concerns over patent or copyright issues.
## Prerequisites
-As a contributor, you’ll want to be familiar with the oneTBB project and the repository layout. You should also know how to use it as explained in the [oneTBB documentation](https://oneapi-src.github.io/oneTBB/) and how to set up your build development environment to configure, build, and test oneTBB as explained in the [oneTBB Build System Description](cmake/README.md).
+As a contributor, you'll want to be familiar with the oneTBB project and the repository layout. You should also know how to use it as explained in the [oneTBB documentation](https://uxlfoundation.github.io/oneTBB/) and how to set up your build development environment to configure, build, and test oneTBB as explained in the [oneTBB Build System Description](cmake/README.md).
## Pull Requests
-You can find all [open oneTBB pull requests](https://github.com/oneapi-src/oneTBB/pulls) on GitHub.
+You can find all [open oneTBB pull requests](https://github.com/uxlfoundation/oneTBB/pulls) on GitHub.
### Before contributing changes directly to the oneTBB repository
diff --git a/INSTALL.md b/INSTALL.md
index 0ac95f8755..c33a2c7293 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -61,7 +61,7 @@ You can use the ``install`` components for partial installation.
The following install components are supported:
- `runtime` - oneTBB runtime package (core shared libraries and `.dll` files on Windows* OS).
- `devel` - oneTBB development package (header files, CMake integration files, library symbolic links, and `.lib` files on Windows* OS).
-- `tbb4py` - [oneTBB Module for Python](https://github.com/oneapi-src/oneTBB/blob/master/python/README.md).
+- `tbb4py` - [oneTBB Module for Python](https://github.com/uxlfoundation/oneTBB/blob/master/python/README.md).
If you want to install specific components after configuration and build, run:
@@ -99,7 +99,7 @@ The following example demonstrates how to install oneTBB for single-configuratio
# Do our experiments in /tmp
cd /tmp
# Clone oneTBB repository
-git clone https://github.com/oneapi-src/oneTBB.git
+git clone https://github.com/uxlfoundation/oneTBB.git
cd oneTBB
# Create binary directory for out-of-source build
mkdir build && cd build
@@ -121,7 +121,7 @@ Choose the configuration during the build and install steps:
REM Do our experiments in %TMP%
cd %TMP%
REM Clone oneTBB repository
-git clone https://github.com/oneapi-src/oneTBB.git
+git clone https://github.com/uxlfoundation/oneTBB.git
cd oneTBB
REM Create binary directory for out-of-source build
mkdir build && cd build
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000000..99c0a1dc92
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,143 @@
+
+
+# Introduction
+
+This document defines roles in the oneTBB project.
+
+# Roles and Responsibilities
+
+oneTBB project defines three main roles:
+ * [Contributor](#contributor)
+ * [Code Owner](#code-Owner)
+ * [Maintainer](#maintainer)
+
+[permissions]: https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization#permissions-for-each-role
+
+| | Contributor | Code Owner | Maintainer |
+| :------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------: | :---------------------: | :---------------------: |
+| _Responsibilities_ | | | |
+| Follow the [Code of Conduct](./CODE_OF_CONDUCT.md) | ✓ | ✓ | ✓ |
+| Follow [Contribution Guidelines](./CONTRIBUTING.md) | ✓ | ✓ | ✓ |
+| Ensure [Contribution Guidelines](./CONTRIBUTING.md) are followed | ✗ | ✓ | ✓ |
+| Co-own component or aspect of the library, including contributing: bug fixes, implementing features, and performance optimizations | ✗ | ✓ | ✓ |
+| Co-own on technical direction of component or aspect of the library including work on RFCs | ✗ | ✓ | ✓ |
+| Co-own the project as a whole, including determining strategy and policy for the project | ✗ | ✗ | ✓ |
+| _Privileges_ | | | |
+| Permission granted | [Read][permissions] | [Write][permissions] | [Maintain][permissions] |
+| Eligible to become | Code Owner | Maintainer | ✗ |
+| Can recommend Contributors to become Code Owner | ✗ | ✓ | ✓ |
+| Can participate in promotions of Code Owners and Maintainers | ✗ | ✗ | ✓ |
+| Can suggest Milestones during planning | ✓ | ✓ | ✓ |
+| Can choose Milestones for specific component | ✗ | ✓ | ✓ |
+| Make a decision on project's Milestones during planning | ✗ | ✗ | ✓ |
+| Can propose new RFC or participate in review of existing RFC | ✓ | ✓ | ✓ |
+| Can request rework of RFCs in represented area of responsibility | ✗ | ✓ | ✓ |
+| Can request rework of RFCs in any part of the project | ✗ | ✗ | ✓ |
+| Can manage release process of the project | ✗ | ✗ | ✓ |
+| Can represent the project in public as a Maintainer | ✗ | ✗ | ✓ |
+
+These roles are merit based. Refer to the corresponding section for specific
+requirements and the nomination process.
+
+## Contributor
+
+A Contributor invests time and resources to improve oneTBB project.
+Anyone can become a Contributor by bringing value in any following way:
+ * Answer questions from community members.
+ * Propose changes to the design.
+ * Provide feedback on design proposals.
+ * Review and/or test pull requests.
+ * Test releases and report bugs.
+ * Contribute code, including bug fixes, features implementations,
+and performance optimizations.
+
+## Code Owner
+
+A Code Owner has responsibility for a specific project component or a functional
+area. Code Owners are collectively responsible
+for developing and maintaining their component or functional areas, including
+reviewing all changes to corresponding areas of responsibility and indicating
+whether those changes are ready to be merged. Code Owners have a track record of
+contribution and review in the project.
+
+**Requirements:**
+ * Track record of accepted code contributions to a specific project component.
+ * Track record of contributions to the code review process.
+ * Demonstrate in-depth knowledge of the architecture of a specific project
+ component.
+ * Commit to being responsible for that specific area.
+
+How to become a Code Owner?
+1. A Contributor is nominated by opening a PR modifying the MAINTAINERS.md file
+including name, Github username, and affiliation.
+2. At least two specific component Maintainers approve the PR.
+3. [CODEOWNERS](./CODEOWNERS) file is updated to represent corresponding areas of responsibility.
+
+## Maintainer
+Maintainers are the most established contributors responsible for the
+project technical direction. They participate in making decisions about the
+strategy and priorities of the project.
+
+**Requirements:**
+ * Have experience as a Code Owner.
+ * Track record of major project contributions to a specific project component.
+ * Demonstrate deep knowledge of a specific project component.
+ * Demonstrate broad knowledge of the project across multiple areas.
+ * Commit to using privileges responsibly for the good of the project.
+ * Be able to exercise judgment for the good of the project, independent of
+ their employer, friends, or team.
+
+Process of becoming a maintainer:
+1. A Maintainer may nominate a current code owner to become a new Maintainer by
+opening a PR against MAINTAINERS.md file.
+2. A majority of the current Maintainers must then approve the PR.
+
+# Code Owners and Maintainers List
+
+## oneTBB core (API, Architecture, Tests)
+
+| Name | Github ID | Affiliation | Role |
+| --------------------- | --------------------- | ----------------- | ---------- |
+| Ilya Isaev | @isaevil | Intel Corporation | Code Owner |
+| Sarath Nandu R | @sarathnandu | Intel Corporation | Code Owner |
+| Dmitri Mokhov | @dnmokhov | Intel Corporation | Code Owner |
+| Alexey Kukanov | @akukanov | Intel Corporation | Code Owner |
+| Konstantin Boyarinov | @kboyarinov | Intel Corporation | Maintainer |
+| Aleksei Fedotov | @aleksei-fedotov | Intel Corporation | Maintainer |
+| Michael Voss | @vossmjp | Intel Corporation | Maintainer |
+| Pavel Kumbrasev | @pavelkumbrasev | Intel Corporation | Maintainer |
+
+## oneTBB TBBMALLOC (API, Architecture, Tests)
+
+| Name | Github ID | Affiliation | Role |
+| --------------------- | --------------------- | ----------------- | ---------- |
+| Łukasz Plewa | @lplewa | Intel Corporation | Maintainer |
+
+
+## oneTBB Documentation
+
+| Name | Github ID | Affiliation | Role |
+| ---------------------- | --------------------- | ----------------- | ---------- |
+| Alexandra Epanchinzeva | @aepanchi | Intel Corporation | Code Owner |
+
+
+## oneTBB Release Management
+
+| Name | Github ID | Affiliation | Role |
+| ------------------ | --------------------- | ----------------- | ---------- |
+| Olga Malysheva | @omalyshe | Intel Corporation | Maintainer |
+
diff --git a/README.md b/README.md
index 2e7c2e81ba..6f0b7d5922 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,11 @@
# oneAPI Threading Building Blocks (oneTBB)
-[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE.txt) [![oneTBB CI](https://github.com/oneapi-src/oneTBB/actions/workflows/ci.yml/badge.svg)](https://github.com/oneapi-src/oneTBB/actions/workflows/ci.yml?query=branch%3Amaster)
-[![Join the community on GitHub Discussions](https://badgen.net/badge/join%20the%20discussion/on%20github/blue?icon=github)](https://github.com/oneapi-src/oneTBB/discussions)
+[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE.txt) [![oneTBB CI](https://github.com/uxlfoundation/oneTBB/actions/workflows/ci.yml/badge.svg)](https://github.com/uxlfoundation/oneTBB/actions/workflows/ci.yml?query=branch%3Amaster)
+[![Join the community on GitHub Discussions](https://badgen.net/badge/join%20the%20discussion/on%20github/blue?icon=github)](https://github.com/uxlfoundation/oneTBB/discussions)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9125/badge)](https://www.bestpractices.dev/projects/9125)
+[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/uxlfoundation/oneTBB/badge)](https://securityscorecards.dev/viewer/?uri=github.com/uxlfoundation/oneTBB)
+[![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20oneTBB%20Guru-006BFF)](https://gurubase.io/g/onetbb)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/oneapi-src/oneTBB/badge)](https://securityscorecards.dev/viewer/?uri=github.com/oneapi-src/oneTBB)
+[![Coverity Scan Build Status](https://img.shields.io/coverity/scan/30373.svg)](https://scan.coverity.com/projects/oneapi-src-onetbb)
oneTBB is a flexible C++ library that simplifies the work of adding parallelism
to complex applications, even if you are not a threading expert.
@@ -31,12 +34,12 @@ See [Release Notes](RELEASE_NOTES.md) and [System Requirements](SYSTEM_REQUIREME
## Documentation
* [oneTBB Specification](https://spec.oneapi.com/versions/latest/elements/oneTBB/source/nested-index.html)
-* [oneTBB Developer Guide and Reference](https://oneapi-src.github.io/oneTBB)
-* [Migrating from TBB to oneTBB](https://oneapi-src.github.io/oneTBB/main/tbb_userguide/Migration_Guide.html)
+* [oneTBB Developer Guide and Reference](https://uxlfoundation.github.io/oneTBB)
+* [Migrating from TBB to oneTBB](https://uxlfoundation.github.io/oneTBB/main/tbb_userguide/Migration_Guide.html)
* [README for the CMake build system](cmake/README.md)
-* [oneTBB Testing Approach](https://oneapi-src.github.io/oneTBB/main/intro/testing_approach.html)
+* [oneTBB Testing Approach](https://uxlfoundation.github.io/oneTBB/main/intro/testing_approach.html)
* [Basic support for the Bazel build system](Bazel.md)
-* [oneTBB Discussions](https://github.com/oneapi-src/oneTBB/discussions)
+* [oneTBB Discussions](https://github.com/uxlfoundation/oneTBB/discussions)
* [WASM Support](WASM_Support.md)
## Installation
@@ -63,8 +66,5 @@ Use GitHub Issues for feature requests, bug reports, and minor inquiries. For br
oneAPI Threading Building Blocks is licensed under [Apache License, Version 2.0](LICENSE.txt).
By its terms, contributions submitted to the project are also done under that license.
-## Engineering team contacts
-* [Email us.](mailto:inteltbbdevelopers@intel.com)
-
------------------------------------------------------------------------
\* All names and brands may be claimed as the property of others.
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index c9b8e97135..16f04e0b92 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -18,8 +18,13 @@
This document contains changes of oneTBB compared to the last release.
## Table of Contents
+- [Preview Features](#preview-features)
- [Known Limitations](#known-limitations)
-- [Fixed Issues](#fixed-issues)
+- [Issues Fixed](#issues-fixed)
+- [Open-Source Contributions Integrated](#open-source-contributions-integrated)
+
+## :tada: Preview Features
+- Extended the Flow Graph receiving nodes with a new ``try_put_and_wait`` API that submits a message to the graph and waits for its completion.
## :rotating_light: Known Limitations
- The ``oneapi::tbb::info`` namespace interfaces might unexpectedly change the process affinity mask on Windows* OS systems (see https://github.com/open-mpi/hwloc/issues/366 for details) when using hwloc version lower than 2.5.
@@ -28,15 +33,19 @@ This document contains changes of oneTBB compared to the last release.
- On Windows OS on ARM64*, when compiling an application using oneTBB with the Microsoft* Compiler, the compiler issues a warning C4324 that a structure was padded due to the alignment specifier. Consider suppressing the warning by specifying /wd4324 to the compiler command line.
- C++ exception handling mechanism on Windows* OS on ARM64* might corrupt memory if an exception is thrown from any oneTBB parallel algorithm (see Windows* OS on ARM64* compiler issue: https://developercommunity.visualstudio.com/t/ARM64-incorrect-stack-unwinding-for-alig/1544293.
- When CPU resource coordination is enabled, tasks from a lower-priority ``task_arena`` might be executed before tasks from a higher-priority ``task_arena``.
+- Using oneTBB on WASM*, may cause applications to run in a single thread. See [Limitations of WASM Support](https://github.com/uxlfoundation/oneTBB/blob/master/WASM_Support.md#limitations).
+
+> **_NOTE:_** To see known limitations that impact all versions of oneTBB, refer to [oneTBB Documentation](https://uxlfoundation.github.io/oneTBB/main/intro/limitations.html).
-> **_NOTE:_** To see known limitations that impact all versions of oneTBB, refer to [oneTBB Documentation](https://oneapi-src.github.io/oneTBB/main/intro/limitations.html).
+## :hammer: Issues Fixed
+- Fixed the missed signal for thread request for enqueue operation.
+- Significantly improved scalability of ``task_group``, ``flow_graph``, and ``parallel_for_each``.
+- Removed usage of ``std::aligned_storage`` deprecated in C++23 (Inspired by Valery Matskevich https://github.com/uxlfoundation/oneTBB/pull/1394).
+- Fixed the issue where ``oneapi::tbb::info`` interfaces might interfere with the process affinity mask on the Windows* OS systems with multiple processor groups.
-## :hammer: Fixed Issues
-- Fixed ``parallel_for_each`` algorithm behavior for iterators defining ``iterator_concept`` trait instead of ``iterator_category``.
-- Fixed the redefinition issue for ``std::min`` and ``std::max`` on Windows* OS ([GitHub* #832](https://github.com/oneapi-src/oneTBB/issues/832)).
-- Fixed the incorrect binary search order in ``TBBConfig.cmake``.
-- Enabled the oneTBB library search using the pkg-config tool in Conda packages.
-## :octocat: Open-source Contributions Integrated
-- Fixed the compiler warning for missing virtual destructor. Contributed by Elias Engelbert Plank (https://github.com/oneapi-src/oneTBB/pull/1215).
+## :octocat: Open-Source Contributions Integrated
+- Detect the GNU Binutils version to determine WAITPKG support better. Contributed by Martijn Courteaux (https://github.com/uxlfoundation/oneTBB/pull/1347).
+- Fixed the build on non-English locales. Contributed by Vladislav Shchapov (https://github.com/uxlfoundation/oneTBB/pull/1450).
+- Improved Bazel support. Contributed by Julian Amann (https://github.com/uxlfoundation/oneTBB/pull/1434).
diff --git a/SECURITY.md b/SECURITY.md
index 4926041fc2..c9be5beb7f 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -61,6 +61,6 @@ If you have any suggestions on how this Policy could be improved, submit
an issue or a pull request to this repository. **Do not** report
potential vulnerabilities or security flaws via a pull request.
-[1]: https://github.com/oneapi-src/oneTBB/releases/latest
-[2]: https://github.com/oneapi-src/oneTBB/security/advisories/new
-[3]: https://github.com/oneapi-src/oneTBB/security/advisories
+[1]: https://github.com/uxlfoundation/oneTBB/releases/latest
+[2]: https://github.com/uxlfoundation/oneTBB/security/advisories/new
+[3]: https://github.com/uxlfoundation/oneTBB/security/advisories
diff --git a/SUPPORT.md b/SUPPORT.md
index 47bb60a538..bbf24f2854 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -21,14 +21,14 @@ Use the following methods if you face any challenges.
## Issues
-If you have a problem, check out the [GitHub Issues](https://github.com/oneapi-src/oneTBB/issues) to see if the issue you want to address is already reported.
+If you have a problem, check out the [GitHub Issues](https://github.com/uxlfoundation/oneTBB/issues) to see if the issue you want to address is already reported.
You may find users that have encountered the same bug or have similar ideas for changes or updates.
You can use issues to report a problem, make a feature request, or add comments on an existing issue.
## Discussions
-Visit the [GitHub Discussions](https://github.com/oneapi-src/oneTBB/discussions) to engage with the community, ask questions, or help others.
+Visit the [GitHub Discussions](https://github.com/uxlfoundation/oneTBB/discussions) to engage with the community, ask questions, or help others.
## Email
diff --git a/WASM_Support.md b/WASM_Support.md
index 6306620d7c..f40cf38c3d 100644
--- a/WASM_Support.md
+++ b/WASM_Support.md
@@ -47,7 +47,7 @@ Where:
* ``-DCMAKE_C_COMPILER=emcc`` - specifies the C compiler as Emscripten* C compiler.
-> **_NOTE:_** See [CMake documentation](https://github.com/oneapi-src/oneTBB/blob/master/cmake/README.md) to learn about other options.
+> **_NOTE:_** See [CMake documentation](https://github.com/uxlfoundation/oneTBB/blob/master/cmake/README.md) to learn about other options.
## Run Test
diff --git a/cmake/README.md b/cmake/README.md
index 60df73c072..4e0d8d54aa 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -10,6 +10,7 @@ TBB_SANITIZE:STRING - Sanitizer parameter, passed to compiler/linker
TBB_SIGNTOOL:FILEPATH - Tool for digital signing, used in post-install step for libraries if provided.
TBB_SIGNTOOL_ARGS:STRING - Additional arguments for TBB_SIGNTOOL, used if TBB_SIGNTOOL is set.
TBB_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB) build (ON by default)
+TBB_FIND_PACKAGE - Enable search for external oneTBB using find_package instead of build from sources (OFF by default)
TBBMALLOC_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB) memory allocator build (ON by default)
TBBMALLOC_PROXY_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB) memory allocator proxy build (requires TBBMALLOC_BUILD. ON by default)
TBB4PY_BUILD:BOOL - Enable Intel(R) oneAPI Threading Building Blocks (oneTBB) Python module build (OFF by default)
@@ -19,7 +20,10 @@ TBB_INSTALL_VARS:BOOL - Enable auto-generated vars installation(packages generat
TBB_VALGRIND_MEMCHECK:BOOL - Enable scan for memory leaks using Valgrind (OFF by default)
TBB_DISABLE_HWLOC_AUTOMATIC_SEARCH - Disable HWLOC automatic search by pkg-config tool (OFF by default)
TBB_ENABLE_IPO - Enable Interprocedural Optimization (IPO) during the compilation (ON by default)
+TBB_CONTROL_FLOW_GUARD:BOOL - Enable Control Flow Guard (CFG) during the compilation (OFF by default)
TBB_BUILD_APPLE_FRAMEWORKS - Enable the Apple* frameworks instead of dylibs, only available on the Apple platform. (OFF by default)
+TBB_FILE_TRIM - Enable __FILE__ trim, replace a build-time full path with a relative path in the debug info and macro __FILE__; use it to make
+ reproducible location-independent builds (ON by default)
```
## Configure, Build, and Test
@@ -45,7 +49,7 @@ Some useful options:
#### TBBBind Library Configuration
-> **_TIP:_** It is recommended to install the HWLOC* library. See [oneTBB documentation](https://oneapi-src.github.io/oneTBB/GSG/next_steps.html#hybrid-cpu-and-numa-support) for details.
+> **_TIP:_** It is recommended to install the HWLOC* library. See [oneTBB documentation](https://uxlfoundation.github.io/oneTBB/GSG/next_steps.html#hybrid-cpu-and-numa-support) for details.
The TBBbind library has three versions: `tbbbind`, `tbbbind_2_0`, and `tbbbind_2_5`. Each of these versions is linked with the corresponding HWLOC* library version:
- `tbbbind` links with `HWLOC 1.11.x`
@@ -267,7 +271,7 @@ Variable | Description
`TBB_VERSION` | oneTBB version (format: `...`)
`TBB_IMPORTED_TARGETS` | All created oneTBB imported targets (not supported for builds from source code)
-Starting from [oneTBB 2021.1](https://github.com/oneapi-src/oneTBB/releases/tag/v2021.1), GitHub* release TBBConfig files in the binary packages are located under `/lib/cmake/TBB`.
+Starting from [oneTBB 2021.1](https://github.com/uxlfoundation/oneTBB/releases/tag/v2021.1), GitHub* release TBBConfig files in the binary packages are located under `/lib/cmake/TBB`.
For example, `TBB_DIR` should be set to `/lib/cmake/TBB`.
TBBConfig files are automatically created during the build from source code and can be installed together with the library.
diff --git a/cmake/compilers/AppleClang.cmake b/cmake/compilers/AppleClang.cmake
index 5ebbdbd1a6..9cf0b08628 100644
--- a/cmake/compilers/AppleClang.cmake
+++ b/cmake/compilers/AppleClang.cmake
@@ -1,4 +1,4 @@
-# Copyright (c) 2020-2022 Intel Corporation
+# Copyright (c) 2020-2024 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -42,6 +42,10 @@ if ("${_tbb_target_architectures}" MATCHES "(x86_64|amd64|AMD64)") # OSX systems
endif()
unset(_tbb_target_architectures)
+if (TBB_FILE_TRIM AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
+ set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -ffile-prefix-map=${NATIVE_TBB_PROJECT_ROOT_DIR}/= -ffile-prefix-map=${NATIVE_TBB_RELATIVE_BIN_PATH}/=)
+endif ()
+
# TBB malloc settings
set(TBBMALLOC_LIB_COMPILE_FLAGS -fno-rtti -fno-exceptions)
diff --git a/cmake/compilers/Clang.cmake b/cmake/compilers/Clang.cmake
index dcd66634f3..a0297faa82 100644
--- a/cmake/compilers/Clang.cmake
+++ b/cmake/compilers/Clang.cmake
@@ -80,6 +80,10 @@ if (MINGW)
list(APPEND TBB_COMMON_COMPILE_FLAGS -U__STRICT_ANSI__)
endif()
+if (TBB_FILE_TRIM AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
+ set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -ffile-prefix-map=${NATIVE_TBB_PROJECT_ROOT_DIR}/= -ffile-prefix-map=${NATIVE_TBB_RELATIVE_BIN_PATH}/=)
+endif ()
+
set(TBB_IPO_COMPILE_FLAGS $<$>:-flto>)
set(TBB_IPO_LINK_FLAGS $<$>:-flto>)
diff --git a/cmake/compilers/GNU.cmake b/cmake/compilers/GNU.cmake
index 3b9af64263..da6b408af3 100644
--- a/cmake/compilers/GNU.cmake
+++ b/cmake/compilers/GNU.cmake
@@ -82,6 +82,9 @@ if (NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL Intel)
# gcc 6.0 and later have -flifetime-dse option that controls elimination of stores done outside the object lifetime
set(TBB_DSE_FLAG $<$>:-flifetime-dse=1>)
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} $<$>:-fstack-clash-protection>)
+
+ # Suppress GCC 12.x-14.x warning here that to_wait_node(n)->my_is_in_list might have size 0
+ set(TBB_COMMON_LINK_FLAGS ${TBB_COMMON_LINK_FLAGS} $<$>,$>:-Wno-stringop-overflow>)
endif()
# Workaround for heavy tests and too many symbols in debug (rellocation truncated to fit: R_MIPS_CALL16)
@@ -110,6 +113,10 @@ if (NOT CMAKE_CXX_FLAGS MATCHES "_FORTIFY_SOURCE")
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} $<$>:-D_FORTIFY_SOURCE=2> )
endif ()
+if (TBB_FILE_TRIM AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8)
+ set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -ffile-prefix-map=${NATIVE_TBB_PROJECT_ROOT_DIR}/= -ffile-prefix-map=${NATIVE_TBB_RELATIVE_BIN_PATH}/=)
+endif ()
+
# TBB malloc settings
set(TBBMALLOC_LIB_COMPILE_FLAGS -fno-rtti -fno-exceptions)
set(TBB_OPENMP_FLAG -fopenmp)
diff --git a/cmake/compilers/IntelLLVM.cmake b/cmake/compilers/IntelLLVM.cmake
index a9ebb3e670..b514378164 100644
--- a/cmake/compilers/IntelLLVM.cmake
+++ b/cmake/compilers/IntelLLVM.cmake
@@ -1,4 +1,4 @@
-# Copyright (c) 2020-2023 Intel Corporation
+# Copyright (c) 2020-2024 Intel Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -20,6 +20,9 @@ if (WIN32)
else()
include(${CMAKE_CURRENT_LIST_DIR}/Clang.cmake)
set(TBB_IPO_COMPILE_FLAGS $<$>:-ipo>)
+ # "--exclude-libs,ALL" is used to avoid accidental exporting of symbols
+ # from statically linked libraries
+ set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} -static-intel -Wl,--exclude-libs,ALL)
set(TBB_OPENMP_FLAG -qopenmp)
endif()
set(TBB_IPO_LINK_FLAGS ${TBB_IPO_LINK_FLAGS} ${TBB_IPO_COMPILE_FLAGS})
diff --git a/cmake/compilers/MSVC.cmake b/cmake/compilers/MSVC.cmake
index 6568ec7eb8..b49e543776 100644
--- a/cmake/compilers/MSVC.cmake
+++ b/cmake/compilers/MSVC.cmake
@@ -77,6 +77,17 @@ if (TBB_WINDOWS_DRIVER)
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} /D _UNICODE /DUNICODE /DWINAPI_FAMILY=WINAPI_FAMILY_APP /D__WRL_NO_DEFAULT_LIB__)
endif()
+if (TBB_FILE_TRIM)
+ add_compile_options(
+ "$<$:/d1trimfile:${NATIVE_TBB_PROJECT_ROOT_DIR}\\>"
+ "$<$:/d1trimfile:${CMAKE_SOURCE_DIR}/>")
+endif()
+
+if (TBB_CONTROL_FLOW_GUARD)
+ set(TBB_LIB_COMPILE_FLAGS ${TBB_LIB_COMPILE_FLAGS} /guard:cf)
+ set(TBB_LIB_LINK_FLAGS ${TBB_LIB_LINK_FLAGS} /guard:cf)
+endif()
+
if (CMAKE_CXX_COMPILER_ID MATCHES "(Clang|IntelLLVM)")
if (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86|AMD64|i.86)")
set(TBB_COMMON_COMPILE_FLAGS ${TBB_COMMON_COMPILE_FLAGS} -mrtm -mwaitpkg)
diff --git a/doc/GSG/get_started.rst b/doc/GSG/get_started.rst
index d437ce89b8..2af04be6b0 100644
--- a/doc/GSG/get_started.rst
+++ b/doc/GSG/get_started.rst
@@ -8,11 +8,36 @@ It is helpful for new users of parallel programming and experienced developers t
It is recommended for you to have a basic knowledge of C++ programming and some experience with parallel programming concepts.
+|full_name| is a runtime-based parallel programming model for C++ code that uses tasks.
+The template-based runtime library can help you harness the latent performance of multi-core processors.
+
+oneTBB enables you to simplify parallel programming by breaking computation into parallel running tasks. Within a single process,
+parallelism is carried out by mapping tasks to threads. Threads are an operating system mechanism that allows the same or different sets of instructions
+to be executed simultaneously. Using threads can make your program work faster and more efficiently.
+
+Here you can see one of the possible executions of tasks by threads.
+
+.. figure:: Images/how-oneTBB-works.png
+ :scale: 70%
+ :align: center
+
+Use oneTBB to write scalable applications that:
+
+* Specify logical parallel structure instead of threads.
+* Emphasize data-parallel programming.
+* Take advantage of concurrent collections and parallel algorithms.
+
+oneTBB supports nested parallelism and load balancing. It means that you can use the library without worrying about oversubscribing a system, which happens when more tasks are assigned to a system than it can handle efficiently.
+
+oneTBB is used in different areas, such as scientific simulations, gaming, data analysis, etc.
+
+It is available as a stand-alone product and as part of the |base_tk|.
+
To start using oneTBB, follow the next steps:
*********************************************
-#. Learn what :ref:`oneTBB is` and see the :ref:`System Requirements`.
+#. See the :ref:`System Requirements`.
#. :ref:`Install oneTBB`.
#. Run your program using oneTBB following the :ref:`Next Steps `.
#. Learn how to :ref:`Integrate oneTBB into your project ` using CMake* and pkg-config tool.
diff --git a/doc/GSG/installation.rst b/doc/GSG/installation.rst
index e6b6a09c34..d8f1933265 100644
--- a/doc/GSG/installation.rst
+++ b/doc/GSG/installation.rst
@@ -3,5 +3,5 @@
Installation
============
-See the `installation instructions `_
+See the `installation instructions `_
that will help you to install |short_name| successfully.
\ No newline at end of file
diff --git a/doc/GSG/integrate.rst b/doc/GSG/integrate.rst
index 13fd679dab..2b38dba246 100644
--- a/doc/GSG/integrate.rst
+++ b/doc/GSG/integrate.rst
@@ -26,10 +26,10 @@ Integrating oneTBB into your project using CMake*:
To add oneTBB to another project using CMake*, add the following commands to your ``CMakeLists.txt`` file:
-.. code-block::
+.. code-block:: cmake
- `find_package(TBB REQUIRED)`
- `target_link_libraries(my_executable TBB::tbb)`
+ find_package(TBB REQUIRED)
+ target_link_libraries(my_executable TBB::tbb)
After that, configure your project with CMake* as usual.
diff --git a/doc/GSG/intro.rst b/doc/GSG/intro.rst
deleted file mode 100644
index da8c558d21..0000000000
--- a/doc/GSG/intro.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-.. _intro:
-
-What oneTBB Is
-==============
-
-|full_name| is a runtime-based parallel programming model for C++ code that uses threads.
-The template-based runtime library can help you harness the latent performance of multi-core processors.
-
-oneTBB enables you to simplify parallel programming by breaking computation into parallel running tasks. Within a single process,
-parallelism is carried out through threads, an operating system mechanism that allows the same or different sets of instructions
-to be executed simultaneously. Using threads can make your program work faster and more efficiently.
-
-Here you can see one of the possible executions of tasks by threads.
-
-.. figure:: Images/how-oneTBB-works.png
- :scale: 70%
- :align: center
-
-Use oneTBB to write scalable applications that:
-
-* Specify logical parallel structure instead of threads.
-* Emphasize data-parallel programming.
-* Take advantage of concurrent collections and parallel algorithms.
-
-oneTBB supports nested parallelism and load balancing. It means that you can use the library without worrying about oversubscribing a system, which happens when more tasks are assigned to a system than it can handle efficiently.
-
-oneTBB is used in different areas, such as scientific simulations, gaming, data analysis, etc.
-
-It is available as a stand-alone product and as part of the |base_tk|.
diff --git a/doc/GSG/samples.rst b/doc/GSG/samples.rst
index f19a256238..18bf812801 100644
--- a/doc/GSG/samples.rst
+++ b/doc/GSG/samples.rst
@@ -10,40 +10,40 @@ The following samples are available:
* **Containers**
- * `concurrent_hash_map `_
- * `concurrent_priority_queue `_
-
-* `Flow Graph `_
- * `A solution to the binpacking problem using a queue_node, a buffer_node, and function_node. `_
- * `Cholesky Factorization algorithm `_
- * `An implementation of dining philosophers in graph using the reserving join_node `_
- * `A parallel implementation of bzip2 block-sorting file compressor `_
- * `An example of a collection of digital logic gates that can be easily composed into larger circuits `_
- * `An example of a Kohonen Self-Organizing Map using cancellation `_
+ * `concurrent_hash_map `_
+ * `concurrent_priority_queue `_
+
+* `Flow Graph `_
+ * `A solution to the binpacking problem using a queue_node, a buffer_node, and function_node. `_
+ * `Cholesky Factorization algorithm `_
+ * `An implementation of dining philosophers in graph using the reserving join_node `_
+ * `A parallel implementation of bzip2 block-sorting file compressor `_
+ * `An example of a collection of digital logic gates that can be easily composed into larger circuits `_
+ * `An example of a Kohonen Self-Organizing Map using cancellation `_
* `Split computational kernel for execution between CPU and GPU `_
* **Algorithms**
- * `parallel_for `_
- * `Game of life overlay `_
- * `Polygon overlay `_
- * `Parallel seismic wave simulation `_
- * `Parallel 2-D raytracer/renderer `_
- * `Find largest matching substrings `_
+ * `parallel_for `_
+ * `Game of life overlay `_
+ * `Polygon overlay `_
+ * `Parallel seismic wave simulation `_
+ * `Parallel 2-D raytracer/renderer `_
+ * `Find largest matching substrings `_
* `Resumable task: Split computational kernel for execution between CPU and GPU `_
- * `parallel_for_each `_
- * `parallel_pipeline `_
- * `parallel_reduce `_
+ * `parallel_for_each `_
+ * `parallel_pipeline `_
+ * `parallel_reduce `_
* **Task Scheduler**
- * `task_arena `_
- * `task_group `_
+ * `task_arena `_
+ * `task_group `_
* `Execute similar computational kernels, with one task executing the SYCL* code and the other task executing the oneTBB code `_
* **Other**
- * `Compute Fibonacci numbers in different ways `_
+ * `Compute Fibonacci numbers in different ways `_
.. note:: You can also refer to the `oneAPI Samples `_ to learn more about the ecosystem.
\ No newline at end of file
diff --git a/doc/GSG/system_requirements.rst b/doc/GSG/system_requirements.rst
index d5e951f35a..593680147f 100644
--- a/doc/GSG/system_requirements.rst
+++ b/doc/GSG/system_requirements.rst
@@ -3,4 +3,4 @@
System Requirements
*******************
-Refer to the `oneTBB System Requirements `_.
\ No newline at end of file
+Refer to the `oneTBB System Requirements `_.
\ No newline at end of file
diff --git a/doc/README.md b/doc/README.md
index 0cdd56f9c1..0e17d2e2dd 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -15,7 +15,7 @@ Do the following to generate HTML output of the documentation:
1. Clone oneTBB repository:
```
-git clone https://github.com/oneapi-src/oneTBB.git
+git clone https://github.com/uxlfoundation/oneTBB.git
```
2. Go to the `doc` folder:
diff --git a/doc/conf.py b/doc/conf.py
index 263b7c5c4c..a16dd5dec9 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -126,13 +126,13 @@
if BUILD_TYPE == 'dita':
html_theme_options = {
- 'repository_url': 'https://github.com/oneapi-src/oneTBB',
+ 'repository_url': 'https://github.com/uxlfoundation/oneTBB',
'path_to_docs': 'doc',
'repository_branch': 'master'
}
else:
html_theme_options = {
- 'repository_url': 'https://github.com/oneapi-src/oneTBB',
+ 'repository_url': 'https://github.com/uxlfoundation/oneTBB',
'path_to_docs': 'doc',
'use_issues_button': True,
'use_edit_page_button': True,
@@ -140,9 +140,7 @@
}
if BUILD_TYPE != 'oneapi' and BUILD_TYPE != 'dita':
- html_theme_options = {
- "extra_footer": "
oneTBB is licensed under Apache License Version 2.0. Refer to the LICENSE file for the full license text and copyright notice.
"
# Add any paths that contain custom static files (such as style sheets) here,
@@ -159,11 +157,7 @@
else:
html_js_files = ['custom.js']
-html_theme_options = {
- "logo": {
- "text": "oneTBB Documentation",
- }
-}
+html_theme_options["logo"] = {"text": "oneTBB Documentation"}
html_logo = '_static/oneAPI-rgb-rev-100.png'
html_favicon = '_static/favicons.png'
@@ -304,7 +298,7 @@
# -- Options for intersphinx extension ---------------------------------------
# Example configuration for intersphinx: refer to the Python standard library.
-intersphinx_mapping = {'https://docs.python.org/': None}
+intersphinx_mapping = {'python': ('https://docs.python.org/3', None)}
# -- Options for todo extension ----------------------------------------------
diff --git a/doc/index/toctree.rst b/doc/index/toctree.rst
index fba9aee46c..542a4bb601 100644
--- a/doc/index/toctree.rst
+++ b/doc/index/toctree.rst
@@ -17,7 +17,6 @@
:maxdepth: 2
/GSG/get_started
- /GSG/intro
/GSG/system_requirements
/GSG/installation
/GSG/next_steps
diff --git a/doc/main/intro/help_support.rst b/doc/main/intro/help_support.rst
index 278083d658..a1ab4097bc 100644
--- a/doc/main/intro/help_support.rst
+++ b/doc/main/intro/help_support.rst
@@ -12,4 +12,4 @@ Getting Help and Support
For general information about oneTBB technical support, product
updates, user forums, FAQs, tips and tricks and other support
- questions, go to `GitHub issues `_.
+ questions, go to `GitHub issues `_.
diff --git a/doc/main/reference/reference.rst b/doc/main/reference/reference.rst
index c8ba0af944..4c293c02c7 100644
--- a/doc/main/reference/reference.rst
+++ b/doc/main/reference/reference.rst
@@ -50,3 +50,4 @@ The key properties of a preview feature are:
concurrent_lru_cache_cls
task_group_extensions
custom_mutex_chmap
+ try_put_and_wait
diff --git a/doc/main/reference/rvalue_reduce.rst b/doc/main/reference/rvalue_reduce.rst
index 69d480d465..7cf66d86b3 100644
--- a/doc/main/reference/rvalue_reduce.rst
+++ b/doc/main/reference/rvalue_reduce.rst
@@ -33,7 +33,8 @@ or
.. cpp:function:: Value Func::operator()(const Range& range, const Value& x) const
- Accumulates the result for a subrange, starting with initial value ``x``. The ``Range`` type must meet the `Range requirements _`.
+ Accumulates the result for a subrange, starting with initial value ``x``. The ``Range`` type must meet the
+ `Range requirements `_.
The ``Value`` type must be the same as a corresponding template parameter for the `parallel_reduce algorithm `_.
If both ``rvalue`` and ``lvalue`` forms are provided, the ``rvalue`` is preferred.
@@ -55,6 +56,7 @@ Example
*******
.. code:: cpp
+
// C++17
#include
#include
diff --git a/doc/main/reference/try_put_and_wait.rst b/doc/main/reference/try_put_and_wait.rst
new file mode 100644
index 0000000000..4e05961f39
--- /dev/null
+++ b/doc/main/reference/try_put_and_wait.rst
@@ -0,0 +1,324 @@
+.. _try_put_and_wait:
+
+Waiting for Single Messages in Flow Graph
+=========================================
+
+.. contents::
+ :local:
+ :depth: 1
+
+Description
+***********
+
+This feature adds a new ``try_put_and_wait`` interface to the receiving nodes in the Flow Graph.
+This function puts a message as an input into a Flow Graph and waits until all work related to
+that message is complete.
+``try_put_and_wait`` may reduce latency compared to calling ``graph::wait_for_all`` since
+``graph::wait_for_all`` waits for all work, including work that is unrelated to the input message, to complete.
+
+``node.try_put_and_wait(msg)`` performs ``node.try_put(msg)`` on the node and waits until the work on ``msg`` is completed.
+Therefore, the following conditions are true:
+
+* Any task initiated by any node in the Flow Graph that involves working with ``msg`` or any other intermediate result
+ computed from ``msg`` is completed.
+* No intermediate results computed from ``msg`` remain in any buffers in the graph.
+
+.. caution::
+
+ To prevent ``try_put_and_wait`` calls from infinite waiting, avoid using buffering nodes at the end of the Flow Graph since the final result
+ will not be automatically consumed by the Flow Graph.
+
+.. caution::
+
+ The ``multifunction_node`` and ``async_node`` classes are not currently supported by this feature. Including one of these nodes in the
+ Flow Graph may cause ``try_put_and_wait`` to exit early, even if the computations on the initial input message are
+ still in progress.
+
+API
+***
+
+Header
+------
+
+.. code:: cpp
+
+ #define TBB_PREVIEW_FLOW_GRAPH_FEATURES // macro option 1
+ #define TBB_PREVIEW_FLOW_GRAPH_TRY_PUT_AND_WAIT // macro option 2
+ #include
+
+Synopsis
+--------
+
+.. code:: cpp
+
+ namespace oneapi {
+ namespace tbb {
+ template
+ class continue_node {
+ public:
+ bool try_put_and_wait(const continue_msg& input);
+ }; // class continue_node
+
+ template
+ class function_node {
+ public:
+ bool try_put_and_wait(const Input& input);
+ }; // class function_node
+
+ template
+ class overwrite_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class overwrite_node
+
+ template
+ class write_once_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class write_once_node
+
+ template
+ class buffer_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class buffer_node
+
+ template
+ class queue_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class queue_node
+
+ template >
+ class priority_queue_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class priority_queue_node
+
+ template
+ class sequencer_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class sequencer_node
+
+ template
+ class limiter_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class limiter_node
+
+ template
+ class broadcast_node {
+ public:
+ bool try_put_and_wait(const T& input);
+ }; // class broadcast_node
+
+ template
+ class split_node {
+ public:
+ bool try_put_and_wait(const TupleType& input);
+ }; // class split_node
+ } // namespace tbb
+ } // namespace oneapi
+
+Member Functions
+----------------
+
+.. code:: cpp
+
+ template
+ bool continue_node