This blog is updated daily.
A general description is here.
‘isoreg(c(1,Inf))’ signals an error instead of segfaulting, fixing PR#18603.
‘postscript()’ refused to accept a ‘title’ comment containing the letter “W” (PR#18599).
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.x.y.
‘R CMD check’ reports the use of the Fortran 90 random number generator ‘RANDOM_NUMBER()’ and the subroutines to initialize it.
‘Writing R Extensions’ has example code to use R's RNGs from Fortran.
Formatting and printing complex numbers could give things like ‘0.1683-0i’ because of rounding error: ‘-0i’ is now replaced by ‘+0i’.
‘R CMD check’ reports the use of Fortran 90 random number generator ‘RANDOM_NUMBER()’ and the subroutines to initialize it.
‘Writing R Extensions’ has example code to use R's RNGs from Fortran.
‘norm(<0-length>, "2")’ now gives zero instead of an error, as all the other norm types, thanks to Mikael Jagan's PR#18542.
Build-stage Rd macros \packageAuthor and \packageMaintainer now process ‘Authors@R’, fixing ‘NA’ results when the package ‘DESCRIPTION’ omits ‘Author’ and ‘Maintainer’ fields.
‘trans3d()’ gains options ‘continuous’ and ‘verbose’ addressing the problem of possible “wrap around” when projecting too long curves, as reported by Achim Zeileis in PR#18537.
‘qqplot(x,y, conf.level=.)’ gives better confidence bounds when ‘length(x) != length(y)’, thanks to Alexander Ploner's report and patch proposal (PR#18557).
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.x.0.
There is support for using LLVM's ‘flang-new’ as the Fortran compiler from LLVM 16.0.x (preferably 17.0.0 or later).
‘lapply(<list>, as.data.frame)’ no longer warns falsely for some base vector components.
Communication between parent and child processes in the ‘multicore’ part of ‘parallel’ could fail on platforms that do not support an arbitrarily large payload in system functions ‘read()’/‘write()’ on pipes (seen on macOS where a restriction to ‘INT_MAX’ bytes is documented, without doing a partial read unlike Linux). The payload is now split into 1Gb chunks to avoid that problem. (PR#18571)
Writing to a clipboard connection works again, fixing a regression in R 4.2.0 (PR#18332). Re-using a closed clipboard connection no longer issues a spurious warning about an ignored encoding argument.
The default initialization of the ‘"repos"’ option from the ‘repositories’ file at startup can be skipped by setting environment variable ‘R_REPOSITORIES’ to ‘NULL’ such that ‘getOption("repos")’ is empty if not set elsewhere.
‘readChar(., 4e8)’ no longer fails, thanks to Kodi Arfer's report (PR#18557).
‘iconv(to = "ASCII//TRANSLIT")’ is emulated using substitution on platforms which do not support it (notably Alpine Linux). This should give a human-readable conversion in ASCII on all platforms (rather than ‘NA_character_’).
‘contrib.url(character())’ now returns 0-length ‘character()’ as documented, which also avoids spurious warnings from ‘available.packages()’ et al. in the edge case of an empty vector of repository URLs.
‘qr.X()’ is now an implicit S4 generic in ‘methods’.
‘substr(x, n, L) <- cc’ now works (more) correctly for multibyte UTF-8 strings ‘x’ when ‘L > nchar(x)’, thanks to a report and patch by ‘Architect 95’.
‘na.contiguous(x)’ now also returns the first run, when it is at the beginning and there is a later one of the same length; reported to R-devel, including a fix, by Georgi Boshnakov. Further, by default, it modifies only an existing ‘attr(*,"tsp")’ but otherwise no longer sets one.
‘chol(<not pos.def>, pivot = <T|F>)’ now gives a correct error or warning message (depending on ‘pivot’), thanks to Mikael Jagan's (PR#18541).
‘.S3methods()’, typically called from ‘methods()’, again marks methods from package ‘base’ as ‘visible’.
Also, the visibility of non-‘base’ methods is again determined by the method's presence in ‘search()’.
The C-level API version of R's ‘integrate()’, ‘Rdqags()’ in ‘Applic.h’, now returns the correct number of integrand evaluations ‘neval’, fixing PR#18515 reported and diagnosed by Stephen Wade.
The C prototypes for LAPACK calls ‘dspgv’ and ‘dtptrs’ in ‘R_exts/Lapack.h’ had one too many and one too few character length arguments - but this has not caused any known issues. To get the corrected prototypes, include
#include <Rconfig.h> // for PR18534fixed #ifdef PR18534fixed # define usePR18534fix 1 #endif #include <R_exts/Lapack.h>
in your C/C++ code (PR#18534).
Many of the checks of esoteric Internet operations and those using unreliable external sites have been moved to a new target that is not run by default and primarily intended for the core developers. To run them use
cd tests; make test-Internet-dev
‘.S3methods()’, typically called from ‘methods()’, again marks methods from package ‘base’ as ‘visible’.
‘tools::Rdiff()’ is now more robust against invalid strings, fixing installation tests on Windows without Rtools installed (PR#18530).
Fix (new) bug in ‘hcl.colors(2, *)’, by Achim Zeileis (PR#18523).
‘head(., <illegal>)’ and ‘tail(..)’ now produce more useful ‘"Error in ...."’ error messages, fixing PR#18362.
Package code syntax on Windows is checked in UTF-8 when UTF-8 is the native encoding.
The C-level API version of R's ‘integrate()’, ‘Rdqags()’ in ‘Applic.h’, now returns the correct number of integrand evaluations ‘neval’, fixing PR#18515 reported and diagnosed by Stephen Wade.
‘.S3methods()’, typically called from ‘methods()’, again marks methods from package ‘base’ as ‘visible’.
Fix (new) bug in ‘hcl.colors(2, *)’, by Achim Zeileis (PR#18523).
‘head(., <illegal>)’ and ‘tail(..)’ now produce more useful ‘"Error in ...."’ error messages, fixing PR#18362.
Package code syntax on Windows is checked in UTF-8 when UTF-8 is the native encoding.
The C prototypes for LAPACK calls ‘dspgv’ and ‘dtptrs’ in ‘R_exts/Lapack.h’ had one too many and one too few character length arguments - but this has not caused any known issues. To get the corrected prototypes, include
#include <Rconfig.h> // for PR18534fixed #ifdef PR18534fixed # define usePR18534fix 1 #endif #include <R_exts/Lapack.h>
in your C/C++ code (PR#18534).
.
‘tools::Rdiff()’ is now more robust against invalid strings, fixing installation tests on Windows without Rtools installed (PR#18530).
Many of the checks of esoteric Internet operations and those using unreliable external sites have been moved to a new target that is not run by default and primarily intended for the core developers. To run them use
cd tests; make test-Internet-dev
.
The ‘"glm"’ method for ‘anova()’ computes test statistics and p-values
by default, using a chi-squared test or an F test depending on whether
the dispersion is fixed or free. Test statistics can be suppressed by
giving argument ‘test’ a false logical value.
‘bs()’ and ‘ns()’ in the (typical) case of automatic knot construction, when some of the supposedly inner knots coincide with boundary knots, now moves them inside (with a warning), building on PR#18442 by Ben Bolker.
‘R CMD’ on Windows now skips the site profile with ‘--no-site-file’ and ‘--vanilla’ even when ‘R_PROFILE’ is set (PR#18512, from Kevin Ushey).
The ‘Rcomplex’ definition (in header ‘R_ext/Complex.h’) has been extended to prevent possible mis-compilation when interfacing with Fortran (PR#18430). The new definition causes compiler warnings with static initializers such as ‘{1, 2}’, which can be changed to ‘{.r=1, .i=2}’.
Using the new definition from C++ depends on compiler extensions supporting C features that have not been incorporated into the C++ standards but are available in ‘g++’ and ‘clang++’: this may result in C++ compiler warnings but these have been worked around for recent versions of common compilers (GCC, Apple/LLVM clang, Intel).
It is intended to change the inclusion of header ‘R_ext/Complex.h’ by other R headers, so C/C++ code files which make use of ‘Rcomplex’ should include that header explicitly.
The ‘Rcomplex’ definition (in header ‘R_ext/Complex.h’) has been extended to prevent possible mis-compilation when interfacing with Fortran (PR#18430). The new definition causes compiler warnings with static initializers such as ‘{1, 2}’, which can be changed to ‘{.r=1, .i=2}’.
Using the new definition from C++ depends on compiler extensions supporting C features that have not been incorporated into the C++ standards but are available in ‘g++’ and ‘clang++’: this may result in C++ compiler warnings.
It is intended to change the inclusion of header ‘R_ext/Complex.h’ by other R headers, so C/C++ code files which make use of ‘Rcomplex’ should include that header explicitly.
The ‘Rcomplex’ definition (in header ‘R_ext/Complex.h’) has been extended to prevent possible mis-compilation when interfacing with Fortran (PR#18430). The new definition causes compiler warnings with static initializers such as ‘{1, 2}’, which can be changed to ‘{.r=1, .i=2}’.
Using the new definition from C++ depends on compiler extensions supporting C features that have not been incorporated into the C++ standards but are available in ‘g++’ and ‘clang++’: this may result in C++ compiler warnings.
New generic ‘chooseOpsMethod()’ provides a mechanism for objects to resolve cases where two suitable methods are found for an Ops Group Generic. This supports experimenting with alternative object systems. Based on contributions by Tomasz Kalinowski in PR#18484.
The ‘tapply()’ function now accepts a data frame as its ‘X’ argument, and allows ‘INDEX’ to be a formula in that case. ‘by.data.frame()’ similarly allows ‘INDICES’ to be a formula.
The ‘"glm"’ method for ‘anova()’ computes test statistics and p-values by default, using a chi-squared test or an F test depending on whether the dispersion is fixed or free. Test statistics can be suppressed by giving argument ‘test’ a false logical value.
The matrix multiply operator ‘%*%’ is now an S3 generic, belonging to new group generic ‘matrixOps’. From Tomasz Kalinowski's contribution in PR#18483.
New function ‘array2DF()’ to convert arrays to data frames, particularly useful for the list arrays created by ‘tapply()’.
The performance of ‘df[j] <- value’ (including for missing ‘j’) and ‘write.table(df)’ has been improved for data frames ‘df’ with a large number of columns. (Thanks to Gabriel Becker's PR#18500, PR#18503 and discussants, prompted by a report from Toby Dylan Hocking on the R-devel mailing list.)
New generic ‘.AtNames()’ added to enable class-specific completions after ‘@’. The formerly internal function ‘findMatches()’ is now exported, mainly for use in methods for ‘.DollarNames()’ and ‘.AtNames()’.
new generic ‘chooseOpsMethod()’ provides a mechanism for objects to resolve cases where two suitable methods are found for an Ops Group Generic. This supports experimenting with alternative object systems. Based on contributions by Tomasz Kalinowski in PR#18484.
‘inherits(x, what)’ now accepts values other than a simple character vector for argument ‘what’. A new generic, ‘nameOfClass()’, is called to resolve the class name from ‘what’. This supports experimenting with alternative object systems. Based on contributions by Tomasz Kalinowski in PR#18485.
‘Rcomplex’ definition has been extended to prevent mis-compilation when interfacing with Fortran (PR#18430). The new definition causes compiler warnings with static initializers such as ‘{1, 2}’, which can be changed to ‘{.r=1, .i=2}’. The new definition depends on C++ compiler extensions supporting C features that haven't been incorporated into the C++ standards, which may result in C++ compiler warnings.
The ‘"glm"’ method for ‘anova()’ computes test statistics and p-values by default, using a Chisq test or an F test depending on whether the dispersion is fixed or free. Test statistics can be suppressed by giving argument ‘test’ a false logical value.
The performance of ‘write.table()’ has been improved for data frames with a large number of unclassed columns. (Thanks to Gabriel Becker's PR#18500, prompted by a report from Toby Dylan Hocking on the R-devel mailing list.)
The ‘"data.frame"’ method for ‘subset()’ now warns about extraneous arguments, typically catching the use of ‘=’ instead of ‘==’ in the ‘subset’ expression.
‘density(x, weights = *)’ now warns if automatic bandwidth selection happens without using ‘weights’; new optional ‘warnWbw’ may suppress the warning. Prompted by Christoph Dalitz' PR#18490 and its discussants.
The ‘print()’ method for class ‘"summary.glm"’ no longer shows summary statistics for the deviance residuals by default. Its optional argument ‘show.residuals’ can be used to show them if required.
The ‘tapply()’ function now accepts a data frame as its ‘X’ argument, and allows ‘INDEX’ to be a formula in that case.