Skip to content

Commit 3120c9c

Browse files
committed
lead the release notes with the macos install failure
RcppParallel 6.1.1 currently fails to install on r-release-macos-x86_64, which is the most consequential thing 6.2.0 fixes. The NEWS entry framed it as affecting code that includes the header; src/tbb.cpp includes it via RcppParallel/TBB.h, so it broke our own compilation too.
1 parent 5363457 commit 3120c9c

2 files changed

Lines changed: 31 additions & 9 deletions

File tree

NEWS.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# RcppParallel 6.2.0
22

3+
* Fixed a failure to install with toolchains that accept `-std=c++20` but
4+
provide a pre-C++20 standard library, with errors of the form "no member
5+
named 'random_access_iterator' in namespace 'std'" from
6+
`tbb/parallel_for_each.h`. The bundled oneTBB selected its concepts-based
7+
iterator dispatch on a macro testing only the language standard, rather than
8+
the `__TBB_CPP20_CONCEPTS_PRESENT` used elsewhere in that same header. This
9+
affected RcppParallel's own compilation, as well as any package including
10+
the header; CRAN's macOS x86_64 machines, which pair Apple clang 14 with the
11+
macOS 11.3 SDK, are one such toolchain. (#268)
12+
313
* On Windows, RcppParallel now builds the bundled oneTBB as a shared library
414
and links against it, shipping `tbb.dll` and `tbbmalloc.dll` alongside the
515
package -- the same arrangement already used on every other platform.
@@ -53,12 +63,6 @@
5363
the package -- for a pre-built binary, the Rtools tree of the machine that
5464
built it. Both now describe the installation actually in use. (#270, #273)
5565

56-
* Fixed an issue where compiling code including `tbb/parallel_for_each.h`
57-
could fail with toolchains that accept `-std=c++20` but provide a
58-
pre-C++20 standard library, with errors of the form "no member named
59-
'random_access_iterator' in namespace 'std'". This affected CRAN's macOS
60-
x86_64 machines, which pair Apple clang 14 with the macOS 11.3 SDK. (#268)
61-
6266
* Fixed an issue where building the bundled oneTBB could fail when `CXX`
6367
(or `CC`) was configured with a leading compiler launcher such as `ccache`
6468
(e.g. `CXX = "ccache g++"`). The launcher is now forwarded to cmake via

cran-comments.md

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,26 @@
11
## RcppParallel 6.2.0
22

3-
This release follows closely on 6.1.1. We apologize for the quick turnaround;
4-
it repairs a regression that leaves Windows users of RcppParallel unable to
5-
build some downstream packages.
3+
This release follows closely on 6.1.1, and we apologize for the quick
4+
turnaround. It fixes the installation failure currently reported for 6.1.1 on
5+
r-release-macos-x86_64, along with a regression that leaves Windows users
6+
unable to build some downstream packages from source.
7+
8+
### Installation failure on r-release-macos-x86_64
9+
10+
RcppParallel 6.1.1 fails to install on that machine, with:
11+
12+
no member named 'random_access_iterator' in namespace 'std'
13+
14+
The bundled oneTBB guarded a concepts-based iterator dispatch in
15+
`parallel_for_each.h` on a macro that only tests the language standard. With a
16+
toolchain that accepts `-std=c++20` but provides a pre-C++20 standard library
17+
-- Apple clang 14 with the macOS 11.3 SDK, as on that check machine -- it
18+
therefore reached for `std::random_access_iterator`, which is not available.
19+
oneTBB already defines `__TBB_CPP20_CONCEPTS_PRESENT` as 0 for clang, and
20+
guards the rest of that header on it; this release uses it for the dispatch
21+
block as well, so the pre-C++20 fallback is selected as intended.
22+
23+
### Downstream builds on Windows
624

725
Since 6.0.0, RcppParallel has linked the static TBB provided by Rtools on
826
Windows. That makes the TBB version, and its ABI, a property of the user's

0 commit comments

Comments
 (0)