Daily News: R-devel (original) (raw)
This blog is updated daily.
A general description is here.
Mon, 16 Jun 2025
CHANGES IN R-devel GRAPHICS
- The graphics engine version, ‘R_GE_version’, has been bumped to ‘17’ and so packages that provide graphics devices should be reinstalled.
The ‘glyphFont()’ function gains a ‘variations’ argument, which allows variable font axes to be specified, e.g., ‘c(wght = 100)’.
Only the ‘quartz()’ device and Cairo-based graphics devices (but not ‘cairo_pdf()’) support variable font axes so far.
CHANGES IN R-devel BUG FIXES
- ‘text()’ now truncates ‘labels’ to maximum length of ‘x’ and ‘y’ (if it is longer), fixing PR#7084. Thanks to Heather Turner, Ella Kaye, and Philippe Grosjean.
Sun, 15 Jun 2025
CHANGES IN R 4.5.1 patched BUG FIXES
- .
CHANGES IN R-devel NEW FEATURES
- ‘tcltk::tclVersion()’ now only optionally includes the ‘patch level’, as Tcl full versions can be of the form ‘8.7a5’ or ‘9.0b1’ without three clear components.
CHANGES IN R-devel GRAPHICS
- The graphics engine version, ‘R_GE_version’, has been bumped to ‘17’ and so packages that provide graphics devices should be reinstalled.
The ‘glyphFont()’ function gains a ‘variations’ argument, which allows variable font axes to be specified, e.g., ‘c(wght = 100)’.
Only Cairo-based graphics devices (but not ‘cairo_pdf()’) support variable font axes so far.
Sat, 14 Jun 2025
CHANGES IN R-devel BUG FIXES
- ‘attr(., "tsp") <- val’ now uses ‘getOption("ts.eps")’ instead of hardwired ‘1e-5’; consequently, ‘ts(.., ts.eps=*)’ now passes ‘ts.eps’ to the ‘"tsp"’ setting C code; both fixing a long-standing ‘FIXME’.
CHANGES IN R 4.5.1 INSTALLATION
- Tcl/Tk 9 can be used to build package ‘tcltk’: this has become the default in some Linux distributions.
CHANGES IN R 4.2.0 NEW FEATURES
- ‘as.vector()’ gains a ‘data.frame’ method which returns a simple named list, also clearing a long-standing ‘FIXME’ to enable ‘as.vector(<data.frame>, mode="list")’. This breaks code relying on ‘as.vector(<data.frame>)’ to return the unchanged data frame.
Thu, 12 Jun 2025
CHANGES IN R-devel BUG FIXES
- ‘text()’ now truncates ‘labels’ to maximum length of ‘x’ and ‘y’ (if it is longer), fixing PR#7084. Thanks to Heather Turner and Ella Kaye.
CHANGES IN R 4.5.1 NEW FEATURES
- The internal method of ‘unzip()’ now follows ‘unzip 6.00’ in how it handles extracted file paths which contain ‘"../"’. With thanks to Ivan Krylov.
Tue, 10 Jun 2025
CHANGES IN R-devel GRAPHICS
- The graphics engine version, ‘R_GE_version’, has been bumped to ‘17’ and so packages that provide graphics devices should be reinstalled.
The ‘glyphFont()’ function gains a ‘variations’ argument, which allows variable font axes to be specified, e.g., ‘c(wght=100)’.
Only Cairo-based graphics devices (but not ‘cairo_pdf()’) support variable font axes so far.
CHANGES IN R-devel NEW FEATURES
- ‘tcltk::tclVersion()’ now only optionally includes the ‘patch level’, as Tcl full versions can be of the the form ‘8.7a5’ or ‘9.0b1’ without three clear components.
- ‘read.dcf()’ now recognizes lines starting with ‘#’ as comment lines. By Dirk Eddelbuettel, Laurent Gatto and Hugo Gruson.
Sat, 07 Jun 2025
CHANGES IN R-devel BUG FIXES
- ‘t.test(c(1:3, Inf))’ and similar no longer produce an error but return a (still not so useful) ‘"htest"’ result, fixing PR#18901, thanks to Jesse Alderliesten.
Fri, 06 Jun 2025
CHANGES IN R-devel BUG FIXES
- Subsetting ‘"table"’ objects keeps S3 classes more consistently, fixingPR#18845.
- When ‘browser()’ is active or when otherwise debugging, R code such as ‘if(TRUE)’ now longer triggers a new browser level, fixing PR#18885(differently than the fix for PR#15770), with thanks to Ivan Krylov.
Thu, 05 Jun 2025
CHANGES IN R-devel NEW FEATURES
- ‘read.dcf’ now recognizes lines starting with ‘#’ as comment lines. By Dirk Eddelbuettel, Laurent Gatto and Hugo Gruson.
Wed, 04 Jun 2025
CHANGES IN R 4.5.1 BUG FIXES
- ‘prettyNum(*, zero.print={>=1-char}, replace.zero=TRUE)’ now works as documented, thanks to Marttila Mikko and Ivan Krylov's messages on R-devel.
- ‘pbeta(x, a,b, ..)’ for very large ‘a,b’ no longer returns ‘NaN’ but the correct values (0 or 1, or their logs for ‘log.p = TRUE’). This improves Mathlib's C level ‘bratio()’ and hence also ‘pnbinom()’, etc..
Tue, 03 Jun 2025
CHANGES IN R 4.5.1 INSTALLATION
- Standalone ‘nmath’ can be built with early-2025 versions of ‘clang’-based compilers such as LLVM ‘clang’ 20, Apple ‘clang’ 17 and Intel ‘icx’ 2025.0.
- Tcl/Tk 9 can be used to build package ‘tcltk’: this has become the default in some Linux distributions. *N.B.* several third-party packages currently require Tcl/Tk 8 or even 8.6 without declaring so.
CHANGES IN R 4.5.1 BUG FIXES
- Java detection in ‘javareconf’ could not detect ‘libjvm.*’ in the ‘zero’ variant of the JDK (PR#18884). All valid variants as of JDK 24u are now supported.
- ‘factanal(.., rotation=*)’ now correctly updates ‘rotmat’, fixingPR#18886.
- ‘dnbinom(, , ..)’ now is ‘0’ correctly, instead of ‘NaN’ or ‘Inf’ sometimes.
- ‘dbinom(, n=Inf, ..)’ is ‘0’ now correctly, instead of ‘NaN’ which also fixes many ‘dnbinom()’ cases, notably those mentioned inPR#16727 comment #5.
- Fixing C level “binomial deviance” ‘bd0()’ for extreme arguments (preventing under-/overflow) solves more PR#16727 cases and also prevents some full accuracy loss in such cases for ‘dbinom()’, ‘dnbinom()’, and via ‘dbinom_raw()’ potentially ‘dgeom()’, ‘dhyper()’, ‘dbeta()’, and ‘df()’.
- ‘signif(1.**e308, digits)’ no longer truncates unnecessarily (but still to prevent overflow to ‘Inf’), fixing PR#18889.
- ‘prettyNum(*, zero.print={>=1-char}, replace.zero=TRUE)’ now works as documented, thanks to Marttila Mikko and Ivan Krylov's messages on R-devel.
‘pbeta(x, a,b, ..)’ for very large ‘a,b’ no longer returns ‘NaN’ but the correct values (0 or 1, or their logs for ‘log.p = TRUE’). This improves Mathlib's C level ‘bratio()’ and hence also ‘pnbinom()’, etc..
Thu, 29 May 2025
CHANGES IN R-devel BUG FIXES
- The ‘Pair(x,y)’ construction in the formula interface to paired tests did not work with the ‘subset’ argument, due to the absence of a ‘[.Pair’ method, which has now been added.
Wed, 28 May 2025
CHANGES IN R-devel NEW FEATURES
- ‘tools::analyze_license()’ now also computes SPDX license identifiers, thanks to Thierry Onkelinx and LLuís Revilla.
CHANGES IN R 4.5.0 patched BUG FIXES
- ‘signif(1.**e308, digits)’ no longer truncates unnecessarily (but still to prevent overflow to ‘Inf’), fixing PR#18889.
- ‘prettyNum(*, zero.print={>=1-char}, replace.zero=TRUE)’ now works as documented, thanks to Marttila Mikko and Ivan Krylov's messages on R-devel.
‘pbeta(x, a,b, ..)’ for very large ‘a,b’ no longer returns ‘NaN’ but the correct values (0 or 1, or their logs for ‘log.p = TRUE’). This improves Mathlib's C level ‘bratio()’ and hence also ‘pnbinom()’, etc..
Tue, 27 May 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- ‘signif(1.**e308, digits)’ no longer truncates unnecessarily (but still to prevent overflow to ‘Inf’), fixing PR#18889.
‘pbeta(x, a,b, ..)’ for very large ‘a,b’ no longer returns ‘NaN’ but the correct values (0 or 1, or their logs for ‘log.p = TRUE’). This improves Mathlib's C level ‘bratio()’ and hence also ‘pnbinom()’, etc..
Sat, 24 May 2025
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- Failures in building the documentation for the base packages, including from parsing their Rd files, are no longer ignored by ‘make docs’.
Mon, 19 May 2025
CHANGES IN R-devel BUG FIXES
- Dataset ‘LifeCycleSavings’ had a misspelled row name: ‘"Guatamala"’ was corrected to ‘"Guatemala"’.
Sat, 17 May 2025
CHANGES IN R 4.5.0 patched INSTALLATION
- Standalone ‘nmath’ can be built with early-2025 versions of ‘clang’-based compilers such as LLVM ‘clang’ 20, Apple ‘clang’ 17 and Intel ‘icx’ 2025.0.
- Tcl/Tk 9 can be used to build package ‘tcltk’: this has become the default in some Linux distributions. *N.B.* several third-party packages currently require Tcl/Tk 8 or even 8.6 without declaring so.
CHANGES IN R 4.5.0 patched BUG FIXES
Standalone ‘nmath’ can be built with early-2025 versions of ‘clang’-based compilers such as LLVM ‘clang’ 20, Apple ‘clang’ 17 and Intel ‘icx’ 2025.0.
CHANGES IN R 4.5.0 BUG FIXES
- Setting ‘attributes’ on primitive functions is deprecated now and already an error in the development version of R. Changing the ‘environment’ of a primitive does no longer happen and signals a warning.
Sun, 11 May 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- ‘signif(1.**e308, digits)’ no longer truncates unnecessarily (but still to prevent overflow to ‘Inf’), fixing PR#18889.
Fri, 09 May 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- Fixing C level “binomial deviance” ‘bd0()’ for extreme arguments (preventing under-/overflow) solves more PR#16727 cases and also prevents some full accuracy loss in such cases for ‘dbinom()’, ‘dnbinom()’, and via ‘dbinom_raw()’ potentially ‘dgeom()’, ‘dhyper()’, ‘dbeta()’, and ‘df()’.
Sat, 03 May 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- ‘dbinom(, n=Inf, ..)’ is ‘0’ now correctly, instead of ‘NaN’ which also fixes many ‘dnbinom()’ cases, notably those mentioned inPR#16727 comment #5.
Fri, 02 May 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- ‘dnbinom(, , ..)’ now is ‘0’ correctly, instead of ‘NaN’ or ‘Inf’ sometimes.
Sat, 26 Apr 2025
CHANGES IN R-devel NEW FEATURES
- In ‘*.Rd’ help files, the \linkS4class macro now also works for links to other packages via \linkS4class[]{}, much nicer than the “workaround” \link[:-class]{} necessary in earlier versions of R.
Packages with the new syntax need to formally depend on ‘R >= 4.6.0’.
Tue, 22 Apr 2025
CHANGES IN R-devel NEW FEATURES
- ‘help.start()’ gets a ‘lib.loc’ option and its default for ‘make.packages.html()’ is enhanced to allow, e.g., fast access to ‘.Library’ when that contains only base and recommended packages.
CHANGES IN R 4.5.0 patched BUG FIXES
- ‘factanal(.., rotation=*)’ now correctly updates ‘rotmat’, fixingPR#18886.
CHANGES IN R 4.5.0 INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15, LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-17 and Intel 2024.2-2025.0 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.
Sun, 20 Apr 2025
CHANGES IN R-devel NEW FEATURES
- ‘terms(, specials = *)’ now treats non-syntactic specials more gracefully, thanks to Mikael Jagan's PR#18568.
CHANGES IN R-devel UTILITIES
- The cascaded stylesheet ‘R.css’ now adds less vertical white space when rendering Rd files' \itemize, \enumerate, and \describe list \items to HTML.
Where R is used via extensive IDEs such as ‘RStudio’, their maintainers may need to adapt ‘R.css’ files accordingly.
CHANGES IN R 4.5.0 NEW FEATURES
‘terms(, specials = *)’ now treats non-syntactic specials more gracefully, thanks to Mikael Jagan's PR#18568.
Sat, 19 Apr 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- Java detection in ‘javareconf’ could not detect ‘libjvm.*’ in the ‘zero’ variant of the JDK (PR#18884). All valid variants as of JDK 24u are now supported.
Sat, 12 Apr 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- Standalone ‘nmath’ can be built with early-2025 versions of ‘clang’-based compilers such as LLVM ‘clang’ 20, Apple ‘clang’ 17 and Intel ‘icx’ 2025.0.
Thu, 10 Apr 2025
CHANGES IN R 4.5.0 patched BUG FIXES
- Standalone ‘nmath’ can be built again with early-2025 versions of ‘clang’-based compilers such as LLVM ‘clang’ 20, Apple ‘clang’ 17 and Intel ‘icx’ 2025.0.
Sat, 05 Apr 2025
CHANGES IN R 4.5.0 INSTALLATION on WINDOWS
- R on Windows by default uses ‘pkg-config’ for linking against external libraries. This makes it easier to test R and packages with alternative toolchains (such as from Msys2, e.g., testing with LLVM and possibly with sanitizers). It also allows more significant Rtools updates within a single R minor release.
- The installer scripts for Windows have been tailored to Rtools45, an update of the Rtools44 toolchain. It is based on GCC 14. The experimental support for 64-bit ARM (‘aarch64’) CPUs is based on LLVM 19. R-devel and R 4.5.x are no longer maintained to be buildable using Rtools44 and it is advised to switch to Rtools45.
CHANGES IN R 4.5.0 C-LEVEL API
- The ‘Writing R Extensions’ Texinfo source now contains very experimental annotations for more clearly identifying the API status of C entry points. These annotations are used to produce indices for API, experimental API, and embedded API entry points in the rendered versions. This is very preliminary and may be dropped if a better approach emerges.
Also for Fortran-callable entry points which are part of the API.
Thu, 03 Apr 2025
CHANGES IN R 4.5.0 BUG FIXES
‘Sys.setLanguage()’ now works in an ‘LC_ALL=C R’ session on some platforms, warns about _some_ failures to change the language and gets an option related to these warning messages.- ‘Sys.setLanguage()’ now warns about _some_ failures to change the language.
Wed, 02 Apr 2025
CHANGES IN R 4.5.0 BLAS and LAPACK
- This update was mainly bug fixes but contained a barely documented major change. The set of BLAS routines had been unchanged since 1988, so throughout R's history. This update introduced new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. This means that BLAS implementations are no longer interchangeable.
CHANGES IN R 4.5.0 INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 will.
A C23 compiler is known to be selected with ‘gcc’ 13-15, LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-17 and Intel 2024.2-2025.0 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.
CHANGES IN R 4.5.0 C-LEVEL FACILITIES
- There are new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’. They require a length-one input and throw an error if that evaluates to ‘NA’.
Tue, 01 Apr 2025
CHANGES IN R-devel DEPRECATED AND DEFUNCT
- ‘structure(NULL, = )’ is now defunct.
CHANGES IN R-devel BUG FIXES
- Setting ‘attributes’ on primitive functions is an error now; previously, it modified without copying, as noticed by Henrik Bengtsson on the R-devel mailing list.
Relatedly, changing the ‘environment()’ of a primitive function does no longer happen and gives a warning (to become an error, later).
CHANGES IN R 4.5.0 BUG FIXES
- Setting ‘attributes’ on primitive functions is deprecated now and already an error in the development version of R.
Sun, 30 Mar 2025
CHANGES IN R 4.5.0 INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15 (as used on Windows), LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-17 and Intel 2024.2-2025.0 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.
Sat, 29 Mar 2025
CHANGES IN R 4.5.0 NEW FEATURES
- ‘terms(, specials = *)’ now treats non-syntactic specials more gracefully, thanks to Mikael Jagan's PR#18568.
Fri, 28 Mar 2025
CHANGES IN R 4.5.0 C-LEVEL FACILITIES
- Defining ‘R_INCLUDE_BOOLEAN_H’ to ‘0’ before including headers ‘R.h’ or ‘Rinternals.h’ (or any other header which includes ‘R_ext/Boolean.h’) stops the inclusion of header ‘R_ext/Boolean.h’ which `defines' constants ‘TRUE’, ‘FALSE’, ‘true’, ‘false’ and the type ‘bool’ which some package maintainers wish to avoid.
Note that the last three are keywords in C23 and C++11 so cannot be avoided entirely. However, with commonly-used compilers they can be masked by a macro of the same name, often with a warning.
Wed, 26 Mar 2025
CHANGES IN R 4.5.0 C-LEVEL FACILITIES
- Defining ‘R_INCLUDE_BOOLEAN_H’ to ‘0’ before including headers ‘R.h’ or ‘Rinternals.h’ (or any other header which includes ‘R_ext/Boolean.h’) stops the inclusion of header ‘R_ext/Boolean.h’ which `defines' constants ‘TRUE’, ‘true’, ‘false’ and the type ‘bool’ which some package maintainers wish to avoid.
Note that the last three are keywords in C23 and C++11 so cannot be avoided entirely. However, with commonly-used compilers they can be masked by a macro of the same name, often with a warning.
Tue, 25 Mar 2025
CHANGES IN R-devel NEW FEATURES
- ‘str()’ now shows more via ‘format()’ for external pointers.
CHANGES IN R 4.5.0 BUG FIXES
- ‘factanal()’ now works correctly also, e.g., for ‘GPArotation’, ‘oblimin()’ rotations, fixing PR#18417, thanks to Coen Bernaards and others.
Sun, 23 Mar 2025
CHANGES IN R-devel UTILITIES
- ‘R CMD check’ now reports further ‘clang’ warnings including ‘-Wkeyword-macro’. This is most commonly seen for the C23 keywords ‘bool’, ‘true’ and ‘false’, but is also seen for ‘nullptr’ (C23 and C++11). Masking these by macros _may_ generate correct code (but not always) and always results in confusing-to-read code.
CHANGES IN R-devel BUG FIXES
- Setting ‘attributes’ on primitive functions is an error now; previously, it modified without copying, as noticed by Henrik Bengtsson on the R-devel mailing list.
CHANGES IN R 4.5.0 NEW FEATURES
- ‘selectMethod(f, ..)’ now keeps the function name if the function belongs to a group generic and the method is for the generic.
Sat, 22 Mar 2025
CHANGES IN R 4.5.0 NEW FEATURES
- ‘model.frame()’ produces more informative error messages in some cases when variables in the formula are not found, thanks to Ben Bolker'sPR#18860.
CHANGES IN R 4.5.0 INSTALLATION on WINDOWS
- R on Windows by default uses pkg-config for linking against external libraries. This makes it easier to test R and packages with alternative toolchains (such as from Msys2, e.g., testing with LLVM and possibly with sanitizers). It also allows more significant Rtools updates within a single R minor release.
- The installer scripts for Windows have been tailored to Rtools45, an update of the Rtools44 toolchain. It is based on GCC 14. The experimental support for 64-bit ARM (‘aarch64’) CPUs is based on LLVM 19. R-devel is no longer maintained to be buildable using Rtools44 and it is advised to switch to Rtools45.
CHANGES IN R 4.5.0 BUG FIXES
- ‘R CMD check’ now also reports bad symbols in package shared objects linked in from local static libraries (PR#18789).
Fri, 21 Mar 2025
CHANGES IN R 4.5.0 DEPRECATED AND DEFUNCT
- Building with the bundled (and old) version of ‘libintl’ is deprecated and now gives a ‘configure’ warning. This should be selected only if neither the OS's ‘libc’ (as on GNU Linux) nor an external ‘libintl’ library provide suitable functions.
Instead install ‘libintl’ from a recent version of GNU gettext (available for macOS) or use ‘configure’ option ‘--disable-nls’.
The ability to use the bundled version may be removed as soon as R 4.5.1.
CHANGES IN R 4.5.0 UTILITIES
- ‘R CMD check’ gains option ‘--run-demo’ to check demo scripts analogously to tests. This includes a check for undeclared package dependencies: it can also be enabled separately by setting the environment variable ‘_R_CHECK_PACKAGES_USED_IN_DEMO_’ to a true value (as done by ‘R CMD check --as-cran’).
Thu, 20 Mar 2025
CHANGES IN R 4.5.0 NEW FEATURES
- ‘isSymmetric()’ gains a new option ‘trans = "C"’; when set to non-default, it tests for “simple” symmetry of complex matrices.
CHANGES IN R 4.5.0 C-LEVEL FACILITIES
- Header ‘R_exts/Utils.h’ no longer contains a declaration for ‘F77_SUB(interv)’. This is intended to be called from Fortran and was wrongly declared: ‘LOGICAL’ in Fortran corresponds to ‘int *’ not ‘Rboolean *’.
Wed, 19 Mar 2025
CHANGES IN R 4.5.0 INSTALLATION on WINDOWS
- R on Windows by default uses pkg-config for linking against external libraries. This makes it easier to test R and packages with alternative toolchains (such as from Msys2, e.g. testing with LLVM and possibly with sanitizers). It also allows more significant Rtools updates within a single R minor release.
- The installer scripts for Windows have been tailored to Rtools45, an update of the Rtools44 toolchain. It is based on GCC 14. The experimental support for 64-bit ARM (aarch64) CPUs is based on LLVM 19. R-devel is no longer maintained to be buildable using Rtools44 and it is advised to switch to Rtools45.
Sat, 15 Mar 2025
CHANGES IN R 4.5.0 BUG FIXES
- ‘trace(coerce, ..)’ now works correctly, fixing PR#18823 thanks to Mikael Jagan.
Fri, 14 Mar 2025
CHANGES IN R 4.5.0 NEW FEATURES
- ‘as.integer(rl)’ and hence ‘as.raw(rl)’ now work for a ‘list’ of ‘raw(1)’ elements, as proposed by Michael Chirico's PR#18696.
- ‘graphics’' ‘grid()’ gains optional argument ‘nintLog’.
- New functions ‘check_package_urls()’ and ‘check_package_dois()’ in package ‘tools’ for checking URLs and DOIs in package sources.
- New ‘head()’ and ‘tail()’ methods for class ‘"ts"’ time series, proposed by Spencer Graves on R-devel.
- New ‘qr.influence()’ function, a “bare bones” interface to the ‘lm.influence()’ leave-one-out diagnostics computations; wished for inPR#18739.
- Package ‘citation()’ results auto-generated from the package metadata now also provide package DOIs for CRAN and Bioconductor packages.
- New function ‘grepv()’ identical to ‘grep()’ except for the default ‘value = TRUE’.
- ‘methods(:::)’ now does report methods when neither the generic nor the methods have been exported.
- ‘pdf()’ gains an ‘author’ argument to set the corresponding metadata field, and logical arguments ‘timestamp’ and ‘producer’ to optionally omit the respective metadata. (Thanks to Edzer Pebesma.)
- ‘grDevices::glyphInfo()’ gains a ‘rot’ argument to allow per-glyph rotation. (Thanks to Daniel Sabanes Bove.)
- Package ‘tools’ now exports functions ‘CRAN_current_db()’, ‘CRAN_aliases_db()’, ‘CRAN_rdxrefs_db()’, ‘CRAN_archive_db()’, and ‘CRAN_authors_db()’.
- Package ‘tools’ now exports functions ‘R()’ and ‘parse_URI_reference()’.
- Package ‘tools’ now exports functions ‘base_aliases_db()’ and ‘base_rdxrefs_db()’.
- It is now possible to set the background color for row and column names in the data editor on Windows (‘Rgui’).
- ‘Rterm’ on Windows now accepts input lines of unlimited length.
- ‘file.info()’ on Windows now provides file owner name and domain.
- ‘Sys.info()’ on Windows now provides current user domain.
- ‘findInterval()’ gets new arguments ‘checkSorted’ and ‘checkNA’ which allow skipping relatively costly checks; related to PR#16567.
- ‘pnorm(x)’ underflows more gracefully.
- ‘get(nam, env)’ now signals a _classed_ error, ‘"getMissingError"’, as “subclass” of ‘"missingArgError"’ where the latter is used also in similar situations, e.g., ‘f <- function(x) exp(x); try(f())’ .
- The set operations now avoid the ‘as.vector()’ transformation for same-kind apparently vector-like operands.
- ‘md5sum()’ can be used to compute an MD5 hash of a raw vector of bytes by using the ‘bytes=’ argument instead of ‘files=’. The two arguments are mutually exclusive.
- Added function ‘sha256sum()’ in package ‘tools’ analogous to ‘md5sum()’ implementing the SHA-256 hashing algorithm.
- The ‘xtfrm()’ method for class ‘"AsIs"’ is now considerably faster thanks to a patch provided by Ivan Krylov.
- The ‘merge()’ method for data frames will no longer convert row names used for indexing using ‘I()’, which will lead to faster execution in cases where ‘sort = TRUE’ and ‘all.x’ and/or ‘all.y’ are set to ‘TRUE’.
- The ‘methods’ package internal function ‘.requirePackage()’ now calls ‘requireNamespace(p)’ instead of ‘require(p)’, hence no longer adding packages to the ‘search()’ path in cases methods or class definitions are needed. Consequently, previous workflows relying on the old behaviour will have to be amended by adding corresponding ‘library(p)’ calls.
- More R-level messages use a common format containing ‘"character string"’ for more consistency and less translation work.
- ‘available.packages()’ and ‘install.packages()’ get an optional switch ‘cache_user_dir’, somewhat experimentally.
- The ‘sunspot.month’ data have been updated to Oct 2024; because of recalibration also historical numbers are changed, and we keep the previous data as ‘sunspot.m2014’ for reproducibility.
- The ‘quartz()’ device now supports alpha masks. Thanks to George Stagg, Gwynn Gebeyhu, Heather Turner, and Tomek Gieorgijewski.
- The ‘print()’ method for date-time objects (‘POSIX.t’) gets an optional ‘digits’ argument for _fractional_ seconds, passed to improved ‘format.POSIXlt()’; consequently, ‘print(<date.time>, digits = n)’ allows to print fractions of seconds.
- ‘install.packages()’ and ‘download.packages()’ download packages simultaneously using ‘libcurl’, significantly reducing download times when installing or downloading multiple packages.
- Status reporting in ‘download.file()’ has been extended to report the outcome for individual files in simultaneous downloads.
- The Rd \link macro now allows markup in the link text when the topic is given by the optional argument, e.g., ‘\link[=gamma]{\eqn{\Gamma(x)}}’.
- If ‘La_library()’ is empty, ‘sessionInfo()’ still reports ‘La_version()’ when available.
- ‘seq.int(from, to, by, ....)’ when |by| = 1 now behaves as if ‘by’ was omitted, and hence returns ‘from:to’, possibly integer.
- ‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
It is now documented (and tested) that the ‘by’ string may be _abbreviated_ in both ‘seq’ methods.
Both methods return or keep internal type ‘"integer"’ more consistently now. Also, ‘as.POSIXct({})’ is internally integer. - ‘duplicated()’, ‘unique()’, and ‘anyDuplicated()’ now also work for class ‘expression’ vectors.
- New function ‘use()’ to use packages in R scripts with full control over what gets added to the search path. (Actually already available since R 4.4.0.)
- There is some support for ‘zstd’ compression of tarballs in ‘tar()’ and ‘untar()’. (This depends on OS support of ‘libzstd’ or by ‘tar’.)
- ‘print(summary())’ gets new optional argument ‘zdigits’ to allow more flexible and consistent (double) rounding. The current default ‘zdigits = 4L’ is somewhat experimental. Specifying both ‘digits = *, zdigits = *’ allows behaviour independent of the global ‘digits’ option.
- The ‘format()’ method for ‘"difftime"’ objects gets a new back compatible option ‘with.units’.
- A ‘summary()’ method for ‘"difftime"’ objects which prints nicely, similar to those for ‘"Date"’ and ‘"POSIXct"’.
- ‘unique()’'s default method now also deals with ‘"difftime"’ objects.
- ‘optimize(f, *)’ when ‘f(x)’ is not finite says more about the value in its ‘warning’ message. It no longer replaces ‘-Inf’ by the largest _positive_ finite number.
- The documentation of ‘gamma()’ and ‘is.numeric()’ is more specific, thanks to the contributors of PR#18677.
- New dataset ‘gait’ thanks to Heather Turner and Ella Kaye, used in examples.
- New datasets ‘penguins’ and ‘penguins_raw’ thanks to Ella Kaye, Heather Turner, and Kristen Gorman.
CHANGES IN R 4.5.0 BLAS and LAPACK
- The bundled BLAS and LAPACK sources have been updated to those shipped as part of January 2025's LAPACK 3.12.1.
- It is intended that this will be the last update to BLAS and LAPACK in the R sources. Those building R from source are encouraged to use external BLAS and LAPACK and this will be required in future.
- This update was mainly bug fixes but contained a barely documented major change. The set of BLAS routines has been unchanged since 1988, so throughout R's history. This update introduced new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. This means that BLAS implementations are no longer interchangeable.
- To work around this, R can be configured with option ‘--with-2025blas’ which arranges for the 2025 BLAS additions to be compiled into ‘libRlapack’ (the internal LAPACK, not built if an external LAPACK is used).
This option allows the continuation of the practice of swapping the BLAS in use by symlinking ‘lib/libRblas.*’. It has the disadvantage of using the reference BLAS version of the 2025 routines whereas an enhanced BLAS might have an optimized version (OpenBLAS does as from version 0.3.29). - Windows builds currently use the internal LAPACK and by default the internal BLAS: notes on how to swap the latter _via_ ‘Rblas.dll’ are in file ‘src/extra/blas/Makefile.win’.
CHANGES IN R 4.5.0 INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15 (as used on Windows), LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-16 and Intel 2024.2 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23. - The minimum ‘autoconf’ requirement for a maintainer build has been increased to ‘autoconf’ 2.72.
- Building the HTML and Info versions of the R manuals now requires ‘texi2any’ from Texinfo 6.1 or later.
- Failures in building the manuals under ‘doc’ now abort the installation, removing any file which caused the failure.
- Control of symbol visibility is now supported on macOS (the previous check only worked on ELF platforms).
- There is now support for installing the debug symbols for recommended packages on macOS: see ‘REC_INSTALL_OPT’ in file ‘config.site’.
- ‘configure’ is now able to find an external ‘libintl’ on macOS (the code from an older GNU gettext distribution failed to try linking with the macOS Core Foundation framework).
CHANGES IN R 4.5.0 INSTALLATION on WINDOWS
- Both building R and installing packages use the C compiler in C23 mode.
CHANGES IN R 4.5.0 DEPRECATED AND DEFUNCT
- ‘is.R()’ is defunct. Environment variable ‘_R_DEPRECATED_IS_R_’ no longer has any effect.
- Deprecated (for more than 9 years!) functions ‘linearizeMlist’, ‘listFromMlist’, and ‘showMlist’ and the ‘"MethodsList"’ class for S4 method handling were removed from package ‘methods’. Deprecated functions ‘balanceMethodsList’, ‘emptyMethodsList’, ‘inheritedSubMethodLists’, ‘insertMethod’, ‘insertMethodInEmptyList’, ‘makeMethodsList’, ‘mergeMethods’, ‘MethodsList’, ‘MethodsListSelect’, and ‘SignatureMethod’ were made defunct, as were the ‘"MethodsList"’ branches of functions ‘assignMethodsMetaData’, ‘finalDefaultMethod’, and ‘MethodAddCoerce’.
- ‘getMethods(*, table = TRUE)’ is deprecated.
- Building with the bundled (and old) version of ‘libintl’ is deprecated and now gives a ‘configure’ warning. This should be selected only if neither the OS's ‘libc’ (as on GNU Linux) nor an external ‘libintl’ library (as on Alpine Linux) provide suitable functions.
Instead install ‘libintl’ from a recent version of GNU gettext or use ‘configure’ option ‘--disable-nls’. - The deprecated ‘xfig()’ graphics device has been removed.
CHANGES IN R 4.5.0 PACKAGE INSTALLATION
- Packages are now installed using C23 where supported by the OS and R build.
Packages using R's compiler settings can ask *not* to use C23 _via_ including ‘USE_C17’ in ‘SystemRequirements’ or can be installed by ‘R CMD INSTALL --use-C17’. (Some packages ignore these settings in their ‘configure’ script or when compiling in sub-directories of ‘src’, as will those using a ‘src/Makefile’.) - Source installs now report the package version in the log.
- There is preliminary support for C++26 with GCC >= 14, Apple ‘clang++’ >= 16 and LLVM ‘clang++’ >= 17.
CHANGES IN R 4.5.0 C-LEVEL FACILITIES
- The non-API and hidden entry points ‘Rf_setIVector’, ‘Rf_setRVector’ and ‘Rf_setSVector’ have been removed.
- The internal code for changing the parent of an environment now signals an error if the new parent is not an environment or if the change would create a cycle in the parent chain.
- ‘SET_TYPEOF’ now signals an error unless the old and new types have compatible memory structure and content. Use of ‘SET_TYPE’ in package C code should be avoided and may be deprecated in the near future. It is better to allocate an object of the desired type in the first place.
- The set of LAPACK (double and complex) routines declared in the headers ‘R_ext/Lapack.h’ and ‘R_ext/Applic.h’ has been extended, mostly to routines actually in use by packages.
- Memory allocation messages now use the (non-SI notation) ‘"Mb"’, ‘"Gb"’ , ..., and ‘"Mbytes"’ strings as _arguments_ instead of as part of the (translatable format) string. This is one step for PR#18297; from Henrik Bengtsson.
- Header ‘R_ext/Constants.h’ (included by ‘R.h’) now always includes header ‘float.h’ or ‘cfloat’ for constants such as ‘DBL_MAX’.
- Strict R headers are now the default. This removes the legacy definitions of ‘PI’, ‘Calloc’, ‘Realloc’ and ‘Free’: use ‘M_PI’, ‘R_Calloc’, ‘R_Realloc’ or ‘R_Free’ instead.
- The deprecated and seemingly never-used S-compatibility macros ‘F77_COM’ and ‘F77_COMDECL’ have been removed from header ‘R_ext/RS.h’.
- The ‘enum’ ‘Rboolean’ defined in header ‘R_ext/Boolean.h’ now has a fixed underlying type of ‘int’ on platforms whose C compiler supports this.
This is a C23 feature (taken from C++11) and also supported in all C standards by some versions of ‘clang’ (from LLVM and Apple) and (with a warning when using ‘-pedantic’) by GCC when in C17 mode.
A fair amount of code has assumed this: it may be changed to a smaller type in future. In particular, as standard compilers do not check the validity of assignment to an ‘enum’, it has been possible to assign ‘NA_INTEGER’ to an ‘Rboolean’ variable, coerce it to ‘int’ and recover the value.
If there were a platform which used an underlying type of a different size this would be an ABI-breaking change (but we are unaware of any such platform). - Header ‘R_ext/Boolean.h’ now ensures that a ‘bool’ type is available either as a keyword (C23 and C++) or by including the C99 header ‘stdbool.h’. This is being used internally in R to replace ‘Rboolean’ by ‘bool’.
- There are a new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’. They require a length-one input and throw an error if that evaluates to ‘NA’.
- Header ‘R_exts/Error.h’ now ensures that ‘Rf_error’ and similar are given a ‘noreturn’ attribute when used from C++ under all compilers.
- Header ‘R_exts/Utils.h’ no longer contains a declaration for ‘77_SUB(interv)’. This is intended to be called from Fortran and was wrongly declared: ‘LOGICAL’ in Fortran corresponds to ‘int *’ not ‘Rboolean *’.
CHANGES IN R 4.5.0 C-LEVEL API
- The ‘Writing R Extensions’ Texinfo source now contains very experimental annotations for more clearly identifying the API status of C entry points. These annotations are used to produce indices for API, experimental API, and embedded API entry points in the rendered versions. This is very preliminary and may be dropped if a better approach emerges.
Also now for Fortran-callable entry points which are part of the API. - ‘Writing R Extensions’ has a new section ‘Moving into C API compliance’ to help package authors move away from using non-API endpoints. This section will continue to be updated as work on clarifying and tightening the C API continues.
- New API function ‘R_mkClosure’. This checks that its arguments are valid and should be used instead of ‘allocSExp(CLOSXP’ followed by ‘SET_FORMALS’, ‘SET_BODY’, and ‘SET_CLOENV’.
- New API functions ‘R_ClosureFormals’, ‘R_ClosureBody’, and ‘R_ClosureEnv’ for extracting closure components. The existing functions ‘R_ClosureExpr’ and ‘R_BytecodeExpr’ have also been added to the API.
- New API function ‘R_ParentEnv’ corresponding to R's ‘parent.env()’.
- Further non-API entry points have been added to those reported by ‘R CMD check’: ‘COMPLEX0’, ‘ddfind’, ‘DDVAL’, ‘ENSURE_NAMEDMAX’, ‘ENVFLAGS’, ‘FRAME’, ‘HASHTAB’, ‘INTERNAL’, ‘IS_ASCII’, ‘IS_UTF8’, ‘LEVELS’, ‘NAMED’, ‘PRSEEN’, ‘RDEBUG’, ‘REAL0’, ‘Rf_findVarInFrame3’, ‘SET_BODY’, ‘SET_CLOENV’, ‘SET_FORMALS’, ‘SET_PRSEEN’, ‘SET_RDEBUG’, ‘STRING_PTR’, ‘SYMVALUE’, and ‘VECTOR_PTR’. Any declarations for these in public header files will be removed in the near future, and they will be hidden where possible.
- Some ‘R CMD check’ ‘NOTE’s on the use of non-API entry points have been upgraded to ‘WARNING’s in preparation for removing declarations and, where possible, hiding these entry points.
- Additional non-API entry points have been added to those reported by ‘R CMD check’: ‘IS_LONG_VEC’, ‘PRCODE’, ‘PRENV’, ‘PRVALUE’, ‘R_nchar’, ‘Rf_NonNullStringMatch’, ‘R_shallow_duplicate_attr’, ‘Rf_StringBlank’, ‘SET_TYPEOF’, ‘TRUELENGTH’, ‘XLENGTH_EX’, and ‘XTRUELENGTH’.
- Enable defining ‘R_NO_REMAP_RMATH’ and calling ‘Rf_*()’ as has been documented in ‘Writing R Extensions’ for a while, fixing PR#18800thanks to Mikael Jagan and Suharto Anggono.
- ‘R_GetCurrentSrcref(skip)’ now skips calls rather than ‘srcref’s, consistent with counting items in the ‘traceback()’ display. If ‘skip == NA_INTEGER’, it searches for the first ‘srcref’, starting at the current evaluation state and proceeding through the call stack; otherwise, it returns the ‘srcref’ of the requested entry from the call stack.
CHANGES IN R 4.5.0 UTILITIES
- ‘R CMD INSTALL’ (and hence ‘check’) now compile C++ code with ‘-DR_NO_REMAP’.
‘Writing R Extensions’ has been revised to describe the remapped entry points, for with the ‘Rf_’ prefix remains optional when used from C code (but is recommended for new C code). - ‘R CMD check --as-cran’ notes bad parts in the ‘DESCRIPTION’ file's URL fields.
- ‘R CMD check’ now reports more warnings on long-deprecated/obsolete Fortran features reported by ‘gfortran -Wall’. For hints on how to modernize these, see https://fortranwiki.org/fortran/show/Modernizing+Old+Fortran.
- Since almost all supported R versions now use UTF-8, ‘R CMD check’ no longer by default reports on marked UTF-8 or Latin-1 strings in character data. Set environment variable ‘_R_CHECK_PACKAGE_DATASETS_SUPPRESS_NOTES_’ to a false value for the previous behaviour.
- ‘tools::checkDocFiles()’ notes more cases of usage documentation without corresponding \alias.
- ‘R CMD check’ with a true value for environment variable ‘_R_CHECK_BASHISMS_’ checks more thoroughly, including for ‘bash’ scripts and bashisms in components of ‘autoconf’-generated ‘configure’ scripts.
- ‘R CMD check’ gains option ‘--run-demo’ to check demo scripts analogously to tests.
- ‘R CMD build’ now supports ‘--compression=zstd’ on platforms with sufficient support for ‘zstd’.
- ‘tools::texi2pdf(..., texinputs=)’ now _pre_pends the specified to ‘TEXINPUTS’. When building R itself (‘doc/NEWS.pdf’ and base vignettes) or package manuals using ‘R CMD Rd2pdf’, it is ensured that this R's ‘Rd.sty’ takes precedence over any other (incompatible) versions in default “texmf trees”.
- ‘tools::Rd2latex()’ no longer outputs an ‘\inputencoding{utf8}’ line by default; such a declaration is obsolete since LaTeX 2018-04-01.
CHANGES IN R 4.5.0 BUG FIXES
- ‘update_pkg_po()’ now copies ‘.mo’ files to the ‘translation’ package even if a ‘DESCRIPTION’ file exists, thanks to Michael Chirico fixingPR#18694.
- Auto-generated ‘citation()’ entries no longer include (additional) URLs in the ‘note’ field (PR#18547).
- ‘as.data.frame.list()’ gets a new option ‘new.names’ and now preserves ‘NA’ names, thus fixing the ‘format()’ method for data frames, and also bug PR#18745. Relatedly, the ‘format()’ method gets an option ‘cut.names’.
- ‘stem()’ formats correctly also in cases where rounding up, e.g., from 9.96 to 10 needs more digits; thanks to Ella Kaye and Kelly Bodwin, fixing PR#8934 during ‘R Dev Day’ at useR!2024.
Additionally, ‘stem(x)’ now works normally also when ‘length(x) == 1’. - ‘tools’' ‘toTitleCase()’ now works better, fixing PR#18674, thanks to Shannon Pileggi, Sarah Zeller, Reiko Okamoto, and Hugo Gruson's ‘R Dev Day’ effort.
- Printing matrices (typically with many rows and or columns) now also omits columns when desirable according to option ‘max.print’, or argument ‘max’, respectively. This is primarily the work of Lorena Abad, Ekaterina Akimova, Hanne Oberman, Abhishek Ulayil, and Lionel Henry at the ‘R Dev Day’, thus fixing PR#15027.
- ‘Sys.setLanguage()’ now works in an ‘LC_ALL=C R’ session on some platforms, warns about _some_ failures to change the language and gets an option related to these warning messages.
- Printing ‘ls.str()’ now shows ‘""’ even when R's language setting is not English.
- ‘xyTable()’ now handles and reports ‘NA’s fixing PR#18654. Thanks to Heather Turner and Zhian Kamvar for report and patch.
- ‘as(*, "raw")’ now works as documented, thanks to Mikael Jagan'sPR#18795.
- Informational messages of e.g., ‘print(1:1e4, max=1000)’, now correctly mention ‘max’ in addition to ‘getOption("max.print")’.
- ‘rowSums(A, dims = dd)’, ‘colMeans(..)’, etc, give a more helpful error message when ‘dd’ is not of length one, thanks to Michael Chirico'sPR#18811.
- ‘seq.Date()’ no longer explicitly coerces results from integer to double, analogously with ‘seq.default()’, ‘seq.int()’ and ‘seq.POSIXt()’, resolving a _modified_ PR#18782.
- ‘axisTicks(usr, ...)’ documentation clarification for ‘log = TRUE’, fixing bug PR#18821 thanks to Duncan Murdoch.
- ‘debug()’ and ‘debugonce(fun)’ now also accept a string ‘fun’ when it names an S4 generic, fixing PR#18822 thanks to Mikael Jagan.
- ‘debugonce(, signature=*)’ now works correctly when “called twice”, fixing PR#18824 thanks to Mikael Jagan.
- ‘format(dtime, digits=* / format=*)’ is more consistent when the ‘POSIXt’ date-time object ‘dtime’ has fractional (non integer) seconds. Fixes PR#17350, thanks to new contributions by LatinR's ‘R Dev Day’ participants, Heather Turner and Dirk Eddelbuettel; also fixes more cases, notably when ‘format’ contains "
- ‘options(scipen = NULL)’ and other invalid values now signal an error instead of invalidating ops relying on a finite integer value. Values outside the range -9 .. 9999 are now warned about and set to a boundary or to the default ‘0’, e.g., in case of an ‘NA’.
- ‘cbind()’ could segfault with ‘NULL’ inputs. (Seen when R was built with ‘gcc-14’, LTO and C99 inlining semantics.)
- Fix segfault on ‘quartz()’ from ‘grid.glyph()’ call with ‘glyphInfo()’ that describes non-existent font (PR#18784). Thanks to Tomek Gieorgijewski.
- ‘format()’ etc, using ‘decimal.mark = s’, by default getting ‘s <- getOption("OutDec")’, signals a warning (to become an error in the future) when ‘s’ is not a string with exactly one character.
- When ‘s <- getOption("OutDec")’ is not a string of one character, a warning is signalled now whenever it is used in internal C code, notably when calling the default methods of ‘format()’.
- ‘pwilcox()’ and ‘qwilcox()’ now check for user interrupt less frequently.
- ‘summary()’ (which prints directly) finally gets the same ‘digits’ default as the formatting printing of default ‘summary()’ method results, and it is documented explicitly.
- ‘options(show.error.locations = TRUE)’ once again shows the most recent known location when an error is reported. Setting its value to ‘"bottom"’ is no longer supported. Numerical values are converted to logical.
- C API function ‘R_GetCurrentSrcref(skip)’ now returns ‘srcref’ entries correctly. (Note that there is also a change to the interpretation of ‘skip’; see the C-LEVEL API entry above.)
- ‘tools::Rd2latex()’ now removes leading and trailing spaces from \alias entries as documented, fixing indexing and linking hiccups in some PDF manuals.
- ‘R CMD Rd2pdf’ can now render the package manual from a ‘--latex’ installation also when the help contains figures.
- The argument of ‘as.environment()’ is now named ‘x’, not ‘object’, as was always documented and shown when printing it; thanks to Gael Millot's PR#18849.
- When ‘R CMD check’ aims at getting the time+date from a world clock, it is more robust against unexpected non-error results, thanks to Michael Chirico's PR#18852.
- The ‘tools::parseLatex()’ parser made several parsing errors (PR#18855).
- Error messages produced by ‘tools::parseLatex()’ are now more readable (PR#18855).
- ‘R CMD build ’ excludes more file patterns when it tars the directory, fixing both PR#18432 and PR#18434, for ‘vim’ and ‘GNU Global’ ‘emacs’ users, thanks to Dirk Eddelbuettel's patch.
- ‘quantile()’'s default method gets an option ‘fuzz’ to protect against floating point inaccuracy before rounding, thus fixing PR#15811 and, en passant, PR#17683.
- Printing arrays now also omits columns, rows and slices when desirable according to option ‘max.print’, or argument ‘max’, respectively, addressing most of the remaining part of PR#15027, thanks to Sherry Zhang's patch.
- ‘drop.terms(y ~ w, 1)’ and similar now work, thanks to Benjamin Sommer's report in PR#18861 and collaboration with Heather Turner improving ‘reformulate()’.
- Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ arguments of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’/‘FALSE’ values of their logical arguments as ‘FALSE’, but these were almost always mismatches to unnamed arguments and are now reported as ‘NA’. - ‘vignette("reshape")’ is now also available on Windows.
CHANGES IN R-devel BLAS and LAPACK
The bundled BLAS and LAPACK sources have been updated to those shipped as part of January 2025's LAPACK 3.12.1.It is intended that this will be the last update to BLAS and LAPACK in the R sources. Those building R from source are encouraged to use external BLAS and LAPACK and this will be required in future.This update was mainly bug fixes but contained a barely documented major change. The set of BLAS routines has been unchanged since 1988, so throughout R's history. This update introduced new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. This means that BLAS implementations are no longer interchangeable.To work around this, R can be configured with option ‘--with-2025blas’ which arranges for the 2025 BLAS additions to be compiled into ‘libRlapack’ (the internal LAPACK, not built if an external LAPACK is used).
This option allows the continuation of the practice of swapping the BLAS in use by symlinking ‘lib/libRblas.*’. It has the disadvantage of using the reference BLAS version of the 2025 routines whereas an enhanced BLAS might have an optimized version (OpenBLAS does as from version 0.3.29).Windows builds currently use the internal LAPACK and by default the internal BLAS: notes on how to swap the latter _via_ ‘Rblas.dll’ are in file ‘src/extra/blas/Makefile.win’.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15 (as used on Windows), LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-16 and Intel 2024.2 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.The minimum ‘autoconf’ requirement for a maintainer build has been increased to ‘autoconf’ 2.72.Building the HTML and Info versions of the R manuals now requires ‘texi2any’ from Texinfo 6.1 or later.Failures in building the manuals under ‘doc’ now abort the installation, removing any file which caused the failure.Control of symbol visibility is now supported on macOS (the previous check only worked on ELF platforms).There is now support for installing the debug symbols for recommended packages on macOS: see ‘REC_INSTALL_OPT’ in file ‘config.site’.‘configure’ is now able to find an external ‘libintl’ on macOS (the code from an older GNU gettext distribution failed to try linking with the macOS Core Foundation framework).
CHANGES IN R-devel DEPRECATED AND DEFUNCT
‘is.R()’ is defunct. Environment variable ‘_R_DEPRECATED_IS_R_’ no longer has any effect.Deprecated (for more than 9 years!) functions ‘linearizeMlist’, ‘listFromMlist’, and ‘showMlist’ and the ‘"MethodsList"’ class for S4 method handling were removed from package ‘methods’. Deprecated functions ‘balanceMethodsList’, ‘emptyMethodsList’, ‘inheritedSubMethodLists’, ‘insertMethod’, ‘insertMethodInEmptyList’, ‘makeMethodsList’, ‘mergeMethods’, ‘MethodsList’, ‘MethodsListSelect’, and ‘SignatureMethod’ were made defunct, as were the ‘"MethodsList"’ branches of functions ‘assignMethodsMetaData’, ‘finalDefaultMethod’, and ‘MethodAddCoerce’.‘getMethods(*, table = TRUE)’ is deprecated.Building with the bundled (and old) version of ‘libintl’ is deprecated and now gives a ‘configure’ warning. This should be selected only if neither the OS's ‘libc’ (as on GNU Linux) nor an external ‘libintl’ library (as on Alpine Linux) provide suitable functions.
Instead install ‘libintl’ from a recent version of GNU gettext or use ‘configure’ option ‘--disable-nls’.The deprecated ‘xfig()’ graphics device has been removed.
CHANGES IN R-devel C-LEVEL API
The ‘Writing R Extensions’ Texinfo source now contains very experimental annotations for more clearly identifying the API status of C entry points. These annotations are used to produce indices for API, experimental API, and embedded API entry points in the rendered versions. This is very preliminary and may be dropped if a better approach emerges.
Also now for Fortran-callable entry points which are part of the API.‘Writing R Extensions’ has a new section ‘Moving into C API compliance’ to help package authors move away from using non-API endpoints. This section will continue to be updated as work on clarifying and tightening the C API continues.New API function ‘R_mkClosure’. This checks that its arguments are valid and should be used instead of ‘allocSExp(CLOSXP’ followed by ‘SET_FORMALS’, ‘SET_BODY’, and ‘SET_CLOENV’.New API functions ‘R_ClosureFormals’, ‘R_ClosureBody’, and ‘R_ClosureEnv’ for extracting closure components. The existing functions ‘R_ClosureExpr’ and ‘R_BytecodeExpr’ have also been added to the API.New API function ‘R_ParentEnv’ corresponding to R's ‘parent.env()’.Further non-API entry points have been added to those reported by ‘R CMD check’: ‘COMPLEX0’, ‘ddfind’, ‘DDVAL’, ‘ENSURE_NAMEDMAX’, ‘ENVFLAGS’, ‘FRAME’, ‘HASHTAB’, ‘INTERNAL’, ‘IS_ASCII’, ‘IS_UTF8’, ‘LEVELS’, ‘NAMED’, ‘PRSEEN’, ‘RDEBUG’, ‘REAL0’, ‘Rf_findVarInFrame3’, ‘SET_BODY’, ‘SET_CLOENV’, ‘SET_FORMALS’, ‘SET_PRSEEN’, ‘SET_RDEBUG’, ‘STRING_PTR’, ‘SYMVALUE’, and ‘VECTOR_PTR’. Any declarations for these in public header files will be removed in the near future, and they will be hidden where possible.Some ‘R CMD check’ ‘NOTE’s on the use of non-API entry points have been upgraded to ‘WARNING’s in preparation for removing declarations and, where possible, hiding these entry points.Additional non-API entry points have been added to those reported by ‘R CMD check’: ‘IS_LONG_VEC’, ‘PRCODE’, ‘PRENV’, ‘PRVALUE’, ‘R_nchar’, ‘Rf_NonNullStringMatch’, ‘R_shallow_duplicate_attr’, ‘Rf_StringBlank’, ‘SET_TYPEOF’, ‘TRUELENGTH’, ‘XLENGTH_EX’, and ‘XTRUELENGTH’.Enable defining ‘R_NO_REMAP_RMATH’ and calling ‘Rf_*()’ as has been documented in ‘Writing R Extensions’ for a while, fixing PR#18800thanks to Mikael Jagan and Suharto Anggono.‘R_GetCurrentSrcref(skip)’ now skips calls rather than ‘srcref’s, consistent with counting items in the ‘traceback()’ display. If ‘skip == NA_INTEGER’, it searches for the first ‘srcref’, starting at the current evaluation state and proceeding through the call stack; otherwise, it returns the ‘srcref’ of the requested entry from the call stack.
CHANGES IN R-devel UTILITIES
‘R CMD INSTALL’ (and hence ‘check’) now compile C++ code with ‘-DR_NO_REMAP’.
‘Writing R Extensions’ has been revised to describe the remapped entry points, for with the ‘Rf_’ prefix remains optional when used from C code (but is recommended for new C code).‘R CMD check --as-cran’ notes bad parts in the ‘DESCRIPTION’ file's URL fields.‘R CMD check’ now reports more warnings on long-deprecated/obsolete Fortran features reported by ‘gfortran -Wall’. For hints on how to modernize these, see https://fortranwiki.org/fortran/show/Modernizing+Old+Fortran.Since almost all supported R versions now use UTF-8, ‘R CMD check’ no longer by default reports on marked UTF-8 or Latin-1 strings in character data. Set environment variable ‘_R_CHECK_PACKAGE_DATASETS_SUPPRESS_NOTES_’ to a false value for the previous behaviour.‘tools::checkDocFiles()’ notes more cases of usage documentation without corresponding \alias.‘R CMD check’ with a true value for environment variable ‘_R_CHECK_BASHISMS_’ checks more thoroughly, including for ‘bash’ scripts and bashisms in components of ‘autoconf’-generated ‘configure’ scripts.‘R CMD check’ gains option ‘--run-demo’ to check demo scripts analogously to tests.‘R CMD build’ now supports ‘--compression=zstd’ on platforms with sufficient support for ‘zstd’.‘tools::texi2pdf(..., texinputs=)’ now _pre_pends the specified to ‘TEXINPUTS’. When building R itself (‘doc/NEWS.pdf’ and base vignettes) or package manuals using ‘R CMD Rd2pdf’, it is ensured that this R's ‘Rd.sty’ takes precedence over any other (incompatible) versions in default “texmf trees”.‘tools::Rd2latex()’ no longer outputs an ‘\inputencoding{utf8}’ line by default; such a declaration is obsolete since LaTeX 2018-04-01.
CHANGES IN R-devel BUG FIXES
‘update_pkg_po()’ now copies ‘.mo’ files to the ‘translation’ package even if a ‘DESCRIPTION’ file exists, thanks to Michael Chirico fixingPR#18694.Auto-generated ‘citation()’ entries no longer include (additional) URLs in the ‘note’ field (PR#18547).‘as.data.frame.list()’ gets a new option ‘new.names’ and now preserves ‘NA’ names, thus fixing the ‘format()’ method for data frames, and also bug PR#18745. Relatedly, the ‘format()’ method gets an option ‘cut.names’.‘stem()’ formats correctly also in cases where rounding up, e.g., from 9.96 to 10 needs more digits; thanks to Ella Kaye and Kelly Bodwin, fixing PR#8934 during ‘R Dev Day’ at useR!2024.
Additionally, ‘stem(x)’ now works normally also when ‘length(x) == 1’.‘tools’' ‘toTitleCase()’ now works better, fixing PR#18674, thanks to Shannon Pileggi, Sarah Zeller, Reiko Okamoto, and Hugo Gruson's ‘R Dev Day’ effort.Printing matrices (typically with many rows and or columns) now also omits columns when desirable according to option ‘max.print’, or argument ‘max’, respectively. This is primarily the work of Lorena Abad, Ekaterina Akimova, Hanne Oberman, Abhishek Ulayil, and Lionel Henry at the ‘R Dev Day’, thus fixing PR#15027.‘Sys.setLanguage()’ now works in an ‘LC_ALL=C R’ session on some platforms, warns about _some_ failures to change the language and gets an option related to these warning messages.Printing ‘ls.str()’ now shows ‘""’ even when R's language setting is not English.‘xyTable()’ now handles and reports ‘NA’s fixing PR#18654. Thanks to Heather Turner and Zhian Kamvar for report and patch.‘as(*, "raw")’ now works as documented, thanks to Mikael Jagan'sPR#18795.Informational messages of e.g., ‘print(1:1e4, max=1000)’, now correctly mention ‘max’ in addition to ‘getOption("max.print")’.‘rowSums(A, dims = dd)’, ‘colMeans(..)’, etc, give a more helpful error message when ‘dd’ is not of length one, thanks to Michael Chirico'sPR#18811.‘seq.Date()’ no longer explicitly coerces results from integer to double, analogously with ‘seq.default()’, ‘seq.int()’ and ‘seq.POSIXt()’, resolving a _modified_ PR#18782.‘axisTicks(usr, ...)’ documentation clarification for ‘log = TRUE’, fixing bug PR#18821 thanks to Duncan Murdoch.‘debug()’ and ‘debugonce(fun)’ now also accept a string ‘fun’ when it names an S4 generic, fixing PR#18822 thanks to Mikael Jagan.‘debugonce(, signature=*)’ now works correctly when “called twice”, fixing PR#18824 thanks to Mikael Jagan.‘format(dtime, digits=* / format=*)’ is more consistent when the ‘POSIXt’ date-time object ‘dtime’ has fractional (non integer) seconds. Fixes PR#17350, thanks to new contributions by LatinR's ‘R Dev Day’ participants, Heather Turner and Dirk Eddelbuettel; also fixes more cases, notably when ‘format’ contains "‘options(scipen = NULL)’ and other invalid values now signal an error instead of invalidating ops relying on a finite integer value. Values outside the range -9 .. 9999 are now warned about and set to a boundary or to the default ‘0’, e.g., in case of an ‘NA’.‘cbind()’ could segfault with ‘NULL’ inputs. (Seen when R was built with ‘gcc-14’, LTO and C99 inlining semantics.)Fix segfault on ‘quartz()’ from ‘grid.glyph()’ call with ‘glyphInfo()’ that describes non-existent font (PR#18784). Thanks to Tomek Gieorgijewski.‘format()’ etc, using ‘decimal.mark = s’, by default getting ‘s <- getOption("OutDec")’, signals a warning (to become an error in the future) when ‘s’ is not a string with exactly one character.When ‘s <- getOption("OutDec")’ is not a string of one character, a warning is signalled now whenever it is used in internal C code, notably when calling the default methods of ‘format()’.‘pwilcox()’ and ‘qwilcox()’ now check for user interrupt less frequently.‘summary()’ (which prints directly) finally gets the same ‘digits’ default as the formatting printing of default ‘summary()’ method results, and it is documented explicitly.‘options(show.error.locations = TRUE)’ once again shows the most recent known location when an error is reported. Setting its value to ‘"bottom"’ is no longer supported. Numerical values are converted to logical.C API function ‘R_GetCurrentSrcref(skip)’ now returns ‘srcref’ entries correctly. (Note that there is also a change to the interpretation of ‘skip’; see the C-LEVEL API entry above.)‘tools::Rd2latex()’ now removes leading and trailing spaces from \alias entries as documented, fixing indexing and linking hiccups in some PDF manuals.‘R CMD Rd2pdf’ can now render the package manual from a ‘--latex’ installation also when the help contains figures.The argument of ‘as.environment()’ is now named ‘x’, not ‘object’, as was always documented and shown when printing it; thanks to Gael Millot's PR#18849.When ‘R CMD check’ aims at getting the time+date from a world clock, it is more robust against unexpected non-error results, thanks to Michael Chirico's PR#18852.The ‘tools::parseLatex()’ parser made several parsing errors (PR#18855).Error messages produced by ‘tools::parseLatex()’ are now more readable (PR#18855).‘R CMD build ’ excludes more file patterns when it tars the directory, fixing both PR#18432 and PR#18434, for ‘vim’ and ‘GNU Global’ ‘emacs’ users, thanks to Dirk Eddelbuettel's patch.‘quantile()’'s default method gets an option ‘fuzz’ to protect against floating point inaccuracy before rounding, thus fixing PR#15811 and, en passant, PR#17683.Printing arrays now also omits columns, rows and slices when desirable according to option ‘max.print’, or argument ‘max’, respectively, addressing most of the remaining part of PR#15027, thanks to Sherry Zhang's patch.‘drop.terms(y ~ w, 1)’ and similar now work, thanks to Benjamin Sommer's report in PR#18861 and collaboration with Heather Turner improving ‘reformulate()’.Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ arguments of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’/‘FALSE’ values of their logical arguments as ‘FALSE’, but these were almost always mismatches to unnamed arguments and are now reported as ‘NA’.‘vignette("reshape")’ is now also available on Windows.
CHANGES IN R-devel SIGNIFICANT USER-VISIBLE CHANGES
- .
CHANGES IN R-devel NEW FEATURES
‘as.integer(rl)’ and hence ‘as.raw(rl)’ now work for a ‘list’ of ‘raw(1)’ elements, as proposed by Michael Chirico's PR#18696.‘graphics’' ‘grid()’ gains optional argument ‘nintLog’.New functions ‘check_package_urls()’ and ‘check_package_dois()’ in package ‘tools’ for checking URLs and DOIs in package sources.New ‘head()’ and ‘tail()’ methods for class ‘"ts"’ time series, proposed by Spencer Graves on R-devel.New ‘qr.influence()’ function, a “bare bones” interface to the ‘lm.influence()’ leave-one-out diagnostics computations; wished for inPR#18739.Package ‘citation()’ results auto-generated from the package metadata now also provide package DOIs for CRAN and Bioconductor packages.New function ‘grepv()’ identical to ‘grep()’ except for the default ‘value = TRUE’.‘methods(:::)’ now does report methods when neither the generic nor the methods have been exported.‘pdf()’ gains an ‘author’ argument to set the corresponding metadata field, and logical arguments ‘timestamp’ and ‘producer’ to optionally omit the respective metadata. (Thanks to Edzer Pebesma.)‘grDevices::glyphInfo()’ gains a ‘rot’ argument to allow per-glyph rotation. (Thanks to Daniel Sabanes Bove.)Package ‘tools’ now exports functions ‘CRAN_current_db()’, ‘CRAN_aliases_db()’, ‘CRAN_rdxrefs_db()’, ‘CRAN_archive_db()’, and ‘CRAN_authors_db()’.Package ‘tools’ now exports functions ‘R()’ and ‘parse_URI_reference()’.Package ‘tools’ now exports functions ‘base_aliases_db()’ and ‘base_rdxrefs_db()’.It is now possible to set the background color for row and column names in the data editor on Windows (‘Rgui’).‘Rterm’ on Windows now accepts input lines of unlimited length.‘file.info()’ on Windows now provides file owner name and domain.‘Sys.info()’ on Windows now provides current user domain.‘findInterval()’ gets new arguments ‘checkSorted’ and ‘checkNA’ which allow skipping relatively costly checks; related to PR#16567.‘pnorm(x)’ underflows more gracefully.‘get(nam, env)’ now signals a _classed_ error, ‘"getMissingError"’, as “subclass” of ‘"missingArgError"’ where the latter is used also in similar situations, e.g., ‘f <- function(x) exp(x); try(f())’ .The set operations now avoid the ‘as.vector()’ transformation for same-kind apparently vector-like operands.‘md5sum()’ can be used to compute an MD5 hash of a raw vector of bytes by using the ‘bytes=’ argument instead of ‘files=’. The two arguments are mutually exclusive.Added function ‘sha256sum()’ in package ‘tools’ analogous to ‘md5sum()’ implementing the SHA-256 hashing algorithm.The ‘xtfrm()’ method for class ‘"AsIs"’ is now considerably faster thanks to a patch provided by Ivan Krylov.The ‘merge()’ method for data frames will no longer convert row names used for indexing using ‘I()’, which will lead to faster execution in cases where ‘sort = TRUE’ and ‘all.x’ and/or ‘all.y’ are set to ‘TRUE’.The ‘methods’ package internal function ‘.requirePackage()’ now calls ‘requireNamespace(p)’ instead of ‘require(p)’, hence no longer adding packages to the ‘search()’ path in cases methods or class definitions are needed. Consequently, previous workflows relying on the old behaviour will have to be amended by adding corresponding ‘library(p)’ calls.More R-level messages use a common format containing ‘"character string"’ for more consistency and less translation work.‘available.packages()’ and ‘install.packages()’ get an optional switch ‘cache_user_dir’, somewhat experimentally.The ‘sunspot.month’ data have been updated to Oct 2024; because of recalibration also historical numbers are changed, and we keep the previous data as ‘sunspot.m2014’ for reproducibility.The ‘quartz()’ device now supports alpha masks. Thanks to George Stagg, Gwynn Gebeyhu, Heather Turner, and Tomek Gieorgijewski.The ‘print()’ method for date-time objects (‘POSIX.t’) gets an optional ‘digits’ argument for _fractional_ seconds, passed to improved ‘format.POSIXlt()’; consequently, ‘print(<date.time>, digits = n)’ allows to print fractions of seconds.‘install.packages()’ and ‘download.packages()’ download packages simultaneously using ‘libcurl’, significantly reducing download times when installing or downloading multiple packages.Status reporting in ‘download.file()’ has been extended to report the outcome for individual files in simultaneous downloads.The Rd \link macro now allows markup in the link text when the topic is given by the optional argument, e.g., ‘\link[=gamma]{\eqn{\Gamma(x)}}’.If ‘La_library()’ is empty, ‘sessionInfo()’ still reports ‘La_version()’ when available.‘seq.int(from, to, by, ....)’ when |by| = 1 now behaves as if ‘by’ was omitted, and hence returns ‘from:to’, possibly integer.‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
It is now documented (and tested) that the ‘by’ string may be _abbreviated_ in both ‘seq’ methods.
Both methods return or keep internal type ‘"integer"’ more consistently now. Also, ‘as.POSIXct({})’ is internally integer.‘duplicated()’, ‘unique()’, and ‘anyDuplicated()’ now also work for class ‘expression’ vectors.New function ‘use()’ to use packages in R scripts with full control over what gets added to the search path. (Actually already available since R 4.4.0.)There is some support for ‘zstd’ compression of tarballs in ‘tar()’ and ‘untar()’. (This depends on OS support of ‘libzstd’ or by ‘tar’.)‘print(summary())’ gets new optional argument ‘zdigits’ to allow more flexible and consistent (double) rounding. The current default ‘zdigits = 4L’ is somewhat experimental. Specifying both ‘digits = *, zdigits = *’ allows behaviour independent of the global ‘digits’ option.The ‘format()’ method for ‘"difftime"’ objects gets a new back compatible option ‘with.units’.A ‘summary()’ method for ‘"difftime"’ objects which prints nicely, similar to those for ‘"Date"’ and ‘"POSIXct"’.‘unique()’'s default method now also deals with ‘"difftime"’ objects.‘optimize(f, *)’ when ‘f(x)’ is not finite says more about the value in its ‘warning’ message. It no longer replaces ‘-Inf’ by the largest _positive_ finite number.The documentation of ‘gamma()’ and ‘is.numeric()’ is more specific, thanks to the contributors of PR#18677.New dataset ‘gait’ thanks to Heather Turner and Ella Kaye, used in examples.New datasets ‘penguins’ and ‘penguins_raw’ thanks to Ella Kaye, Heather Turner, and Kristen Gorman.- .
CHANGES IN R-devel INSTALLATION
- .
CHANGES IN R-devel PACKAGE INSTALLATION
Packages are now installed using C23 where supported by the OS and R build.
Packages using R's compiler settings can ask *not* to use C23 _via_ including ‘USE_C17’ in ‘SystemRequirements’ or can be installed by ‘R CMD INSTALL --use-C17’. (Some packages ignore these settings in their ‘configure’ script or when compiling in sub-directories of ‘src’, as will those using a ‘src/Makefile’.)Source installs now report the package version in the log.There is preliminary support for C++26 with GCC >= 14, Apple ‘clang++’ >= 16 and LLVM ‘clang++’ >= 17.- .
CHANGES IN R-devel C-LEVEL FACILITIES
The non-API and hidden entry points ‘Rf_setIVector’, ‘Rf_setRVector’ and ‘Rf_setSVector’ have been removed.The internal code for changing the parent of an environment now signals an error if the new parent is not an environment or if the change would create a cycle in the parent chain.‘SET_TYPEOF’ now signals an error unless the old and new types have compatible memory structure and content. Use of ‘SET_TYPE’ in package C code should be avoided and may be deprecated in the near future. It is better to allocate an object of the desired type in the first place.The set of LAPACK (double and complex) routines declared in the headers ‘R_ext/Lapack.h’ and ‘R_ext/Applic.h’ has been extended, mostly to routines actually in use by packages.Memory allocation messages now use the (non-SI notation) ‘"Mb"’, ‘"Gb"’ , ..., and ‘"Mbytes"’ strings as _arguments_ instead of as part of the (translatable format) string. This is one step for PR#18297; from Henrik Bengtsson.Header ‘R_ext/Constants.h’ (included by ‘R.h’) now always includes header ‘float.h’ or ‘cfloat’ for constants such as ‘DBL_MAX’.Strict R headers are now the default. This removes the legacy definitions of ‘PI’, ‘Calloc’, ‘Realloc’ and ‘Free’: use ‘M_PI’, ‘R_Calloc’, ‘R_Realloc’ or ‘R_Free’ instead.The deprecated and seemingly never-used S-compatibility macros ‘F77_COM’ and ‘F77_COMDECL’ have been removed from header ‘R_ext/RS.h’.The ‘enum’ ‘Rboolean’ defined in header ‘R_ext/Boolean.h’ now has a fixed underlying type of ‘int’ on platforms whose C compiler supports this.
This is a C23 feature (taken from C++11) and also supported in all C standards by some versions of ‘clang’ (from LLVM and Apple) and (with a warning when using ‘-pedantic’) by GCC when in C17 mode.
A fair amount of code has assumed this: it may be changed to a smaller type in future. In particular, as standard compilers do not check the validity of assignment to an ‘enum’, it has been possible to assign ‘NA_INTEGER’ to an ‘Rboolean’ variable, coerce it to ‘int’ and recover the value.
If there were a platform which used an underlying type of a different size this would be an ABI-breaking change (but we are unaware of any such platform).Header ‘R_ext/Boolean.h’ now ensures that a ‘bool’ type is available either as a keyword (C23 and C++) or by including the C99 header ‘stdbool.h’. This is being used internally in R to replace ‘Rboolean’ by ‘bool’.There are a new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’. They require a length-one input and throw an error if that evaluates to ‘NA’.Header ‘R_exts/Error.h’ now ensures that ‘Rf_error’ and similar are given a ‘noreturn’ attribute when used from C++ under all compilers.Header ‘R_exts/Utils.h’ no longer contains a declaration for ‘77_SUB(interv)’. This is intended to be called from Fortran and was wrongly declared: ‘LOGICAL’ in Fortran corresponds to ‘int *’ not ‘Rboolean *’.- .
Thu, 13 Mar 2025
CHANGES IN R-devel C-LEVEL FACILITIES
The functions in header ‘R_ext/Callbacks.h’ (which is *not* part of the API) have been converted to use the ‘bool’ type.- Header ‘R_exts/Utils.h’ no longer contains a declaration for ‘77_SUB(interv)’. This is intended to be called from Fortran and was wrongly declared: ‘LOGICAL’ in Fortran corresponds to ‘int *’ not ‘Rboolean *’.
Wed, 12 Mar 2025
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- ‘configure’ is now able to find an external ‘libintl’ on macOS (the code from an older GNU gettext distribution failed to try linking with the macOS Core Foundation framework).
CHANGES IN R-devel DEPRECATED AND DEFUNCT
- Building with the bundled (and old) version of ‘libintl’ is deprecated and now gives a ‘configure warning’. This should be selected only if neither the OS's ‘libc’ nor an external ‘libintl’ library provide suitable functions.
Instead install ‘libintl’ from a recent version of GNU gettext or use ‘configure’ option ‘--disable-nls’.
CHANGES IN R-devel C-LEVEL FACILITIES
- The functions in header ‘R_ext/Callbacks.h’ (which is *not* part of the API) have been converted to use the ‘bool’ type.
CHANGES IN R-devel BUG FIXES
- ‘vignette("reshape")’ is now also available on Windows.
Tue, 11 Mar 2025
CHANGES IN R-devel NEW FEATURES
- ‘findInterval()’ gets new arguments ‘checkSorted’ and ‘checkNA’ which allow skipping relatively costly checks; related to PR#16567.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- ‘configure’ is now able to find an external ‘libintl’ on macOS (it failed to try linking with the macOS Core Foundation framework).
CHANGES IN R-devel DEPRECATED AND DEFUNCT
- Building with the bundled (and old) version of ‘libintl’ is deprecated and gives a ‘configure warning’. Use ‘libintl’ from a recent version of GNU gettext instead. (If the OS's ‘libc’ includes ‘libintl’ that will be chosen by ‘configure’ - ‘glibc’ does.)
- ‘getMethods(*, table = TRUE)’ is deprecated.
CHANGES IN R-devel C-LEVEL FACILITIES
- There are a new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’. They require a length-one input and throw an error if that evaluates to ‘NA’.
- Header ‘R_exts/Error.h’ now ensures that ‘Rf_error’ and similar are given a ‘noreturn’ attribute when used from C++ under all compilers.
CHANGES IN R-devel BUG FIXES
- Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ arguments of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’/‘FALSE’ values of their logical arguments as ‘FALSE’, but these were almost always mismatches to unnamed arguments and are now reported as ‘NA’.
Mon, 10 Mar 2025
CHANGES IN R-devel NEW FEATURES
- New function ‘grepv()’ identical to ‘grep()’ except for the default ‘value = TRUE’.
- ‘findInterval()’ gets new arguments ‘checkSorted’ and ‘checkNA’ which allow skipling relatively costly checks; related to PR#16567.
- Status reporting in ‘download.file()’ has been extended to report the outcome for individual files in simultaneous downloads.
- The documentation of ‘gamma()’ and ‘is.numeric()’ is more specific, thanks to the contributors of PR#18677.
CHANGES IN R-devel BLAS and LAPACK
- This update was mainly bug fixes but contained a barely documented major change. The set of BLAS routines has been unchanged since 1988, so throughout R's history. This update introduced new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. This means that BLAS implementations are no longer interchangeable.
- To work around this, R can be configured with option ‘--with-2025blas’ which arranges for the 2025 BLAS additions to be compiled into ‘libRlapack’ (the internal LAPACK, not built if an external LAPACK is used).
This option allows the continuation of the practice of swapping the BLAS in use by symlinking ‘lib/libRblas.*’. It has the disadvantage of using the reference BLAS version of the 2025 routines whereas an enhanced BLAS might have an optimized version (OpenBLAS does as from version 0.3.29). - Windows builds currently use the internal LAPACK and by default the internal BLAS: notes on how to swap the latter _via_ ‘Rblas.dll’ are in file ‘src/extra/blas/Makefile.win’.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- Building the HTML and Info versions of the R manuals now requires ‘texi2any’ from Texinfo 6.1 or later.
CHANGES IN R-devel C-LEVEL FACILITIES
- Header ‘R_exts/Error.h’ now ensures that ‘Rf_error’ and similar are given a ‘noreturn’ attribute when uased from C++ under all compilers.
- The set of LAPACK (double and complex) routines declared in the headers ‘R_ext/Lapack.h’ and ‘R_ext/Applic.h’ has been extended, mostly to routines actually in use by packages.
- The ‘enum’ ‘Rboolean’ defined in header ‘R_ext/Boolean.h’ now has a fixed underlying type of ‘int’ on platforms whose C compiler supports this.
This is a C23 feature (taken from C++11) and also supported in all C standards by some versions of ‘clang’ (from LLVM and Apple) and (with a warning when using ‘-pedantic’) by GCC when in C17 mode.
A fair amount of code has assumed this: it may be changed to a smaller type in future. In particular, as standard compilers do not check the validity of assignment to an ‘enum’, it has been possible to assign ‘NA_INTEGER’ to an ‘Rboolean’ variable, coerce it to ‘int’ and recover the value.
If there were a platform which used an underlying type of a different size this would be an ABI-breaking change (but we are unaware of any such platform). - Header ‘R_ext/Boolean.h’ now ensures that a ‘bool’ type is available either as a keyword (C23 and C++) or by including the C99 header ‘stdbool.h’. This is being used internally in R to replace ‘Rboolean’ by ‘bool’.
- There are a new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’. They require a length-one input and thow an error if that evaluates to ‘NA’.
CHANGES IN R-devel UTILITIES
- ‘R CMD check’ gains option ‘--run-demo’ to check demo scripts analogously to tests.
CHANGES IN R-devel BUG FIXES
- ‘axisTicks(usr, ...)’ documentation clarification for ‘log = TRUE’, fixing bug PR#18821 thanks to Duncan Murdoch.
- ‘options(scipen = NULL)’ and other invalid values now signal an error instead of invalidating ops relying on a finite integer value. Values outside the range -9 .. 9999 are now warned about and set to a boundary or to the default ‘0’, e.g., in case of an ‘NA’.
- ‘format()’ etc, using ‘decimal.mark = s’, by default getting ‘s <- getOption("OutDec")’, signals a warning (to become an error in the future) when ‘s’ is not a string with exactly one character.
- The argument of ‘as.environment()’ is now named ‘x’, not ‘object’, as was always documented and shown when printing it; thanks to Gael Millot's PR#18849.
- Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ arguments of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’/‘FALSE’ values of their logical arguments as ‘FALSE’, but these were almost always nismatches to unnamed arguments and are now reported as ‘NA’.
Sat, 08 Mar 2025
CHANGES IN R-devel BLAS and LAPACK
- The bundled BLAS and LAPACK sources have been updated to those shipped as part of January 2025's LAPACK 3.12.1.
Fri, 07 Mar 2025
CHANGES IN R-devel BLAS and LAPACK
- The bundled BLAS and LAPACK sources have been updated to those shipped as part of january 2025's LAPACK 3.12.1.
- It is intended that this will be the last update to BLAS and LAPACK in the R sources. Those building R from source are encouraged to use external BLAS and LAPACK and this will be required in future.
- This update was mainly bug fixes but contained a barely documented major change. The set of BLAS routines has been unchanged since 1988, so throughout R's history. This update introduced two new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. This means that BLAS implementations are no longer interchangeable.
- To work around this, R can be configured with option ‘--with-2025blas’ which arranges for the 2025 BLAS additions to be compiled into ‘libRlapack’ (the internal LAPACK, not built if an external LAPACK is used).
This option allows the continuation of swapping the BLAS in use by symlinking ‘lib/libRblas.*’. It has the disadvantage of using the reference BLAS version of the 2025 routines whereas an enhanced BLAS might have an optimized version (OpenBLAS does as from version 0.3.29). - Windows builds use the internal LAPACK and by default the internal BLAS: notes on how to swap the latter _via_ ‘Rblas.dll’ are in file ‘src/extra/blas/Makefile.win’.
CHANGES IN R-devel NEW FEATURES
The bundled BLAS and LAPACK sources have been updated to those shipped with LAPACK 3.12.1.
This is mainly bug fixes, but includes a handful of new ancillary routines, including two new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. So an external BLAS to be used with the internal LAPACK (unusual) needs to provide those routines, and if an external LAPACK is 3.12.1 or later, the BLAS used must contain the 2025 additions.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
There is a new ‘configure’ option ‘--with-2025blas’ which will compile the 2025 BLAS additions in the internal LAPACK to allow an external BLAS which lacks them to be used.- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15 (as used on Windows), LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-16 and Intel 2024.2 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.
CHANGES IN R-devel BUG FIXES
- Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ arguments of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’/‘FALSE’ values of their logical arguments as ‘FALSE’, but these were almost always mistakes and are now reported as ‘NA’.
Thu, 06 Mar 2025
CHANGES IN R-devel NEW FEATURES
- The bundled BLAS and LAPACK sources have been updated to those shipped with LAPACK 3.12.1.
This is mainly bug fixes, but includes a handful of new ancillary routines, including two new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. So an external BLAS to be used with the internal LAPACK (unusual) needs to provide those routines, and if an external LAPACK is 3.12.1 or later, the BLAS used must contain the 2025 additions.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- There is a new ‘configure’ option ‘--with-2025blas’ which will compile the 2025 BLAS additions in the internal LAPACK to allow an external BLAS which lacks them to be used.
Wed, 05 Mar 2025
CHANGES IN R-devel NEW FEATURES
- The bundled BLAS and LAPACK sources have been updated to those shipped with LAPACK 3.12.1. This is mainly bug fixes, but includes a handful of new ancillary routines, including two new BLAS routines ‘dgemmtr’ and ‘zgemmtr’ which are now used by LAPACK routines. So an external BLAS to be used with the internal LAPACK (unusual) needs to provide those routines.
Tue, 04 Mar 2025
CHANGES IN R-devel NEW FEATURES
- The bundled BLAS and LAPACK sources have been updated to those shipped with LAPACK 3.12.1. This is almost entirely bug fixes, but includes a handful of new ancillary routines.
Mon, 03 Mar 2025
CHANGES IN R-devel NEW FEATURES
- The bundled BLAS and LAPACK sources have been upadted to those shipped with Lapack 3.12.1. This is almost entirely bug fixes, but includes a handful of new ancilliary routines.
Sun, 02 Mar 2025
CHANGES IN R-devel C-LEVEL FACILITIES
- There are a new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’.
Sat, 01 Mar 2025
CHANGES IN R-devel C-LEVEL FACILITIES
- Header ‘R_ext/Boolean.h’ now ensures a ‘bool’ type is available either as a keyword (C23 and C++) or by including the C99 header ‘stdbool.h’. This is used in places in R itself to replace ‘Rboolean’ by ‘bool’.
- There are a new functions ‘asRboolean’ and ‘asBool’, variannts of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’.
Wed, 26 Feb 2025
CHANGES IN R-devel C-LEVEL FACILITIES
- There is a new function ‘asRboolean’, a variannt of ‘asLogical’ more suitable to converting logical arguments to ‘Rboolean’.
Tue, 25 Feb 2025
CHANGES IN R-devel NEW FEATURES
- ‘grDevices::glyphInfo()’ gains a ‘rot’ argument to allow per-glyph rotation. (Thanks to Daniel Sabanes Bove.)
CHANGES IN R-devel BUG FIXES
- Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ argument of ‘max()’, ‘min()’, ‘sum()’, ....
‘grep()’, ‘strsplit()’ and similar took non-‘TRUE’ values of their logical arguments as ‘FALSE’, but these were almost always mistakes and are now reported as ‘NA’.
Mon, 24 Feb 2025
CHANGES IN R-devel SIGNIFICANT USER-VISIBLE CHANGES
.
CHANGES IN R-devel C-LEVEL FACILITIES
- The ‘enum’ ‘Rboolean’ defined in header ‘R_ext/Boolean.h’ now has a fixed underlying type of ‘int’ on platforms whose C compiler supports this.
This is a C23 feature (taken from C++11) and also supported in all C standards by some versions of ‘clang’ (from LLVM and Apple) and (with a warning when using ‘-pedantic’) by GCC when in C17 mode.
A fair amount of code has assumed this: it may be changed to a smaller type in future.
If there were a platform which used an underlying type of a different size this would be an ABI-breaking change (but we are unaware of any such platform).
CHANGES IN R-devel BUG FIXES
- Many arguments which should be length-1 logical are checked more thoroughly. The most commonly seen errors are in ‘unlink(, recursive)’, ‘tempdir()’ and the ‘na.rm’ argument of ‘max()’, ‘min()’, ‘sum()’, ....
Sun, 23 Feb 2025
CHANGES IN R-devel BUG FIXES
- Arguments which should be length-1 logical, e.g. ‘min(na.rm =)’, are checked more thoroughly.
Sat, 22 Feb 2025
CHANGES IN R-devel NEW FEATURES
- New datasets ‘penguins’ and ‘penguins_raw’ thanks to Ella Kaye, Heather Turner, and Kristen Gorman.
CHANGES IN R-devel BUG FIXES
- ‘drop.terms(y ~ w, 1)’ and similar now work, thanks to Benjamin Sommer's report in PR#18861 and collaboration with Heather Turner improving ‘reformulate()’.
- Arguments which should be length-1 logical, e.g. ‘min(na.rm =)’, are checked more throroughly.
Fri, 21 Feb 2025
CHANGES IN R-devel BUG FIXES
- Printing arrays now also omits columns, rows and slices when desirable according to option ‘max.print’, or argument ‘max’, respectively, addressing most of the remaining part of PR#15027, thanks to Sherry Zhang's patch.
Thu, 20 Feb 2025
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15, LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-16 and Intel 2024.2 (and 2022.2 should).
Current binary distributions on macOS use Apple ‘clang’ 14 and so do not use C23.
CHANGES IN R-devel PACKAGE INSTALLATION
- Packages are now installed using C23 where supported by the OS and R build.
Packages using R's compiler settings can ask *not* to use C23 _via_ including ‘USE_C17’ in ‘SystemRequirements’ or can be installed by ‘R CMD INSTALL --use-C17’. (Some packages ignore these settings in their ‘configure’ script or when compiling in sub-directories of ‘src’, as will those using a ‘src/Makefile’.)
Wed, 19 Feb 2025
CHANGES IN R-devel INSTALLATION on WINDOWS
- Both building R and installing packages use the C compiler in C23 mode.
CHANGES IN R-devel BUG FIXES
- ‘quantile()’'s default method gets an option ‘fuzz’ to protect against floating point inaccuracy before rounding, thus fixing PR#15811 and, en passant, PR#17683.
CHANGES IN R 4.4.3 INSTALLATION
- R can be installed using C23 (for example with ‘-std=gnu23’ or ‘-std=gnu2x’) with recent compilers including ‘gcc’ 12-14, Apple ‘clang’ 15-16, LLVM ‘clang’ 17-20 and Intel ‘icx’ 2024.2.
It can be installed with the upcoming (at the time of writing) ‘gcc’ 15, which defaults to C23.
Tue, 18 Feb 2025
CHANGES IN R-devel INSTALLATION
Control of symbol visibility is now supported on macOS (the previous check only worked on ELF platforms).
CHANGES IN R-devel NEW FEATURES
- New dataset ‘gait’ thanks to Heather Turner and Ella Kaye, used in examples.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
A C23 compiler (if available) can be selected for compilation of R and packages _via_ the ‘configure’ flag ‘--with-C23’. The compliance test is of support of new keywords: C23 does have feature-tests macros for many of its new features.
It is intended that this will become the default before release: already R's ‘configure’ may select a compiler which defaults to C23 (such as GCC 15).
When C23 is selected, packages using R's compiler settings can ask not to use C23 _via_ including ‘USE_C17’ in ‘SystemRequirements’ or can be installed by ‘R CMD INSTALL --use-C17’.- A C23 compiler (if available) is now selected by default for compilation of R and packages. R builds can opt out _via_ the ‘configure’ flag ‘--without-C23’, unless the specified or default (usually ‘gcc’) compiler defaults to C23: ‘gcc’ 15 does.
A C23 compiler is known to be selected with ‘gcc’ 13-15, LLVM ‘clang’ 18-20 (and 15 should), Apple ‘clang’ 15-16 and Intel 2024.2 (and 2022.2 should). - Control of symbol visibility is now supported on macOS (the previous check only worked on ELF platforms).
CHANGES IN R-devel PACKAGE INSTALLATION
- Packages are now installed using C23 where supported by the OS and R build.
Packages using R's compiler settings can ask *not* to use C23 _via_ including ‘USE_C17’ in ‘SystemRequirements’ or can be installed by ‘R CMD INSTALL --use-C17’. (Some packages ignore these settings in their ‘configure’ script or when compiling in sub-directiories af ‘src’, as will those using a ‘src/Makefile’.) - There is preliminary support for C++26 with GCC >= 14, Apple ‘clang++’ >= 16 and LLVM ‘clang++’ >= 17.
CHANGES IN R 4.4.3 INSTALLATION
- R can be installed using C23 (for example with ‘-std=gnu23’ or ‘-std=gnu2x’) with recent compilers including ‘gcc’ 12-14, Apple ‘clang’ 16 and LLVM ‘clang’ 17-19. (LLVM ‘clang’ 18 and 19 objected to apparently valid code using attributes accepted by all the other compilers.)
It can be installed with the upcoming (at the time of writing) ‘gcc’ 15, which defaults to C23.
CHANGES IN R 4.4.3 C-LEVEL FACILITIES
- The functions ‘R_strtod’ and ‘R_atof’ now allow hexadecimal constants without an exponent, for compatibility with their C99 versions (PR#18805).
CHANGES IN R 4.4.3 UTILITIES
- ‘R CMD build’ and ‘R CMD check’ now allow reference output for demo scripts (‘demo/.Rout.save’ files) to be shipped with the package, as proposed by Torsten Hothorn in PR#18816.
CHANGES IN R 4.4.3 BUG FIXES
- ‘kappa(A, exact=TRUE)’ for singular ‘A’ returns ‘Inf’ more generally, fixing PR#18817 reported by Mikael Jagan.
- Fixed URLs of the sun spots (‘sunspot.month’ etc) data sets and mention future changes due to recalibration.
- The parser now accepts hexadecimal constants with a decimal point without an exponent (taken as ‘p0’) as documented in ‘?NumericConstants’ (PR#18819).
- ‘rbind()’ now works correctly when inputs include a raw vector and a logical, integer or double vector - previously the inclusion of the latter was garbled.
- ‘smooth.spline()’ checks validity of its arguments ‘df.offset’ and ‘penalty’: it could segfault if they were ‘NULL’.
- ‘isGeneric(, fdef=*, getName=TRUE)’ now also returns the name instead of just ‘TRUE’, fixing PR#18829 reported by Mikael Jagan.
- ‘isGeneric(fdef = print)’ now works, fixing PR#18369 thanks to Mikael Jagan.
- ‘sort(x, method = "qsort")’ made illegal accesses when ‘x’ has length 0.
- ‘dir.create()’ is protected against being passed an empty string as its ‘path’ argument.
- Silent integer overflow could occur in the ‘exact’ computations for ‘fisher.test()’ for unrealistic inputs: this is now an error.
- Some invalid C-level memory accesses are avoided for ‘loglin(, margin = NULL)’.
‘loglin(, param = TRUE)’ no longer gives an error in corner cases such as a one-dimensional input. - ‘dev.capabilities() $ events’ now reports ‘"Idle"’ if the device provides it, fixing PR#18836, thanks to Trevor Davis.
- ‘arima(.., seasonal = )’ correctly errors now, ditto for ‘arima0()’, thanks to Norbert Kuder's report on the R-devel list.
- ‘binomial()$linkinv(eta)’ and ‘.. $mu.eta(eta)’ now also work for ‘"logit"’ link when ‘is.integer(eta)’.
- ‘as.roman(x)’ now should work platform independently, also for, e.g., ‘x = "IIIII"’ (= V) and ‘x = "IIIIII"’ (= VI).
- ‘R CMD Rd2pdf’ works again on an installed package directory containing LaTeX help (from option ‘--latex’), thanks to a report by Peter Ruckdeschel.
Sun, 16 Feb 2025
CHANGES IN R-devel NEW FEATURES
- New dataset ‘gait’ thanks to Heather Turner and Ella Kaye.
Sat, 15 Feb 2025
CHANGES IN R-devel BUG FIXES
- ‘R CMD build ’ excludes more file patterns when it tars the directory, fixing both PR#18432 and PR#18434, for ‘vim’ and ‘GNU Global’ ‘emacs’ users, thanks to Dirk Eddelbuettel's patch.
Thu, 13 Feb 2025
CHANGES IN R-devel NEW FEATURES
- The documentation of ‘gamma’ and ‘is.numeric’ is more specific, thanks to the contributors of PR#18677.
CHANGES IN R-devel BUG FIXES
- Error messages produced by ‘tools::parseLatex()’ are now more readable (PR#18855).
Wed, 12 Feb 2025
CHANGES IN R-devel BUG FIXES
- The ‘tools::parseLatex()’ parser made several parsing errors (PR#18855).
Tue, 11 Feb 2025
CHANGES IN R-devel BUG FIXES
- When ‘R CMD check’ aims at getting the time+date from a world clock, it is more robust against unexpected non-error results, thanks to Michael Chirico's PR#18852.
Sun, 09 Feb 2025
CHANGES IN R-devel NEW FEATURES
- The ‘methods’ package internal function ‘.requirePackage()’ now calls ‘requireNamespace(p)’ instead of ‘require(p)’, hence no longer adding packages to the ‘search()’ path in cases methods or class definitions are needed. Consequently, previous workflows relying on the old behaviour will have to be amended by adding corresponding ‘library(p)’ calls.
- More R-level messages use a common format containing ‘"character string"’ for more consistency and less translation work.
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) can be selected for compilation of R and packages _via_ the ‘configure’ flag ‘--with-C23’. The compliance test is of support of new keywords: C23 does have feature-tests macros for many of its new features.
It is intended that this will become the default before release: already R's ‘configure’ may select a compiler which defaults to C23 (such as GCC 15).
When C23 is selected, packages using R's compiler settings can ask not to use C23 _via_ including ‘USE_C17’ in ‘SystemRequirements’ or can be installed by ‘R CMD INSTALL --use-C17’.
CHANGES IN R-devel BUG FIXES
- ‘cbind()’ could segfault with ‘NULL’ inputs. (Seen when R was built with ‘gcc-14’, LTO and C99 inlining semantics.)
Sat, 08 Feb 2025
CHANGES IN R-devel BUG FIXES
- The argument of ‘as.environment()’ is named ‘x’ now, not ‘object’, as it was always documented and shown when printing it; thanks to Gael Millot's PR#18849.
CHANGES IN R 4.4.2 patched UTILITIES
- ‘R CMD build’ and ‘R CMD check’ now allow reference output for demo scripts (‘demo/.Rout.save’ files) to be shipped with the package, as proposed by Torsten Hothorn in PR#18816.
Fri, 07 Feb 2025
CHANGES IN R-devel NEW FEATURES
- ‘optimize(f, *)’ when ‘f(x)’ is not finite says more about the value in its ‘warning’ message. It no longer replaces ‘-Inf’ by the largest _positive_ finite number.
CHANGES IN R-devel UTILITIES
- ‘R CMD INSTALL’ (and hence ‘check’) now compile C++ code with ‘-DR_NO_REMAP’.
‘Writing R Extensions’ has been revised to describe the remapped entry points, for with the ‘Rf_’ prefix remains optional when used from C code (but is recommended for new C code).
Wed, 05 Feb 2025
CHANGES IN R-devel C-LEVEL FACILITIES
Header ‘R_ext/Rboolean.h’ now defines the type ‘Rboolean’ as an alias of the standard C type ‘bool’ in C23 mode.
Before release C++ ‘bool’ will be used if the header is included from C++.
The macro ‘_R_RBOOLEAN_IS_BOOL_’ is defined where ‘Rboolean’ is implemented _via_ ‘bool’.
[Deferred pending further testing.]
Tue, 04 Feb 2025
CHANGES IN R-devel C-LEVEL FACILITIES
- Header ‘R_ext/Rboolean.h’ now defines the type ‘Rboolean’ as an alias of the standard C type ‘bool’ in C23 mode.
Before release C++ ‘bool’ will be used if the header is included from C++.
The macro ‘_R_RBOOLEAN_IS_BOOL_’ is defined where ‘Rboolean’ is implemented _via_ ‘bool’.
[Deferred pending further testing.]
Mon, 03 Feb 2025
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) can be selected for compilation of R and packages _via_ the ‘configure’ flag ‘--with-C23’.
It is intended that this will become the default before release. Partial C23 support has been available since GCC 9, and that in GCC 12 has been tested.
CHANGES IN R-devel C-LEVEL FACILITIES
- Header ‘R_ext/Rboolean.h’ now defines the type ‘Rboolean’ as an alias of the standard C type ‘bool’ in C23 mode.
Before release C++ ‘bool’ will be used if the header is included from C++.
The macro ‘_R_RBOOLEAN_IS_BOOL_’ is defined where ‘Rboolean’ is implemented _via_ ‘bool’.
CHANGES IN R-devel UTILITIES
- ‘tools::Rd2latex()’ no longer outputs an ‘\inputencoding{utf8}’ line by default; such a declaration is obsolete since LaTeX 2018-04-01.
- ‘tools::texi2pdf(..., texinputs=)’ now _pre_pends the specified to ‘TEXINPUTS’. When building R itself (‘doc/NEWS.pdf’ and base vignettes) or package manuals using ‘R CMD Rd2pdf’, it is ensured that this R's ‘Rd.sty’ takes precedence over any other (incompatible) versions in default “texmf trees”.
Sat, 01 Feb 2025
CHANGES IN R-devel UTILITIES
- ‘tools::texi2pdf(..., texinputs=)’ now _pre_pends the specified to ‘TEXINPUTS’. When building R (‘doc/NEWS.pdf’ and base vignettes), this now ensures that its own ‘Rd.sty’ takes precedence over (incompatible) versions in default “texmf trees”.
Thu, 30 Jan 2025
CHANGES IN R-devel NEW FEATURES
- The ‘format()’ method for ‘"difftime"’ objects gets a new back compatible option ‘with.units’.
- A ‘summary()’ method for ‘"difftime"’ objects which prints nicely, similar to those for ‘"Date"’ and ‘"POSIXct"’.
- ‘unique()’'s default method now also deals with ‘"difftime"’ objects.
Wed, 29 Jan 2025
CHANGES IN R-devel C-LEVEL FACILITIES
- Header ‘R_ext/Rboolean.h’ now defines the type ‘Rboolean’ as an alias of the standard C type ‘bool’.
Currently this is done from C (not C++) only if ‘__bool_true_false_are_defined’ is defined, which it is in C23 mode or if the C99 header ‘stdbool.h’ is included.
Before release ‘stdbool.h’ will be included from C if C23 mode is not supported, and C++ ‘bool’ will be used if called from C++.
The macro ‘_R_RBOOLEAN_IS_BOOL_’ is defined where ‘Rboolean’ is implemented _via_ ‘bool’.
CHANGES IN R-devel BUG FIXES
- ‘R CMD Rd2pdf’ can now render the package manual from a ‘--latex’ installation also when the help contains figures.
Tue, 28 Jan 2025
CHANGES IN R-devel PACKAGE INSTALLATION
- There is preliminary support for C++26 in GCC >= 14, Apple clang >= 16 and LLVM clang >= 17.
CHANGES IN R-devel C-LEVEL API
- ‘R_GetCurrentSrcref(skip)’ now skips calls rather than ‘srcref’s, consistent with counting items in the ‘traceback()’ display. If ‘skip == NA_INTEGER’, it searches for the first ‘srcref’, starting at the current evaluation state and proceeding through the call stack; otherwise, it returns the ‘srcref’ of the requested entry from the call stack.
CHANGES IN R-devel UTILITIES
- ‘R CMD build’ now supports ‘--compression=zstd’ on platforms with sufficient support for ‘zstd’.
CHANGES IN R-devel BUG FIXES
- ‘options(show.error.locations = TRUE)’ once again shows the most recent known location when an error is reported. Setting its value to ‘"bottom"’ is no longer supported. Numerical values are converted to logical.
- C API function ‘R_GetCurrentSrcref(skip)’ now returns ‘srcref’ entries correctly. (Note that there is also a change to the interpretation of ‘skip’; see the C-LEVEL API entry above.)
- ‘tools::Rd2latex()’ now removes leading and trailing spaces from \alias entries as documented, fixing indexing and linking hiccups in some PDF manuals.
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘R CMD Rd2pdf’ works again on an installed package directory containing LaTeX help (from option ‘--latex’), thanks to a report by Peter Ruckdeschel.
Mon, 27 Jan 2025
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- A C23 compiler (if available) can be selected for compilation of R and packages _via_ the ‘configure’ flag ‘--with-C23’.
It is intended that this will become the default before release.
Sat, 25 Jan 2025
CHANGES IN R-devel NEW FEATURES
- ‘print(summary())’ gets new optional argument ‘zdigits’ to allow more flexible and consistent (double) rounding. The current default ‘zdigits = 4L’ is somewhat experimental. Specifying both ‘digits = *, zdigits = *’ allows behaviour independent of the global ‘digits’ option.
- The ‘quartz()’ device now supports alpha masks. Thanks to George Stagg, Gwynn Gebeyhu, Heather Turner, and Tomek Gieorgijewski.
CHANGES IN R-devel BUG FIXES
- ‘summary()’ (which prints directly) finally gets the same ‘digits’ default as the formatting printing of default ‘summary()’ method results, and it is documented explicitly.
CHANGES IN R 4.4.2 patched INSTALLATION
- R can be installed using C23 (for example with ‘-std=gnu23’ or ‘-std=gnu2x’) with recent compilers including ‘gcc’ 12-14, Apple ‘clang’ 16 and LLVM ‘clang’ 17-19. (LLVM ‘clang’ 18 and 19 objected to apparently valid code using attributes accepted by all the other compilers.)
It can be installed with the upcoming (at the time of writing) ‘gcc’ 15, which defaults to C23.
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘binomial()$linkinv(eta)’ and ‘.. $mu.eta(eta)’ now also work for ‘"logit"’ link when ‘is.integer(eta)’.
- ‘as.roman(x)’ now should work platform independently, also for, e.g., ‘x = "IIIII"’ (= V) and ‘x = "IIIIII"’ (= VI).
Tue, 21 Jan 2025
CHANGES IN R-devel NEW FEATURES
- There is some support for ‘zstd’ compression of tarballs in ‘tar()’ and ‘untar()’. (This depends on OS support of ‘libzstd’ or by ‘tar’.)
CHANGES IN R-devel UTILITIES
- ‘R CMD check’ gains option ‘--run-demo’ to check demo scripts like tests.
- ‘R CMD build’ now supports ‘--compression = zstd’ on platforms with sufficient support for ‘zstd’.
- ‘R CMD check’ with a true value for environment variable ‘_R_CHECK_BASHISMS_’ checks more thoroughly, including for ‘bash’ scripts and bashisms in components of ‘autoconf’-generated ‘configure’ scripts.
Mon, 20 Jan 2025
CHANGES IN R-devel NEW FEATURES
- ‘duplicated()’, ‘unique()’, and ‘anyDuplicated()’ now also work for class ‘expression’ vectors.
- New function ‘use()’ to use packages in R scripts with full control over what gets added to the search path. (Actually already available since R 4.4.0.)
- ‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
It is now documented (and tested) that the ‘by’ string may be _abbreviated_ in both ‘seq’ methods.
Both methods return or keep internal type ‘"integer"’ more consistently now. Also, ‘as.POSIXct({})’ is internally integer.
Sat, 18 Jan 2025
CHANGES IN R-devel NEW FEATURES
- ‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
It is now documented (and tested) that the ‘by’ string may be _abbreviated_ in both ‘seq’ methods.
Both methods return or keep internal type ‘"integer"’ more consistently now. Also, ‘as.POSIXct({})’ is internally integer.
‘duplicated()’, ‘unique()’, and ‘anyDuplicated()’ now also work for class ‘expression’ vectors.
CHANGES IN R 4.4.2 patched INSTALLATION
- R can be installed using C23 (for example with ‘-std=gnu23’ or ‘-std=gnu2x’) with recent compilers including ‘gcc’ 14, Apple ‘clang’ 16 and LLVM ‘clang’ 17-19. (LLVM ‘clang’ 18 and 19 objected to apparently valid code using attributes accepted by all the other compilers.)
It can be installed with the upcoming (at the time of writing) ‘gcc’ 15, which defaults to C23.
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘binomial()$linkinv(eta)’ and ‘.. $mu.eta(eta)’ now also work for ‘"logit"’ link when ‘is.integer(eta)’.
‘as.roman(x)’ now should work platform independently, also for, e.g., ‘x = "IIIII"’ (= V) and ‘x = "IIIIII"’ (= VI).
Sat, 11 Jan 2025
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘binomial()$linkinv(eta)’ and ‘.. $mu.eta(eta)’ now also work for ‘"logit"’ link when ‘is.integer(eta)’.
Fri, 10 Jan 2025
CHANGES IN R-devel PACKAGE INSTALLATION
- Source installs now report the package version in the log.
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘binomial()$linkinv(eta)’ now also works for ‘"logit"’ link when ‘is.integer(eta)’.
Thu, 09 Jan 2025
CHANGES IN R-devel NEW FEATURES
- The Rd \link macro now allows markup in the link text when the topic is given by the optional argument, e.g., ‘\link[=gamma]{\eqn{\Gamma(x)}}’.
Wed, 08 Jan 2025
CHANGES IN R-devel NEW FEATURES
- ‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
It is now documented (and tested) that the ‘by’ string may be _abbreviated_ in both ‘seq’ methods.
Both methods return or keep internal type ‘"integer"’ more consistently now. Also, ‘as.POSIXct({})’ is internally integer.
CHANGES IN R-devel C-LEVEL FACILITIES
- Strict R headers are now the default. This removes the legacy definitions of ‘PI’, ‘Calloc’, ‘Realloc’ and ‘Free’: use ‘M_PI’, ‘R_Calloc’, ‘R_Realloc’ or ‘R_Free’ instead.
Tue, 07 Jan 2025
CHANGES IN R-devel NEW FEATURES
- ‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
Both methods return or keep internal type ‘"integer"’ more consistently now. Also, ‘as.POSIXct({})’ is internally integer.
CHANGES IN R-devel C-LEVEL FACILITIES
- Strict R headers are now the default. This removes the legacy definitions of ‘PI’, ‘Calloc’, ‘Realloc’ and ‘Free’: use ‘M_PI’, ‘R_Calloc’, ‘R_Realloc’ or ‘R_Free’ instead.
_Pro tem_ ‘STRICT_R_HEADERS’ is defined in header ‘R_ext/RS.h’ if not already defined. This is not used in R itself and will be removed before release.
Sun, 05 Jan 2025
CHANGES IN R-devel INSTALLATION on a UNIX-ALIKE
- There is now support for installing the debug symbols for recommended packages on macOS: see ‘REC_INSTALL_OPT’ in file ‘config.site’.
CHANGES IN R-devel C-LEVEL FACILITIES
- Strict R headers are now the default. This removes the legacy definitions of ‘PI’, ‘Calloc’, ‘Realloc’ and ‘Free’: use ‘M_PI’, ‘R_Calloc’, ‘R_Realloc’ or ‘R_Free’ instead.
CHANGES IN R-devel UTILITIES
- ‘R CMD check’ with a true value for environment variable ‘_R_CHECK_BASHISMS_’ checks more thoroughly, including for ‘bash’ scripts and components of ‘autoconf’-generated ‘configure’ scripts.
Sat, 04 Jan 2025
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘arima(.., seasonal = )’ correctly errors now, ditto for ‘arima0()’, thanks to Norbert Kuder's report on the R-devel list.
Thu, 02 Jan 2025
CHANGES IN R-devel NEW FEATURES
- ‘seq.int(from, to, by, ....)’ when |by| = 1 now behaves as if ‘by’ was omitted, and hence returns ‘from:to’, possibly integer.
- ‘seq.Date(from, to, by, ....)’ and ‘seq.POSIXt(..)’ now also work when ‘from’ is missing and sufficient further arguments are provided, thanks to Michael Chirico's report, patch proposal in PR#17672 and ‘R Dev Day’ contributions.
The ‘Date’ method also works for ‘seq(from, to)’, when ‘by’ is missing and now defaults to ‘"1 days"’.
Wed, 01 Jan 2025
CHANGES IN R-devel C-LEVEL API
- Enable defining ‘R_NO_REMAP_RMATH’ and calling ‘Rf_*()’ as has been documented in ‘Writing R Extensions’ for a while, fixing PR#18800 thanks to Mikael Jagan and Suharto Anggono.
CHANGES IN R-devel UTILITIES
- ‘R CMD INSTALL’ (and hence ‘check’) now by default compile C++ code with ‘-DR_NO_REMAP’. For the time being this can be reverted by setting environment variable ‘_R_CXX_USE_NO_REMAP_’ to a false value (but that will be removed in the near future).
‘Writing R Extensions’ has been revised to describe the remapped entry points, for with the ‘Rf_’ prefix remains optional when used from C code (but is recommended for new C code).
CHANGES IN R 4.4.2 patched BUG FIXES
- Some invalid C-level memory accesses are avoided for ‘loglin(, margin = NULL)’.
‘loglin(, param = TRUE)’ no longer gives an error in corner cases such as a one-dimensional input.
Tue, 31 Dec 2024
CHANGES IN R-devel NEW FEATURES
- If ‘La_library()’ is empty, ‘sessionInfo()’ still reports ‘La_version()’ when available.
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘dev.capabilities() $ events’ now reports ‘"Idle"’ if the device provides it, fixing PR#18836, thanks to Trevor Davis.
- Some invalid C-level memory accesses are avoided for ‘loglin(, margin = NULL)’.
‘loglin(, param = TRUE)’ no longer gives an eror in corner cases such as a one-dimensional input.
Mon, 30 Dec 2024
CHANGES IN R 4.4.2 patched BUG FIXES
- Some inalid C-level memory accesses are avoided for ‘loglin(, margin = NULL)’.
‘loglin(, param = TRUE)’ no longer gives an eror in corner cases such as a one-dimensional input.
Sun, 29 Dec 2024
CHANGES IN R-devel BUG FIXES
- When ‘s <- getOption("OutDec")’ is not a string of one character, a warning is signalled now whenever it is used in internal C code, notably when calling the default methods of ‘format()’.
Fri, 27 Dec 2024
CHANGES IN R 4.4.2 patched BUG FIXES
- Silent integer overflow could occur in the ‘exact’ computations for ‘fisher.test()’ for unrealistic inputs: this is now an error.
Wed, 25 Dec 2024
CHANGES IN R 4.4.2 patched BUG FIXES
- ‘dir.create()’ is protected against being passed an empty string as its ‘path’ argument.
Fri, 20 Dec 2024
CHANGES IN R-devel C-LEVEL API
- Enable defining ‘R_NO_REMAP_RMATH’ and calling ‘Rf_*()’ as has been documented in WRE for a while, fixing PR#18800 thanks to Mikael Jagan and Suharto Anggono.
CHANGES IN R-devel BUG FIXES
- ‘pwilcox()’ and ‘qwilcox()’ now check for user interrupt less frequently.
Thu, 19 Dec 2024
CHANGES IN R-devel BUG FIXES
- ‘pwilcox()’ and ‘qwilcox()’ now check for user interrupt less frequencly.
Fri, 13 Dec 2024
CHANGES IN R-devel UTILITIES
- ‘R CMD INSTALL’ (and hence ‘check’) now by default compile C++ code with ‘-DR_NO_REMAP’. For the time being this can be reverted by setting environment variable ‘_R_CXX_USE_NO_REMAP_’ to a false value (but that will be removed in the near future).
`Writing R Extensions' has been revised to describe the remapped entry points, for with the ‘Rf_’ prefix remains optional when used from C code (but is recommended for new C code).