This blog is updated daily.
A general description is here.
‘tools::undoc(dir = D)’ and ‘codoc(dir = D)’ now also work when ‘D’ is a directory whose ‘normalizePath()’ed version does not end in the package name, e.g. from a symlink.
On Unix-like platforms which support the ‘getline’ C library function, ‘system(*,intern = TRUE)’ no longer truncates (output) lines longer than 8192 characters, thanks to Karl Millar's PR#16544.
S4 dispatch works within calls to ‘.Internal()’. This means explicit S4 generics are no longer needed for ‘unlist()’ and ‘as.vector()’.
The radix sort algorithm and implementation from ‘data.table’ (‘forder’) replaces the previous radix (counting) sort and adds a new method for ‘order()’. Contributed by Matt Dowle and Arun Srinivasan, the new algorithm supports logical, integer (even with large values), real, and character vectors. It outperforms all other methods, but there are some caveats (see ‘?sort’).
New function ‘grouping()’ returns a permutation that stably rearranges data so that identical values are adjacent. The return value includes extra partitioning information on the groups. The implementation came included with the new radix sort.
‘parallel::detectCores()’ now has default ‘logical = TRUE’ on all platforms - as this was the default on Windows, this change only affects Sparc Solaris.
Option ‘logical = FALSE’ is now supported on Linux and recent versions of OS X (for the latter, thanks to a suggestion of Kyaw Sint).
R now uses a new version of the logo (donated to the R Foundation by RStudio). It is defined in ‘.svg’ format, so will resize without unnecessary degradation when displayed on HTML pages-there is also a vector PDF version.
The minimum preferred version of PCRE has since R 3.0.0 been 8.32 (released in Nov 2012). Versions 8.10 to 8.31 are now deprecated (with warnings from ‘configure’), but will still be accepted until R 3.4.0.
‘configure’ looks for C functions ‘__cospi’, ‘__sinpi’ and ‘__tanpi’ and uses these if ‘cospi’ _etc_ are not found. (OS X is the main instance.)
When R headers such as ‘R.h’ and ‘Rmath.h’ are called from C++ code in packages they include the C++ versions of system headers such as ‘<cmath>’ rather than the legacy headers such as ‘<math.h>’. (Headers ‘Rinternals.h’ and ‘Rinterface.h’ already did, and inclusion of system headers can still be circumvented by defining ‘NO_C_HEADERS’, including as from this version for those two headers.)
The manual has long said that R headers should *not* be included within an ‘extern "C"’ block, and almost all the packages affected by this change were doing so.
The connections API now includes a function ‘R_GetConnection()’ which allows packages implementing connections to convert R ‘connection’ objects to ‘Rconnection’ handles used in the API. Code which previously used the low-level R-internal ‘getConnection()’ entry point should switch to the official API.
Data frames with a column named ‘"stringsAsFactors"’ now format and print correctly. (PR#16580)
Jumps to outer contexts, for example in error recovery, now make intermediate jumps to contexts where ‘on.exit()’ actions are established instead of trying to run all ‘on.exit()’ actions before jumping to the final target. This unwinds the stack gradually, releases resources held on the stack, and significantly reduces the chance of a segfault when running out of C stack space. Error handlers established using ‘withCallingHandlers()’ and ‘options("error")’ specifications are ignored when handling a C stack overflow error as attempting one of these would trigger a cascade of C stack overflow errors. These changes resolve PR#16753.
‘tsp(x) <- NULL’ did not handle correctly objects inheriting from both ‘"ts"’ and ‘"mts"’. PR#16769
‘format.POSIXlt()’ behaved incorrectly in R 3.2.4. E.g. the output of ‘format(as.POSIXlt(paste0(1940:2000,"-01-01"), tz = "CET"), usetz = TRUE)’ ended in two ‘"CEST"’ time formats.