This blog is updated daily.
A general description is here.
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.
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’.
Building the HTML and Info versions of the R manuals now requires ‘texi2any’ from Texinfo 6.1 or later.
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’.
‘R CMD check’ gains option ‘--run-demo’ to check demo scripts analogously to tests.
‘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’.
The bundled BLAS and LAPACK sources have been updated to those shipped as part of January 2025's LAPACK 3.12.1.
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’.
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.
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.
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’.
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.
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.
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.
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.
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.
There are a new functions ‘asRboolean’ and ‘asBool’, variants of ‘asLogical’ more suited to converting logical arguments to ‘Rboolean’ or to ‘bool’.
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’.
There is a new function ‘asRboolean’, a variannt of ‘asLogical’ more suitable to converting logical arguments to ‘Rboolean’.
‘grDevices::glyphInfo()’ gains a ‘rot’ argument to allow per-glyph rotation. (Thanks to Daniel Sabanes Bove.)
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’.
.
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).
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()’, ....
Arguments which should be length-1 logical, e.g. ‘min(na.rm =)’, are checked more thoroughly.
New datasets ‘penguins’ and ‘penguins_raw’ thanks to Ella Kaye, Heather Turner, and Kristen Gorman.
‘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.
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.
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.
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’.)
Both building R and installing packages use the C compiler in C23 mode.
‘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.
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.
Control of symbol visibility is now supported on macOS (the previous
check only worked on ELF platforms).
New dataset ‘gait’ thanks to Heather Turner and Ella Kaye, used in examples.
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).
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.
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.
The functions ‘R_strtod’ and ‘R_atof’ now allow hexadecimal constants without an exponent, for compatibility with their C99 versions (PR#18805).
‘R CMD build’ and ‘R CMD check’ now allow reference output for demo scripts (‘demo/<demo>.Rout.save’ files) to be shipped with the package, as proposed by Torsten Hothorn in PR#18816.
‘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(<primitive>, 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 = <wrong-vector>)’ correctly errors now, ditto for ‘arima0()’, thanks to Norbert Kuder's report on the R-devel list.
‘binomial(<link>)$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.
New dataset ‘gait’ thanks to Heather Turner and Ella Kaye.
‘R CMD build <pkg>’ excludes more file patterns when it tars the <pkg> directory, fixing both PR#18432 and PR#18434, for ‘vim’ and ‘GNU Global’ ‘emacs’ users, thanks to Dirk Eddelbuettel's patch.
The documentation of ‘gamma’ and ‘is.numeric’ is more specific, thanks to the contributors of PR#18677.
Error messages produced by ‘tools::parseLatex()’ are now more readable (PR#18855).
The ‘tools::parseLatex()’ parser made several parsing errors (PR#18855).
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 ‘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.
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’.
‘cbind()’ could segfault with ‘NULL’ inputs. (Seen when R was built with ‘gcc-14’, LTO and C99 inlining semantics.)
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.
‘R CMD build’ and ‘R CMD check’ now allow reference output for demo scripts (‘demo/<demo>.Rout.save’ files) to be shipped with the package, as proposed by Torsten Hothorn in PR#18816.
‘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.
‘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).
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.]
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.]
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.
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’.
‘tools::Rd2latex()’ no longer outputs an ‘\inputencoding{utf8}’ line by default; such a declaration is obsolete since LaTeX 2018-04-01.
‘tools::texi2pdf(..., texinputs=<paths>)’ now _pre_pends the specified <paths> 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::texi2pdf(..., texinputs=<paths>)’ now _pre_pends the specified <paths> 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”.
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.
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’.
‘R CMD Rd2pdf’ can now render the package manual from a ‘--latex’ installation also when the help contains figures.
There is preliminary support for C++26 in GCC >= 14, Apple clang >= 16 and LLVM clang >= 17.
‘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.
‘R CMD build’ now supports ‘--compression=zstd’ on platforms with sufficient support for ‘zstd’.
‘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’ works again on an installed package directory containing LaTeX help (from option ‘--latex’), thanks to a report by Peter Ruckdeschel.
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.
‘print(summary(<numbers>))’ 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.
‘summary(<stl>)’ (which prints directly) finally gets the same ‘digits’ default as the formatting printing of default ‘summary()’ method results, and it is documented explicitly.
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.
‘binomial(<link>)$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).
There is some support for ‘zstd’ compression of tarballs in ‘tar()’ and ‘untar()’. (This depends on OS support of ‘libzstd’ or by ‘tar’.)
‘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.
‘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.
‘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.
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.
‘binomial(<link>)$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).
‘binomial(<link>)$linkinv(eta)’ and ‘.. $mu.eta(eta)’ now also work for ‘"logit"’ link when ‘is.integer(eta)’.
Source installs now report the package version in the log.
‘binomial(<link>)$linkinv(eta)’ now also works for ‘"logit"’ link when ‘is.integer(eta)’.
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)}}’.
‘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.
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.
‘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.
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.
There is now support for installing the debug symbols for recommended packages on macOS: see ‘REC_INSTALL_OPT’ in file ‘config.site’.
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.
‘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.
‘arima(.., seasonal = <wrong-vector>)’ correctly errors now, ditto for ‘arima0()’, thanks to Norbert Kuder's report on the R-devel list.
‘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"’.
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.
‘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).
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.
If ‘La_library()’ is empty, ‘sessionInfo()’ still reports ‘La_version()’ when available.
‘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.
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.
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()’.
Silent integer overflow could occur in the ‘exact’ computations for ‘fisher.test()’ for unrealistic inputs: this is now an error.
‘dir.create()’ is protected against being passed an empty string as its ‘path’ argument.
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.
‘pwilcox()’ and ‘qwilcox()’ now check for user interrupt less frequently.
‘pwilcox()’ and ‘qwilcox()’ now check for user interrupt less frequencly.
‘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).
The `quartz()` device now supports alpha masks. Thanks to George Stagg, Gwynn Gebeyhu, Heather Turner, and Tomek Gieorgijewski.
‘sort(x, method = "qsort")’ made illegal accesses when ‘x’ has length 0.
‘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.
‘isGeneric(fdef = print)’ now works, fixing PR#18369 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 "
‘isGeneric(fdef = print)’ now works, fixing PR#18369 thanks to Mikael Jagan.
‘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 download.
‘smooth.spline()’ checks validity of its arguments ‘df.offset’ and ‘penalty’: it could segfault if they were ‘NULL’.
‘isGeneric(<primitive>, fdef=*, getName=TRUE)’ now also returns the name instead of just ‘TRUE’, fixing PR#18829 reported by Mikael Jagan.
The `quartz()` device now supports alpha masks. Thanks to George Stagg, Heather Turner, and Tomek Gieorgijewski.
‘cbind()’ could segfault with ‘NULL’ inputs. (Seen when R was built with ‘gcc14’, 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.
‘options(scipen = NULL)’ and other invalid values now signal an error instead of invalidating ops relying on a finite integer value. Newly values outside the range -9 .. 9999 are warned about and set to a respective boundary or to the default ‘0’, e.g., in case of an ‘NA’.
‘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.
‘isGeneric(fdef = print)’ now works, fixing PR#18369 thanks to Mikael Jagan.
‘options(scipen = NULL)’ and other invalid values now signal an error instead of invalidating ops relying on a finite integer value. Newly, values outside the range -9 .. 9999 are warned about and set to a respective boundary or to the default ‘0’, e.g., in case of an ‘NA’.
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.)
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’.
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.
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.
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’.
Some 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.
‘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.
Some ‘NOTE’s for 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 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’.
‘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 in 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’.
The deprecated and seemingly never-used S-compatibility macros ‘F77_COM’ and ‘F77_COMDECL’ have been removed from header ‘R_ext/RS.h’.
‘debug()’ and ‘debugonce(fun)’ now also accept a string ‘fun’ when it names an S4 generic, fixing PR#18822 thanks to Mikael Jagan.
‘debugonce(<S4-simple-body>, 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.
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.
‘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).
‘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>.
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.
‘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 Michael Jagan.
‘debugonce(<S4-simple-body>, signature=*)’ now works correctly when “called twice”, fixing PR#18824 thanks to Michael Jagan.
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.
Header ‘R_ext/Constants.h’ (included by ‘R.h’) now always includes header ‘float.h’ or ‘cfloat’ for constants such as ‘DBL_MAX’
Defining ‘STRICT_R_HEADERS’ is 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.
Installation will define ‘STRICT_R_HEADERS’ if environment variable
‘_R_USE_STRICT_R_HEADERS_’ is set to a true value: this is done by ‘R
CMD check --as-cran’.
‘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).
The functions ‘R_strtod’ and ‘R_atof’ now allow hexadecimal constants
without an exponent, for compatibility with their C99 versions
(PR#18805).
The parser now accepts hexadecimal constants with a decimal point
without an exponent (taken as ‘p0’) as documented in
‘?NumericConstants’ (PR#18819).
The functions ‘R_strtod’ and ‘R_atof’ now allow hexadecimal constants without an exponent, for compatibility with their C99 versions (PR#18805).
The parser now accepts hexadecimal constants with a decimal point without an exponent (taken as ‘p0’) as documented in ‘?NumericConstants’ (PR#18819).
The functions ‘R_strtod’ and ‘R_atof’ now allow hexadecimal constants without an exponent, for compatibility with their C99 versions (PR#18805).
The parser now accepts hexadecimal constants with a decimal point without an exponent (taken as ‘p0’) as documented in ‘?NumericConstants’ (PR#18819).
Fixed URLs of the sun spots (‘sunspot.month’ etc) data sets and mention future changes due to recalibration.
‘kappa(A, exact=TRUE)’ for singular ‘A’ returns ‘Inf’ more generally, fixing PR#18817 reported by Mikael Jagan.
‘kappa(A, exact=TRUE)’ returns ‘Inf’ more generally, fixing PR#18817 reported by Mikael Jagan.
The functions ‘R_strtod’ and ‘R_atof’ now allow hexadecimal constants without an exponent, for compatibility with their C99 versions, (PR#18805)
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.
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.
Strings marked as ‘"bytes"’ now give a warning rather than a NOTE. These are better supplied as raw vectors.
‘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.
‘getMethods(*, table=TRUE)’ is also deprecated.
‘available.packages()’ and ‘install.packages()’ get an optional switch ‘cache_user_dir’, somewhat experimentally.
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.
Strings markaed as ‘"bytes"’ now give a warning rather than a NOTE. These are better supplied as raw vectors.
‘tools::checkDocFiles()’ notes more cases of usage documentation without corresponding \alias.
‘update_pkg_po()’ now copies ‘.mo’ files to the ‘translation’ package even if a ‘DESCRIPTION’ file exists, thanks to Michael Chirico fixing PR#18694.
Since all supported R versions now use UTF-8, ‘R CMD check’ no longer by default reports on marked strings in character data. Set environment variable ‘_R_CHECK_PACKAGE_DATASETS_SUPPRESS_NOTES_’ to a false value for the previous behaviour.
‘tools::checkDocFiles()’ now also notes _nullary_ functions shown in the usage section without corresponding \alias.
More R level messages use a common format containing ‘"character string"’ for more consistency and less translation work.
‘methods’' internal ‘.requirePackage()’ now re-enables primitive method
dispatch when needed; thanks to Ivan Krylov for demystifying CRAN
package check failures on the R-devel mailing lists.
‘methods’' internal ‘.requirePackage()’ now re-enables primitive method dispatch when needed; thanks to Ivan Krylov for demystifying CRAN package check failures on the R-devel mailing list.
The S-compatibility macros ‘F77_COM’ and ‘F77_COMDECL’ defined in header ‘R_ext/RS.h’ are deprecated and will be removed shortly. We could find no record of their use.
Mathlib function ‘lgammacor(x)’ no longer warns about underflow to zero for large ‘x’.
Text widths and heights were incorrectly reported by the Quartz device if the drawing context didn't exist yet (typically when drawing off-screen to a window that is yet to appear, see PR#18591).
The Quartz device could segfault in cases where paths with spaces are used in the new glyph drawing API. Thanks to Tomek Gieorgijewski (PR#18758).
On macOS in R CRAN builds, it is again possible to read little-endian UTF-16 text with a BOM from a connection using ‘encoding="UTF-16"’. Users building R from source should avoid using the system ‘libiconv’ in macOS 14.1 and later.
‘methods’ package internal ‘.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.
‘rowSums(A, dims = dd)’, ‘colMeans(..)’, etc, give a more helpful error message when ‘dd’ is not of length one, thanks to Michael Chirico's PR#18811.
‘methods’' internal ‘.requirePackage()’ now re-enables primitive method dispatch when needed; thanks to Ivan Krylov for demystifying CRAN package check failures on the R-devel mailing lists.
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’.
On macOS in R CRAN builds, it is again possible to read little-endian UTF-16 text with a BOM from a connection using ‘encoding="UTF-16"’. Users building R from source should avoid using the system ‘libiconv’ in macOS 14.1 and later.
On macOS in R CRAN builds, it is again possible to read little-endian UTF-16 text with a BOM from a connection using ‘encoding="UTF-16"’. Users building R from source should avoid using the system libiconv in macOS 14.1 and later.
‘methods’' internal ‘.requirePackage()’ now re-enables primitive method dispatch when needed; thanks to Ivan Krylov for demystifying CRAN package check failures on the R*devel mailing lists.
‘R CMD check’ now reports more warnings on long-deprecated/obsolete Fortran features from ‘gfortran -Wall’. For hints on how to modernize these, see <https://fortranwiki.org/fortran/show/Modernizing+Old+Fortran>.
Added function ‘sha256sum()’ in package ‘tools’ analogous to ‘md5sum()’ implementing the SHA-256 hashing algorithm.
Added ‘sha256sum()’ analogous to ‘md5sum()’, but implementing the SHA-256 hashing algorithm.
‘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.
‘as(*, "raw")’ now works as documented, thanks to Mikael Jagan's PR#18795.
Informational messages of e.g., ‘print(1:1e4, max=1000)’, now correctly mention ‘max’ in addition to ‘getOption("max.print")’.
Failures in building the manuals under ‘doc’ now abort the installation, removing any file which caused the failure.
The deprecated S-compatibility macros ‘F77_COM’ and ‘F77_COMDECL’ have been removed from header ‘R_ext/RS.h’.
‘xyTable()’ now handles and reports ‘NA’s fixing PR#18654. Thanks to Heather Turner and Zhian Kamvar for report and patch.
The S-compatibility macros ‘F77_COM’ and ‘F77_COMDECL’ defined in header ‘R_ext/RS.h’ are deprecated and will be removed shortly. We could find no record of their use.
Failures in building the manuals under ‘doc’ now abort the installation, removing sny file which caused the failure.
The set operations now avoid the ‘as.vector()’ transformation for same-kind apparently vector-like operands.
‘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())’ .
‘get(nam, env)’ now signals a _classed_ error (‘"getMissingError"’)
Printing ‘ls.str()’ now shows ‘"<missing>"’ even when R's language setting is not English.
‘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.
‘pnorm(x)’ underflows more gracefully.
‘Sys.setLanguage()’ now works in an ‘LC_ALL=C R’ session on some platforms.
Printing ‘ls.str()’ now tries harder to show ‘"<missing>"’ even when R's language setting is not English.
‘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’.
Package ‘tools’ now exports functions ‘base_aliases_db()’ and ‘base_rdxrefs_db()’.
Package ‘tools’ now exports functions ‘CRAN_current_db()’, ‘CRAN_aliases_db()’, ‘CRAN_rdxrefs_db()’, ‘CRAN_archive_db()’, and ‘CRAN_authors_db()’.
‘findInterval()’ gets new options ‘checkSorted’ and ‘checkNA’ which allow to skip relatively costly checks; related to PR#16567.
The legecy definition of ‘PI’ in ‘R_ext/Constants.h’ (included by
‘R.h’) will be removeed shortly: use ‘M_PI’ instead.
It is intended that ‘STRICT_R_HEADERS’ will become the default prior to release. This will remove the legacy definitions of ‘PI’, ‘Calloc’, ‘Realloc’ and ‘Free’: use ‘M_PI’, ‘R_Calloc’, ‘R_Realloc’ or ‘R_Free’ instead.
The set of LAPACK (double and complex) routines in API headers ‘R_ext/Lapack.h’ and ‘R_ext/Applic.h’ has been extended, mostly to routines actually in use from packages.
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.
Installation will define ‘STRICT_R_HEADERS’ if environment variable ‘_R_USE_STRICT_R_HEADERS_’ is set to a true value: this is done by ‘R CMD check --as-cran’.