[Rd] Possible ABI change in R 4.0.1
Gábor Csárdi
c@@rd|@g@bor @end|ng |rom gm@||@com
Mon Jun 29 20:55:34 CEST 2020
Hi all,
it seems that from R 4.0.1 EXTPTR_PTR can be either a macro or a
function, depending on whether USE_RINTERNALS is requested.
Jeroen helped me find that this was in 78592:
https://github.com/wch/r-source/commit/c634fec5214e73747b44d7c0e6f047fefe44667d
This is a problem, because binary packages that are built on R 4.0.1
or R 4.0.2 will potentially not load on R 4.0.0, if they use the
EXTPTR_PTR function.
E.g. this is R 4.0.0 on Linux:
> library(Rcpp)
Error: package or namespace load failed for ‘Rcpp’ in dyn.load(file,
DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/library/Rcpp/libs/Rcpp.so':
Error relocating /usr/local/lib/R/library/Rcpp/libs/Rcpp.so:
EXTPTR_PTR: symbol not found
In addition: Warning message:
package ‘Rcpp’ was built under R version 4.0.1
It is easiest to reproduce this on Windows, because the CRAN binaries
are now built on R 4.0.2, so if you install Rcpp on R 4.0.0 from CRAN,
and try to load it you'll get:
> library(Rcpp)
Error: package or namespace load failed for 'Rcpp' in inDL(x,
as.logical(local), as.logical(now), ...):
unable to load shared object
'C:/Users/csard/R/win-library/4.0/Rcpp/libs/x64/Rcpp.dll':
LoadLibrary failure: The specified procedure could not be found.
In addition: Warning message:
package 'Rcpp' was built under R version 4.0.2
I suppose this change was not intended?
Best,
Gabor
More information about the R-devel
mailing list