This blog is updated daily.
A general description is here.
(Unix-alike) The default methods for ‘download.file()’ and ‘url()’ now choose ‘"libcurl"’ except for ‘file://’ URLs. There will be small changes in the format and wording of messages, including in rare cases if an issue is a warning or an error. For example, when HTTP re-direction occurs, messages often refer to the final URL rather than the specified one.
Those who use proxies should check that their settings are compatible (see ‘?download.file’: the most commonly used forms work for both ‘"internal"’ and ‘"libcurl"’).
‘table()’ has been amended to be more internally consistent and become back compatible to R <= 2.7.2 again. Consequently, ‘table(1:2, exclude = NULL)’ no longer contains a zero count for ‘<NA>’, but ‘useNA = "always"’ continues to do so.
The JIT (‘Just In Time’) byte-code compiler is now enabled by default at its level 3. This means functions will be compiled on first or second use and top-level loops will be compiled and then run. (Thanks to Tomas Kalibera for extensive work to make this possible.)
For now, the compiler will not compile code containing explicit calls to ‘browser()’: this is to support single stepping from the ‘browser()’ call.
JIT compilation can be disabled for the rest of the session using ‘compiler::enableJIT(0)’ or by setting environment variable ‘R_ENABLE_JIT’ to ‘0’.
Matrix products now consistently bypass BLAS when the inputs have ‘NaN’/‘Inf’ values. Performance of the check of inputs has been improved. Performance when BLAS is used is improved for matrix/vector and vector/matrix multiplication (DGEMV is now used instead of DGEMM).
One can now choose from alternative matrix product implementations _via_ ‘options(matprod = )’. The ‘"internal"’ implementation is not optimized for speed but consistent in precision with other summations in R (using ‘long double’ accumulators where available). ‘"blas"’ calls BLAS directly for best speed, yet usually with undefined behavior for inputs with ‘NaN’/‘Inf’.
Methods ‘"wget"’ and ‘"curl"’ for ‘download.file()’ now give an R error rather than a non-zero return value when the external command has a non-zero status.
Add ‘signature’ argument to ‘debug()’, ‘debugonce()’, ‘undebug()’ and ‘isdebugged()’ for more conveniently debugging S3 and S4 methods. (Based on a patch by Gabe Becker.)
Add ‘utils::debugcall()’ and ‘utils::undebugcall()’ for debugging the function that would be called by evaluating the given expression. When the call is to an S4 generic or standard S3 generic, ‘debugcall()’ debugs the method that would be dispatched. A number of internal utilities were added to support this, most notably ‘utils::isS3stdGeneric()’. (Based on a patch by Gabe Becker.)
‘isSymmetric(m)’ is much faster for large asymmetric matrices ‘m’ _via_ pre-tests and a new option ‘tol1’ (with which strict back compatibility is possible but not the default).
Zero-length date and date-time objects (of classes ‘"POSIX[cl]?t"’) now ‘print()’ “recognizably”.
‘boxplot(<formula>, *)’ gain optional arguments ‘drop’, ‘sep’, and ‘lex.order’ to pass to ‘split.default()’ which itself gains an argument ‘lex.order’ to pass to ‘interaction()’ for more flexibility.
‘identical()’ gains an ‘ignore.srcref’ option which drops ‘"srcref"’ and similar attributes when true (as by default).
‘smooth.spline()’ now allows direct specification of ‘lambda’, gets a ‘hatvalues()’ method and keeps ‘tol’ in the result, and optionally parts of the internal matrix computations.
Invalid factors, e.g., with duplicated levels (invalid but constructable) now give a warning when printed, _via_ new function ‘.valid.factor()’.
Radix sort is now chosen by ‘method = "auto"’ for ‘sort.int()’ for double vectors (and hence used for ‘sort()’ for unclassed double vectors), excluding ‘long’ vectors.
‘sort.int(method = "radix")’ no longer rounds double vectors.
‘try()’ gains a new argument ‘outFile’ with a default that can be modified _via_ ‘options(try.outFile = .)’, useful notably for ‘Sweave’.
Connections now ‘print()’ without error, even if invalid, i.e., typically after having been destroyed.
The ‘POSIXct’ method for ‘print()’ gets optional ‘tz’ and ‘usetz’ arguments, thanks to a report from Jennifer S. Lyon.
New function ‘check_packages_in_dir_details()’ in package ‘tools’ for analyzing package-check log files to obtain check details.
The ‘format()’ and ‘print()’ methods for ‘object.size()’ results get new options ‘standard’ and ‘digits’; notably, ‘standard = "IEC"’ and ‘standard = "SI"’ allow more standard (but less common) abbreviations than the default ones, e.g. for kilobytes. (From contributions by Henrik Bengtsson.)
The maximum number of DLLs that can be loaded into R e.g. _via_ ‘dyn.load()’ can now be increased by setting the environment variable ‘R_MAX_NUM_DLLS’ before starting R.
Loading the ‘parallel’ package namespace no longer sets or changes the ‘.Random.seed’, even if ‘R_PARALLEL_PORT’ is unset.
NB: This can break reproducibility of output, and did for a CRAN package.
Entry points ‘R_MakeExternalPtrFn’ and ‘R_ExternalPtrFn’ are now declared in header ‘Rinternals.h’ to facilitate creating and retrieving an R external pointer from a C function pointer without ISO C warnings about the conversion of function pointers.
The minimum version requirement for ‘libcurl’ has been reduced to 7.22.0, although at least 7.28.0 is preferred and earlier versions are little tested. (This is to support Debian Wheezy LTS and Ubuntu 12.04 LTS, although the latter is close to end-of-life.)
The order of flags when ‘LinkingTo’ other packages has been changed so their include directories come earlier, before those specified in ‘CPPFLAGS’. This will only have an effect if non-system include directories are included with ‘-I’ flags in ‘CPPFLAGS’ (and so not the default ‘-I/usr/local/include’ which is treated as a system include directory on most platforms).
Running ‘R CMD check --as-cran’ with ‘_R_CHECK_CRAN_INCOMING_REMOTE_’ false now skips tests that require remote access. The remaining (local) tests typically run quickly compared to the remote tests.
Check customization _via_ environment variables to detect side effects of ‘.Call()’ and ‘.External()’ calls which alter their arguments is described in §8 of the ‘R Internals’ manual.
The ‘factor’ method for ‘print()’ no longer sets the class of the factor to ‘NULL’, which would violate a basic constraint of an S4 object.
‘formatC(x, flag = f)’ allows two new flags, and signals an error for invalid flags also in the case of character formatting.
‘download.file(method = "libcurl")’ does not check for URL existence before attempting downloads; this is more robust to servers that do not support HEAD or range-based retrieval, but may create empty or incomplete files for aborted download requests.
Package installation into a library where the package exists _via_ symbolic link now should work wherever ‘Sys.readlink()’ works, resolving PR#16725.
‘findMethod()’ failed if the active signature had expanded beyond what a particular package used. (Example with packages ‘XR’ and ‘XRJulia’ on CRAN.)
S4 values are automatically coerced to vector (_via_ ‘as.vector’) when subassigned into atomic vectors.