This blog is updated daily.
A general description is here.
‘as.environment(list())’ now works, and ‘as.list()’ of such an environment is now the same as ‘list()’.
The ‘summary()’ method for ‘"lm"’ fits warns if the fit is essentially perfect, as most of the summary may be computed inaccurately (and with platform-dependent values).
Programmers who use ‘summary()’ in order to extract just a component which will be reliable (e.g., ‘$cov.unscaled’) should wrap their calls in ‘suppressWarnings()’.
‘configure’ now tests for a C++11-compliant compiler by testing some basic features. This by default tries flags for the compiler specified by ‘CXX’, but an alternative compiler, options and standard can be specified by variables ‘CXX1X’, ‘CXX1XFLAGS’ and ‘CXX1XSTD’ (e.g., ‘-std=gnu++11’).
Error messages involving non-syntactic names (e.g., as produced by ‘`\r`’ when that object does not exist) now encode the control characters. (Reported by Hadley Wickham.)
‘strptime()’ now checks the locale only when locale-specific formats are used and caches the locale in use: this can halve the time taken on OSes with slow system functions (e.g., OS X).
Double-clicking outside of the list box (e.g., on the scrollbar) of a Tk listbox widget generated by ‘tk_select.list()’ no longer causes the window to close. (PR#15407)
(Windows only) When a call to ‘system2()’ specified one of ‘stdin’, ‘stdout’ or ‘stderr’ to be a file, but the command was not found (e.g., it contained its arguments, or the program was not on the ‘PATH’), it left the file open and unusable until R terminated. (Reported by Mathew McLean.)
Various functions in ‘stats’ and elsewhere that use non-standard evaluation are now more careful to follow the namespace scoping rules. E.g., ‘stats::lm()’ can now find ‘stats::model.frame()’ even if ‘stats’ is not on the search path or if some package defines a function of that name.
‘seq()’ and ‘seq.int()’ give more explicit error messages if called with invalid (e.g., ‘NaN’) inputs.
‘checkFF()’ (used by ‘R CMD check’) does a better job of detecting calls from other packages, including not reporting those where a function has been copied from another namespace (e.g., as a default method). It now reports calls where ‘.NAME’ is a symbol registered in another package.
The parser now enforces C99 syntax for floating point hexadecimal constants (e.g., ‘0x1.1p0’), rather than returning unintended values for malformed constants. (PR#15234)
In R 3.0.0, ‘identify()’ and ‘locator()’ did not record information correctly, so replaying a graph (e.g., by copying it to another device) would fail. (PR#15271)
It is now possible for 64-bit builds to allocate amounts of memory limited only by the OS. It may be wise to use OS facilities (e.g., ‘ulimit’ in a ‘bash’ shell, ‘limit’ in ‘csh’), to set limits on overall memory consumption of an R process, particularly in a multi-user environment. A number of packages need a limit of at least 4GB of virtual memory to load.
64-bit Windows builds of R are by default limited in memory usage to the amount of RAM installed: this limit can be changed by command-line option ‘--max-mem-size’ or setting environment variable ‘R_MAX_MEM_SIZE’.
‘Sys.which()’ when used with inputs which would be unsafe in a shell (e.g., absolute paths containing spaces) now uses appropriate quoting.
More matrix algebra functions (e.g., ‘chol()’ and ‘solve()’) accept logical matrices (and coerce to numeric).
Most operations which can sensibly be done with long vectors work: others may return the error ‘long vectors not supported yet’. Most of these are because they explicitly work with integer indices (e.g., ‘anyDuplicated()’ and ‘match()’) or because other limits (e.g., of character strings or matrix dimensions) would be exceeded or the operations would be extremely slow.
Most of the linear algebra functions make fewer copies when the input(s) are not double (e.g., integer or logical).
Several non-API entry points have been transferred to packages (e.g., ‘R_zeroin2’) or replaced by different non-API entry points (e.g., ‘R_tabulate’).