This blog is updated daily.
A general description is here.
‘range(<DT_with_Inf>, finite = TRUE)’ now work for objects of class ‘"Date"’, ‘"POSIXct"’, and ‘"POSIXlt"’ with infinite entries, analogously to ‘range.default()’, as proposed by Davis Vaughan on R-devel. Other ‘range()’-methods can make use of new function ‘.rangeNum()’.
New ‘.internalGenerics’ object complementing ‘.S3PrimitiveGenerics’, for documentation and low-level book-keeping.
Dynamic help now does a much better job of rendering package ‘DESCRIPTION’ metadata.
‘filled.contour()’ gains a ‘key.border’ argument.
‘tools::update_pkg_po()’ gets arguments ‘pot_make’ and ‘mo_make’ for _not_ re-making the corresponding files, and additionally a ‘verbose’ argument.
Plain-text help shows \var markup by angle brackets.
Functions ‘psmirnov()’, ‘qsmirnov()’ and ‘rsmirnov()’ in package ‘stats’ have argument ‘two.sided’ renamed to ‘alternative’, to take into account that the permutation distributions of the one-sided statistics can be different in the case of ties. Consequence of PR#18582.
New experimental functions ‘Tailcall()’ and ‘Exec()’ to support writing stack-space-efficient recursive functions.
New option ‘catch.script.errors’ provides a documented way to catch errors and then continue in non-interactive use.
‘L %||% R’ newly in ‘base’ is an expressive idiom for the phrases ‘if(!is.null(L)) L else R’ or ‘if(is.null(L)) R else L’.
The return value from ‘warnings()’ now always inherits from ‘"warnings"’ as documented, now also in the case of no warnings where it previously returned ‘NULL’.
On Alpine Linux ‘iconv()’ now maps ‘"latin2"’, ‘"latin-2"’, ‘"latin9"’ and ‘"latin-9"’ to encoding names the OS knows about (case-insensitively).
‘iconv(sub = "Unicode")’ now always zero-pads to four (hex) digits, rather than to 4 or 8. (This seems to have become the convention once Unicode restricted the number of Unicode points to 2^21 - 1 and so will never need more than 6 digits.)
‘zapsmall()’ gets new optional arguments, function ‘mFUN’ and ‘min.d’, for extra flexibility; fulfills a wish in PR#18199. Also, it is now an implicit S4 generic in package ‘methods’.
System \Ivalgrind headers are now required to use ‘configure’ option ‘--with-valgrind-instrumentation’ with value ‘1’ or ‘2’.
The minimum ‘autoconf’ requirement for a maintainer build has been increased to ‘autoconf’ 2.71.
It is intended to increase this to 2.72 once that becomes widely available.
No default C++ compiler is set if no C++17 compiler is detected: there is no longer an automatic fallback to C++14 or C++11.
Compilers from the last five years should have sufficient support: for others macros ‘CXX’ and ‘CXXSTD’ can be set in file ‘config.site’ to provide a fallback if needed.
A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interfaces in their Accelerate framework. Those interfaces are only available in macOS 13.3 or later, and building requires SDK 13.3 or later (from the Command Line Tools or \IXcode 14.3 or later).
By default the option uses new Accelerate for BLAS calls: to also use it for LAPACK use option ‘--with-newAccelerate=lapack’. The later interfaces provide LAPACK 3.9.1 rather than 3.2.1: 3.9.1 is from 2021-04 and does not include the improved algorithms introduced in LAPACK 3.10.0 (including for BLAS calls).
The new built-in Rd macro \dontdiff{} can be used to mark example code whose output should be ignored when comparing check output to reference output (‘tests/Examples/<pkg>-Ex.Rout.save’). The \dontdiff tag, like \donttest, is _not_ shown on the rendered help page, so provides a clean alternative to ‘## IGNORE_RDIFF_(BEGIN|END)’ comments.
‘SEXP’ type ‘S4SXP’ has been renamed to ‘OBJSXP’ to support experimenting with alternative object systems. The ‘S4SXP’ value can still be used in ‘C’ code but is now deprecated. Based on contributions from the R Consortium's Object-Oriented Programming Working Group.
Support for ‘encoding = "MacRoman"’ has been removed from the ‘pdf()’ and ‘postscript()’ devices - this was a legacy encoding supporting classic macOS up to 2001 and no longer has universal ‘libiconv’ support.
The twelve ‘as.data.frame.<class>()’ methods which were deprecated only via ‘_R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_’ and in ‘R CMD check --as-cran’ are formally deprecated now in favour of calling ‘as.data.frame()’ or ‘as.data.frame.vector()’.
‘<POSIXlt>[*]’ no longer sets wrong ‘"balanced"’ attribute, fixing PR#18681 thanks to \IMikael Jagan.
‘str(<classed-call>)’ now deparses the call as expected, fixing PR#18684, reported by Dave Slager.
Probability distribution functions ‘[dpq]<distrib>(x, *)’, but also ‘bessel[IKJY](x, .)’ now consistently preserve ‘attributes(x)’ when ‘length(x) == 0’, e.g., for a 2 x 0 matrix, thanks to \IKarolis Koncevičius' report PR#18509.
Directories are now omitted by ‘file.copy(, recursive = FALSE)’ and in ‘file.append()’ (PR#17337).
‘density()’ more consistently computes grid values for the FFT-based convolution, following \IRobert Schlicht's analysis and proposal in PR#18337, correcting density values typically by a factor of about 0.999. Argument ‘old.coords = TRUE’ provides back compatibility.
Comparisons for language objects (which are based on deparsing) are now more careful about using accurate deparsed results (PR#18676).