This blog is updated daily.
A general description is here.
The ‘deriv()’ and similar functions now can compute derivatives of ‘log1p()’, ‘sinpi()’ and similar one argument functions, thanks to a contribution by Jerry Lewis.
‘median()’ gets a formal ‘...’ argument, so methods with extra arguments can be provided.
‘grep(perl = TRUE)’ and friends can now make use of PCRE's Just-In-Time mechanism, for PCRE >= 8.20 on platforms where JIT is supported. It is used by default whenever the ‘pattern’ is studied (see the prnextevious item). (Based on a patch from Mikko Korpela.)
This is controlled by a new option ‘PCRE_use_JIT’.
Note that in general this makes little difference to the speed, and may take a little longer: its benefits are most evident on strings of thousands of characters. As a side effect it reduces the chances of C stack overflow in the PCRE library on very long strings (millions of characters, but see next item).
There is a new option ‘PCRE_study’ which controls when ‘grep(perl = TRUE)’ and friends ‘study’ the compiled pattern. Previously this was done for 11 or more input strings: it now defaults to 10 or more (but most examples need many more for the difference from studying to be noticeable).
‘grep(perl = TRUE)’ and friends set a maximal recursion limit, taking into account R's estimate of the remaining C stack space. This reduces the chance of C stack overflow, but because it is conservative may report a non-match with a warning in examples that matched before. (PR#16757)
‘getGraphicsEvent()’ now works on ‘X11(type = "cairo")’ devices. Thanks to Frederick Eaton (for reviving an earlier patch).
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 7 ‘Wheezy’ LTS and Ubuntu ‘Precise’ 12.04 LTS, although the latter is close to end-of-life.)
‘rep(x, times)’ and ‘rep.int(x, times)’ now work also when ‘times’ is larger than the maximal integer and of length greater than one. (PR#16932)
‘rep(3, list(4))’ works again, as ‘list’s _are_ vectors.
Changes when redirection of a ‘http://’ URL to a ‘https://’ URL is encountered:
• The internal methods of ‘download.file()’ and ‘url()’ now report that they cannot follow this (rather than failing silently).
• (Unix-alike) ‘download.file(method = "auto")’ (the default) re-tries with ‘method = "libcurl"’.
• (Unix-alike) ‘url(method = "default")’ with an explicit ‘open’ argument re-tries with ‘method = "libcurl"’. This covers many of the usages, e.g. ‘readLines()’ with a URL argument.
The ‘configure’ check for the ‘zlib’ version is now robust to versions longer than 5 characters, including ‘1.2.11’.
Environmental variable ‘_R_CHECK_TESTS_NLINES_’ controls how ‘R CMD check’ reports failing tests (see §8 of the ‘R Internals’ manual).
(C-level Native routine registration.) The undocumented ‘styles’ field of the components of ‘R_CMethodDef’ and ‘R_FortranMethodDef’ is deprecated.
‘rep(x, times)’ and ‘rep.int(x, times)’ now both work also when ‘times’ is of length one and larger than the maximal integer.
‘vapply(x, *)’ now works with long vectors ‘x’. (PR#17174)
‘isS3method("is.na.data.frame")’ and similar are correct now. (PR#17171)
‘grepRaw(<long>, <short>, fixed = TRUE)’ now works, thanks to a patch by Mikko Korpela. (PR#17132)
Package installation into a library where the package exists _via_ symbolic link now should work wherever ‘Sys.readlink()’ works, resolving PR#16725.
‘"Cincinnati"’ was missing an ‘"n"’ in the ‘precip’ dataset.
Fix buffer overflow vulnerability in ‘pdf()’ when loading an encoding file. Reported by Talos (TALOS-2016-0227).
‘getDLLRegisteredRoutines()’ now produces its warning correctly when multiple DLLs match, thanks to Matt Dowle's PR#17184.
‘Sys.timezone()’ now returns non-NA also on platforms such as ‘Ubuntu 14.04.5 LTS’, thanks to Mikko Korpela's PR#17186.
‘format(x)’ for an illegal ‘"POSIXlt"’ object ‘x’ no longer segfaults.
‘methods(f)’ now also works for ‘f’ ‘"("’ or ‘"{"’.
(Windows only) ‘dir.create()’ did not check the length of the path to create, and so could overflow a buffer and crash R. (PR#17206)
On some systems, very small hexadecimal numbers in hex notation would underflow to zero. (PR#17199)
‘pmin()’ and ‘pmax()’ now work again for ‘ordered’ factors and 0-length S3 classed objects, thanks to Suharto Anggono's PR#17195 and PR#17200.
‘bug.report()’ did not do any validity checking on a package's ‘BugReports’ field. It now ignores an empty field, removes leading whitespace and only attempts to open ‘http://’ and ‘https://’ URLs, falling back to emailing the maintainer.
Bandwidth selectors ‘bw.ucv()’ and ‘bw.SJ()’ gave incorrect answers or incorrectly reported an error (because of integer overflow) for inputs longer than 46341. Similarly for ‘bw.bcv()’ at length 5793.
Another possible integer overflow is checked and may result in an error report (rather than an incorrect result) for much longer inputs (millions for a smooth distribution).
‘findMethod()’ failed if the active signature had expanded beyond what a particular package used. (Example with packages ‘XR’ and ‘XRJulia’ on CRAN.)
‘qbeta()’ underflowed too early in some very asymmetric cases. (PR#17178)
‘R CMD Rd2pdf’ had problems with packages with non-ASCII titles in ‘.Rd’ files (usually the titles were omitted).