|
1 | | -# RcppParallel (development version) |
2 | | - |
3 | | -* On macOS, `RcppParallel::LdFlags()` now also emits an `-rpath` entry for the |
4 | | - directory containing the TBB libraries. The libraries record an |
5 | | - `@rpath`-relative install name, so packages linking against them previously |
6 | | - produced binaries with no runtime search path for TBB; those binaries could |
7 | | - only be loaded when RcppParallel (and hence TBB) already happened to be |
8 | | - loaded into the process, and failed with "Library not loaded: |
9 | | - @rpath/libtbb.dylib" otherwise. (#209) |
| 1 | +# RcppParallel 6.2.0 |
10 | 2 |
|
11 | 3 | * On Windows, RcppParallel now builds the bundled oneTBB as a shared library |
12 | 4 | and links against it, shipping `tbb.dll` and `tbbmalloc.dll` alongside the |
13 | 5 | package -- the same arrangement already used on every other platform. |
14 | 6 | Previously it linked the static TBB provided by Rtools directly into |
15 | 7 | `RcppParallel.dll`, which meant the TBB version (and ABI) depended on the |
16 | 8 | user's toolchain, and left downstream packages with no TBB library to link |
17 | | - against. Building it ourselves gives every platform the same oneTBB and makes |
18 | | - the ABI a property of RcppParallel. `TBB_LIB` / `TBB_INC` are still honoured |
19 | | - for anyone supplying their own build. |
| 9 | + against. Rtools42 in particular provides Intel TBB 2017, whose headers |
| 10 | + downstream packages cannot build against: StanHeaders uses |
| 11 | + `tbb::this_task_arena::isolate`, which that release still gates behind |
| 12 | + `TBB_PREVIEW_TASK_ISOLATION` and does not export from its library, so rstan |
| 13 | + could no longer be built on R 4.2 for Windows. Building TBB ourselves gives |
| 14 | + every platform the same oneTBB and makes the ABI a property of RcppParallel |
| 15 | + rather than of the toolchain. `TBB_LIB` / `TBB_INC` are still honoured for |
| 16 | + anyone supplying their own build. (#269, #274) |
20 | 17 |
|
21 | 18 | * Building RcppParallel now requires cmake (>= 3.5) on all platforms, as |
22 | 19 | `SystemRequirements` has always declared. Previously a missing or unusable |
|
26 | 23 | shipped cmake since Rtools42, so this should not affect Windows users in |
27 | 24 | practice. Note that the tinythread backend remains selectable at runtime via |
28 | 25 | `RCPP_PARALLEL_BACKEND=tinythread`; it is only no longer a build outcome. |
| 26 | + (#275) |
29 | 27 |
|
30 | 28 | * As a consequence, `RcppParallel::RcppParallelLibs()` now emits `-ltbb` and |
31 | 29 | `-ltbbmalloc` on Windows, in addition to `-lRcppParallel` (which remains |
|
42 | 40 | already was by the shared libraries on other platforms, so binaries built |
43 | 41 | against RcppParallel 5.1.11 and earlier continue to resolve it. |
44 | 42 |
|
| 43 | +* On macOS, `RcppParallel::LdFlags()` now also emits an `-rpath` entry for the |
| 44 | + directory containing the TBB libraries. The libraries record an |
| 45 | + `@rpath`-relative install name, so packages linking against them previously |
| 46 | + produced binaries with no runtime search path for TBB; those binaries could |
| 47 | + only be loaded when RcppParallel (and hence TBB) already happened to be |
| 48 | + loaded into the process, and failed with "Library not loaded: |
| 49 | + @rpath/libtbb.dylib" otherwise. (#209, #271) |
| 50 | + |
45 | 51 | * Fixed `RcppParallel::tbbLibraryPath()` returning `NULL` on Windows, and |
46 | 52 | `tbbRoot()` reporting a directory that need not exist on the machine running |
47 | 53 | the package -- for a pre-built binary, the Rtools tree of the machine that |
48 | | - built it. Both now describe the installation actually in use. (#270) |
| 54 | + built it. Both now describe the installation actually in use. (#270, #273) |
49 | 55 |
|
50 | 56 | * Fixed an issue where compiling code including `tbb/parallel_for_each.h` |
51 | 57 | could fail with toolchains that accept `-std=c++20` but provide a |
52 | 58 | pre-C++20 standard library, with errors of the form "no member named |
53 | 59 | 'random_access_iterator' in namespace 'std'". This affected CRAN's macOS |
54 | | - x86_64 machines, which pair Apple clang 14 with the macOS 11.3 SDK. |
55 | | - |
56 | | -* On Windows, RcppParallel now only uses the copy of TBB provided by Rtools |
57 | | - when that copy is oneTBB; otherwise, the bundled oneTBB is built from |
58 | | - sources, as it already is on other platforms. Rtools42 provides Intel TBB |
59 | | - 2017, whose headers downstream packages cannot build against: StanHeaders |
60 | | - uses `tbb::this_task_arena::isolate`, which that release still gates behind |
61 | | - `TBB_PREVIEW_TASK_ISOLATION` and does not export from its library. As a |
62 | | - result, rstan could no longer be built on R 4.2 for Windows. A TBB |
63 | | - configured explicitly via `TBB_LIB` is still used as-is, whatever its |
64 | | - vintage. |
65 | | - |
66 | | -* On Windows, `RcppParallel::RcppParallelLibs()` once again offers the TBB |
67 | | - stub library, so that packages taking all of their linker flags from it |
68 | | - (e.g. rstan) can resolve TBB symbols which `RcppParallel.dll` does not |
69 | | - itself re-export. |
70 | | - |
71 | | -* Fixed an issue on Windows where a failure to build the TBB stub library |
72 | | - could go unreported, since `R CMD SHLIB` has been seen to exit successfully |
73 | | - even when the link failed. Installation completed, but shipped a package |
74 | | - with no `tbb.dll` -- which packages linking `-ltbb` then discovered only |
75 | | - when they failed to load. Installation now fails instead. |
| 60 | + x86_64 machines, which pair Apple clang 14 with the macOS 11.3 SDK. (#268) |
76 | 61 |
|
77 | 62 | * Fixed an issue where building the bundled oneTBB could fail when `CXX` |
78 | 63 | (or `CC`) was configured with a leading compiler launcher such as `ccache` |
79 | 64 | (e.g. `CXX = "ccache g++"`). The launcher is now forwarded to cmake via |
80 | 65 | `CMAKE_<LANG>_COMPILER_LAUNCHER` instead of being mistaken for the compiler |
81 | | - itself. |
| 66 | + itself. (#267) |
82 | 67 |
|
83 | 68 |
|
84 | 69 | # RcppParallel 6.1.1 |
|
0 commit comments