This blog is updated daily.
A general description is here.
Mathlib function ‘lgammacor(x)’ no longer warns about underflow to zero for large ‘x’.
Text widths and heights were incorrectly reported by the Quartz device if the drawing context didn't exist yet (typically when drawing off-screen to a window that is yet to appear, see PR#18591).
The Quartz device could segfault in cases where paths with spaces are used in the new glyph drawing API. Thanks to Tomek Gieorgijewski (PR#18758).
Functions ‘R_atof’ and ‘R_strtod’ declared in header ‘R_ext/Utils.h’ are now documented in ‘Writing R Extensions’ and so formally part of the API.
The non-API entry points ‘Rf_setSVector’, ‘Rf_StringFalse’, ‘Rf_StringTrue’ and ‘Rf_isBlankString’ have been added to those reported by ‘R CMD check’.
The new function ‘Rf_allocLang’ is now available. This provides an alternative to the idiom of calling ‘Rf_allocList’ followed by ‘SET_TYPEOF’.
‘R CMD check’ now reports as warnings what ‘gfortran’ calls ‘Fortran 2018 deleted features’, all of which have long been marked as ‘obsolescent’ and some of which were deleted in Fortran 2008 or earlier. Fortran compilers are no longer required to support these.
‘as.numeric()’, ‘scan()’, ‘type.convert()’ and other places which use the internal C function ‘R_strtod’ now require a _non-empty_ digit sequence in a decimal or binary exponent. This aligns with the C/POSIX standard for ‘strtod’ and with ‘?NumericConstants’.
‘as.data.frame(m, make.names=NA)’ now works correctly for a matrix ‘m’ with ‘NA’'s in row names.
The error message from ‘<POSIXlt>[["hour"]]’ and similar now mentions ‘*[[, "hour"]]’, as wished for in PR#17409 and proposed by Michael Chirico.
‘qbinom()’ and potentially ‘qpois()’, ‘qnbinom()’, no longer sometimes fail accurate inversion (of ‘pbinom()’, etc), thanks to Christopher Chang's report and patch in PR#18711.
The internal help server on Windows can again serve requests sent in quick succession, fixing a regression in R 4.4.0.
‘debugcall(<S3Generic>())’ now also works when a corresponding S4-generic version is in the ‘methods’ cache (PR#18143).
Package ‘tools’' ‘toTitleCase(ch0)’ now returns ‘character(0)’ when ‘ch0’ is of zero length; fixing PR#18724, reported by David Hugh Jones.
‘R CMD check’ is no longer broken (without a check result and no explanation in ‘00check.log’) for a package which declares an invalid ‘VignetteBuilder’ in ‘DESCRIPTION’ but has no vignettes.
Package ‘tools’' ‘toTitleCase(ch0)’ now returns ‘character(0)’ when ‘ch0’ is of zero length; fixing PR#18724, reported by David Hugh Jones.
The new function ‘Rf_allocLang’ is now available. This provides an alternative to the idiom of calling ‘Rf_allocList’ followed by ‘SET_TYPEOF’.
‘R CMD check’ is no longer broken (without a check result and no explanation in ‘00check.log’) for a package which declares an invalid ‘VignetteBuilder’ in ‘DESCRIPTION’ but has no vignettes.
‘debugcall(<S3Generic>())’ now also works when a corresponding S4-generic version is in the ‘methods’ cache (PR#18143).
‘R CMD check’ now reports as warnings what ‘gfortran’ calls ‘Fortran 2018 deleted features’, all of which have long been marked as ‘obsolescent’ and some of which were deleted in Fortran 2008 or earlier. Fortran compilers are no longer required to support these.
The error message from ‘<POSIXlt>[["hour"]]’ and similar now mentions ‘*[[, "hour"]]’, as wished for in PR#17409 and proposed by Michael Chirico.
‘qbinom()’ and potentially ‘qpois()’, ‘qnbinom()’, no longer sometimes fail accurate inversion (of ‘pbinom()’, etc), thanks to Christopher Chang's report and patch in PR#18711.
The internal help server on Windows can again serve requests sent in quick succession, fixing a regression in R 4.4.0.
‘as.data.frame(m, make.names=NA)’ now works correctly for a matrix ‘m’ with ‘NA’'s in row names.
The numeric version creators now stop on invalid non-character version specifications.
Functions ‘R_atof’ and ‘R_strtod’ declared in header ‘R_ext/Utils.h’ are now documented in ‘Writing R Extensions’ and so formally part of the API.
The non-API entry points ‘Rf_setSVector’, ‘Rf_StringFalse’, ‘Rf_StringTrue’ and ‘Rf_isBlankString’ have been added to those reported by ‘R CMD check’.
‘as.numeric()’, ‘scan()’, ‘type.convert()’ and other places which use the internal C function ‘R_strtod’ now require a _non-empty_ digit sequence in a decimal or binary exponent. This aligns with the C/POSIX standard for ‘strtod’ and with ‘?NumericConstants’.
The licence headers for the RPC code in ‘src/extra/xdr’ have been updated to use the GPL-compatible licence published by Oracle America in 2010.
New startup option ‘--max-connections’ to set the maximum number of simultaneous connections for the session. Defaults to 128 as before: allowed values up to 4096 (but resource limits may in practice restrict to smaller values).
‘kappa(., exact = TRUE, norm = *)’ now works for all norms and also for complex matrices. In symmetric / triangular cases, the new argument ‘uplo = "U" | "L"’ allows the upper or lower triangular part to be specified.
Functions ‘psmirnov()’, ‘qsmirnov()’ and ‘rsmirnov()’ in package ‘stats’ have had 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.
The icence headers for the RPC code in ‘src/extra/xdr’ have been updated to use the GPL-compatible licence published by Oracle America in 2010.
The default method for the directional comparison operators ‘<’, ‘>’, ‘<=’, and ‘>=’ now signals an error when one of the operands is a language object, i.e. a symbol or a call.
‘as.data.frame()’'s default method now also works fine with atomic objects inheriting from classes such as ‘"roman"’, ‘"octmode"’ and ‘"hexmode"’, thus fulfilling the wish of PR#18421, by Benjamin Feakins.
‘xtabs(Freq ~ .)’ now consistently defaults to ‘na.action = na.pass’, using ‘na.rm = FALSE’ (added as an argument) when summing over ‘Freq’ (PR#17770).
‘tools::testInstalledPackage()’ is no longer silent about failures from running examples or tests and its return code no longer ignores failures from checking vignettes.
Rd comment lines no longer cause broken paragraphs in the rendered PDF and plain-text help. In code blocks, pure comment lines (starting with ‘%’) no longer produce an empty line.
New completion option ‘backtick’ (disabled by default) allows non-syntactic completions to be wrapped in backquotes. This is currently only useful for Jupyter notebooks via the ‘IRkernel’ package, and may cause problems for other backends.
New function ‘pkg2HTML()’ in ‘tools’ to create single-page HTML reference manuals for R packages.
Licence headers for the RPC code in ‘src/extra/xdr’ have been updated to use the GPL-compatible licence published by Oracle America in 2010.
The parser has been updated to work with ‘bison’ 3.8.2, which is now used for the pre-generated parsers in ‘gram.c’, ‘file.c’, and ‘gramRd.c’. A few parser error messages have changed, which may affect code that relies on exact messages.
Rtools44 has experimental support for 64-bit ARM (‘aarch64’) CPUs _via_ the LLVM 17 toolchain using ‘lld’, ‘clang’/‘flang-new’ and ‘libc++’.
The makefiles and installer scripts for Windows have been tailored to Rtools44, an update of the Rtools43 toolchain. It is based on GCC 13 and newer versions of MinGW-W64, binutils and libraries (targeting 64-bit Intel CPUs). R-devel can no longer be built using Rtools43 without changes.
The legacy graphics devices ‘pictex()’ and ‘xfig()’ are now deprecated. They do not support recent graphics enhancements and their font handling is rudimentary. The intention is to retain them for historical interest as long as they remain somewhat functional.
The byte code evaluator now uses less C stack space for recursive calls to byte-compiled functions. It also makes more of an effort to avoid allocations for scalar return values.
If the ‘libdeflate’ library and headers are available, ‘libdeflate’ rather than ‘libz’ is used to (de)compress R objects in lazy-load databases. Typically tasks spend up to 5% of their time on such operations, although creating lazy-data databases is one of the exceptions.
This can be suppressed if the library is available by the ‘configure’ option ‘--without-libdeflate-compression’.
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.
The Objective-C++ compiler now by default uses the standard selected by R for C++ (currently C++17) rather than the default standard for the C++ compiler (which on macOS is still C++98).
‘mkCharLenCE’ was incorrectly documented to take a ‘size_t’ length but was implemented with ‘int’ (and character strings in R are limited to 2^31 - 1 bytes).
‘R CMD check --as-cran’ now runs \donttest examples (which are run by ‘example()’) instead of instructing the tester to do so. This can be temporarily circumvented during development by setting environment variable ‘_R_CHECK_DONTTEST_EXAMPLES_’ to a false value.