diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9bc585a..2be0b53 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,6 +17,12 @@ jobs: description: "LLVM 5" llvm-version: "5" + - os: ubuntu-22.04 + # select libc++ as libstdc++ appears to be the default + description: "LLVM 16 libc++" + llvm-version: "16" + cmake-flags: '-DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-lc++abi"' + - os: ubuntu-20.04 description: "GCC 7" gcc-version: "7" diff --git a/README.md b/README.md index 53f37b4..6e3dceb 100644 --- a/README.md +++ b/README.md @@ -14,17 +14,18 @@ std::sort(std::execution::par, vec.begin(), vec.end()); // ^^^^^^^^^^^^^^^^^^^ native C++17 parallel Execution Policy ``` -Unfortunately compiler support [varies](https://en.cppreference.com/w/cpp/compiler_support/17): - -| | Linux | macOS | Windows | -|:-------------|:------------:|:------------:|:------------:| -| GCC 8- | ❌ | ❌ | ❌ | -| GCC 9+ | TBB Required | TBB Required | TBB Required | -| Clang | TBB Required | TBB Required | TBB Required | -| Apple Clang | | ❌ | | -| MSVC | | | ✅ | +Unfortunately compiler support [varies](https://en.cppreference.com/w/cpp/compiler_support/17). Quick summary of compilers' default standard libraries: + +| | Linux | macOS | Windows | +|:------------------|:------------:|:------------:|:------------:| +| GCC 8- | ❌ | ❌ | ❌ | +| GCC 9+ | TBB Required | TBB Required | TBB Required | +| Clang (libstdc++) | TBB Required | TBB Required | TBB Required | +| Clang (libc++) | ❌ | ❌ | ❌ | +| Apple Clang | | ❌ | | +| MSVC 15.7+ (2017) | | | ✅ | | [Parallel STL](https://www.intel.com/content/www/us/en/developer/articles/guide/get-started-with-parallel-stl.html) | TBB Required | TBB Required | TBB Required | -| **poolSTL** | ✅ | ✅ | ✅ | +| **poolSTL** | ✅ | ✅ | ✅ | PoolSTL is a *supplement* to fill in the support gaps. It is small, easy to integrate, and has no external dependencies. Note that poolSTL is not a full implementation; only the basics are covered.