diff --git a/.dev/CRAN_Release.cmd b/.dev/CRAN_Release.cmd index b5a1822be1..313f04c5bb 100644 --- a/.dev/CRAN_Release.cmd +++ b/.dev/CRAN_Release.cmd @@ -205,6 +205,7 @@ R CMD check data.table_1.12.7.tar.gz cd ~/build wget -N https://stat.ethz.ch/R/daily/R-devel.tar.gz +rm -rf R-devel rm -rf R-devel-strict-* tar xvf R-devel.tar.gz mv R-devel R-devel-strict-gcc @@ -212,14 +213,16 @@ tar xvf R-devel.tar.gz mv R-devel R-devel-strict-clang tar xvf R-devel.tar.gz -# use gcc-8 and clang-8 in CC=, or latest available in `apt cache search gcc-` or `clang-` +cd R-devel # used for revdep testing: .dev/revdep.R +./configure CFLAGS="-O2 -Wall -pedantic -DSWITCH_TO_REFCNT" +# use gcc-8 and clang-8 in CC=, or latest available in `apt cache search gcc-` or `clang-` cd R-devel-strict-clang # important to change directory name before building not after because the path is baked into the build, iiuc ./configure --without-recommended-packages --disable-byte-compiled-packages --disable-openmp --enable-strict-barrier --disable-long-double CC="clang-8 -fsanitize=undefined,address -fno-sanitize=float-divide-by-zero -fno-omit-frame-pointer" # See R-exts#4.3.3 # CFLAGS an LIBS seem to be ignored now by latest R-devel/gcc, and it works without : CFLAGS="-O0 -g -Wall -pedantic" LIBS="-lpthread" # Adding --disable-long-double (see R-exts) in the same configure as ASAN/UBSAN used to fail, but now works. So now noLD is included in this strict build. -# Other flags used in the past: CC="gcc -std=gnu99" CFLAGS="-O0 -g -Wall -pedantic -ffloat-store -fexcess-precision=standard" +# Other flags used in the past: CC="gcc -std=gnu99" CFLAGS="-O0 -g -Wall -pedantic -DSWITCH_TO_REFCNT -ffloat-store -fexcess-precision=standard" # For ubsan, disabled openmp otherwise gcc fails in R's distance.c:256 error: ‘*.Lubsan_data0’ not specified in enclosing parallel # UBSAN gives direct line number under gcc but not clang it seems. clang-5.0 has been helpful too, though. # If use later gcc-8, add F77=gfortran-8 @@ -227,7 +230,7 @@ cd R-devel-strict-clang # important to change directory name before building # -fno-sanitize=float-divide-by-zero, otherwise /0 errors on R's summary.c (tests 648 and 1185.2) but ignore those: # https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=16000 # without ubsan, openmp can be on : -# ./configure --without-recommended-packages --disable-byte-compiled-packages --enable-strict-barrier CC="gcc -fsanitize=address -fno-sanitize=float-divide-by-zero -fno-omit-frame-pointer" CFLAGS="-O0 -g -Wall -pedantic" +# ./configure --without-recommended-packages --disable-byte-compiled-packages --enable-strict-barrier CC="gcc -fsanitize=address -fno-sanitize=float-divide-by-zero -fno-omit-frame-pointer" CFLAGS="-O0 -g -Wall -pedantic -DSWITCH_TO_REFCNT" make # change CC="clang-8|gcc-8 ..." in configure above and repeat diff --git a/NEWS.md b/NEWS.md index 52b5d76768..0b346019b0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -14,6 +14,8 @@ 1. Links in the manual were creating warnings when installing HTML, [#4000](https://github.com/Rdatatable/data.table/issues/4000). Thanks to Morgan Jacob. +2. One test needed to be adjusted to pass R-devel (R 4.0.0) which will soon have reference counting turned on, [#4058](https://github.com/Rdatatable/data.table/issues/4058). This motivated early release to CRAN because every day CRAN tests every package using the previous day's changes in R-devel; a much valued feature of the R ecosystem. It helps R-core if packages can pass changes in R-devel as soon as possible. Thanks to Luke Tierney for the notice, and for implementing reference counting which we look forward to very much. + # data.table [v1.12.6](https://github.com/Rdatatable/data.table/milestone/18?closed=1) (18 Oct 2019) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 64f9199719..157e68e8e7 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -5664,7 +5664,7 @@ test(1372.92, foverlaps(i, x, mult="all", type="equal", nomatch=NULL, which=TRUE x = c(1L,5L,3L) address(x) ## shouldn't increment NAM field out = capture.output(.Internal(inspect(x))) -test(1373, grepl("NAM\\(1\\)", out), TRUE) +test(1373, grepl("(NAM|REF)\\(1\\)", out), TRUE) # 'NAM'=R4; #4058 # fix for bug #762 - key'd data.table with a non-existing column in 'by' is not handled properly. DT <- data.table(x=1:5, z=5:1, key="z")