This blog is updated daily.
A general description is here.
‘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’.
Header ‘R_ext/Constants.h’ (included by ‘R.h’) now includes header ‘float.h’ or ‘cfloat’ for constants such as ‘DBL_MAX’ even if ‘STRICT_R_HEADERS’ is defined.
The legecy definition of ‘PI’ in ‘R_ext/Constants.h’ (included by ‘R.h’) will be removeed shortly: use ‘M_PI’ 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.
Package ‘tools’ now exports functions ‘R()’ and ‘parse_URI_reference()’.
Package ‘tools’ now exports functions ‘CRAN_current_db()’, ‘CRAN_aliases_db()’, ‘CRAN_rdxrefs_db()’, and ‘CRAN_archive_db()’.
‘grDevices::glyphInfo()’ gains ‘rot’ argument to allow per-glyph rotation. (Thanks to Daniel Sabanes Bove.)
Control of symbol visibility is now supported on macOS (the previous check only worked on ELF platforms).
Control of symbol visibility is now suported on macOS (the previous check only worked on ELF platforms).
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).
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).
Mathlib function ‘lgammacor(x)’ no longer warns about underflow to zero for large ‘x’.
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).
Package ‘citation()’ results auto-generated from the package metadata now also provide package DOIs for CRAN and Bioconductor packages.
Package ‘citation()’ results auto-generated from the package metadata
now also provide package DOIs for CRAN and Bioconductor packages.
Memory allocation messages now use the (non-standard 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.
‘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.
‘methods(<pkg>:::<genfun>)’ now does report methods when neither the generic nor the methods have been exported.
‘stem()’ correctly formats 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.
‘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.)
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).
New ‘qr.influence()’ function, a “bare bones” interface to the ‘lm.influence()’ leave-one-out diagnostics computations; wished for in PR#18739.
New function ‘grepv()’ identical to ‘grep()’ except with the default ‘value = TRUE’.
Building the HTML (and Info) versions of the R manuals now requires ‘texi2any’ from Texinfo 6.1 or later.
‘R CMD check --as-cran’ notes bad parts in the ‘DESCRIPTION’ file's URL fields.
‘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’.
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’.
New function ‘grepv’ identical to ‘grep’ except with the default ‘value = TRUE’.
Additional non-API entry points added to those reported by ‘R CMD check’: ‘IS_LONG_VEC’, ‘PRCODE’, ‘PRENV’, ‘PRVALUE’, ‘R_nchar’, ‘Rf_NonNullStringMatch’, ‘Rf_StringBlank’, ‘SET_TYPEOF’, ‘TRUELENGTH’, ‘XLENGTH_EX’, and ‘XTRUELENGTH’.
Package ‘citation()’ results auto-generated from the package metadata now also provide package DOIs for CRAN and Bioconductor packages.
‘as.data.frame.list()’ gets 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 option ‘cut.names’.
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.
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 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’, ‘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 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’, ‘REAL0’, ‘SET_PRSEEN’, and ‘SYMVALUE’. Any declarations for these in public header files will be removed in the near future, and they will be hidden where possible.
New ‘head()’ and ‘tail()’ methods for class ‘"ts"’ time series, proposed by Spencer Graves on R-devel.
New ‘qr.influence()’, a “bare bones” interface to the ‘lm.influence()’ leave-one-out diagnostics computations; wished for in PR#18739.
Some non-API entry points have been added to those reported by ‘R CMD check’: ‘SYMVALUE’, ‘INTERNAL’, ‘DDVAL’, ‘ENSURE_NAMEDMAX’, ‘NAMED’, ‘COMPLEX0’, ‘REAL0’, ‘LEVELS’, ‘FRAME’, ‘HASHTAB’, ‘IS_ASCII’, ‘IS_UTF8’. Any declarations for these in public header files will be removed in the near future, and they will be hidden where possible.
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’.
New functions ‘check_package_urls()’ and ‘check_package_dois()’ in package ‘tools’ for checking URLs and DOIs in package sources.
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 extrancting closure components. The existing functions ‘R_ClosureExpr’ and ‘R_BytecodeExpr’ have also been added to the API.
‘graphics’' ‘grid()’ gains optional argument ‘nintLog’.
Auto-generated ‘citation()’ entries no longer include (additional) URLs in the ‘note’ field (PR#18547).
‘R CMD check --as-cran’ notes bad parts in ‘DESCRIPTION’ file URL fields.
The new function ‘Rf_allocLang’ is now available. This provides an
alternative to the idiom of calling ‘Rf_allocList’ followed by
‘SET_TYPEOF’.
The new function ‘Rf_allocLang’ is now available. This provides an alternative to the idiom of calling ‘Rf_allocList’ followed by ‘SET_TYPEOF’.
Functions ‘R_atof’ and ‘R_strtod’ declared in header ‘R_ext/Utils.h’ are now documented in ‘Writing R Extensions’ and so formally part of the API.
The non-API entry points ‘Rf_setSVector’, ‘Rf_StringFalse’, ‘Rf_StringTrue’ and ‘Rf_isBlankString’ have been added to those reported by ‘R CMD check’.
‘R CMD check’ now reports as warnings what ‘gfortran’ calls ‘Fortran 2018 deleted features’, all of which have long been marked as ‘obsolescent’ and some of which were deleted in Fortran 2008 or earlier. Fortran compilers are no longer required to support these.
‘as.numeric()’, ‘scan()’, ‘type.convert()’ and other places which use the internal C function ‘R_strtod’ now require a _non-empty_ digit sequence in a decimal or binary exponent. This aligns with the C/POSIX standard for ‘strtod’ and with ‘?NumericConstants’.
‘as.data.frame(m, make.names=NA)’ now works correctly for a matrix ‘m’ with ‘NA’'s in row names.
The error message from ‘<POSIXlt>[["hour"]]’ and similar now mentions ‘*[[, "hour"]]’, as wished for in PR#17409 and proposed by Michael Chirico.
‘qbinom()’ and potentially ‘qpois()’, ‘qnbinom()’, no longer sometimes fail accurate inversion (of ‘pbinom()’, etc), thanks to Christopher Chang's report and patch in PR#18711.
The internal help server on Windows can again serve requests sent in quick succession, fixing a regression in R 4.4.0.
‘debugcall(<S3Generic>())’ now also works when a corresponding S4-generic version is in the ‘methods’ cache (PR#18143).
Package ‘tools’' ‘toTitleCase(ch0)’ now returns ‘character(0)’ when ‘ch0’ is of zero length; fixing PR#18724, reported by David Hugh Jones.
‘R CMD check’ is no longer broken (without a check result and no explanation in ‘00check.log’) for a package which declares an invalid ‘VignetteBuilder’ in ‘DESCRIPTION’ but has no vignettes.
The new function ‘Rf_allocLang’ is now available. This provides an alternative to the idiom of calling ‘Rf_allocList’ followed by ‘SET_TYPEOF’.
‘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 proper type in the first place.
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.
‘R CMD check’ is no longer broken (without a check result and no explanation in ‘00check.log’) for a package which declares an invalid ‘VignetteBuilder’ in ‘DESCRIPTION’ but has no vignettes.
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.
‘R CMD check’ now reports as warnings what ‘gfortran’ calls ‘Fortran 2018 deleted features’, all of which have long been marked as ‘obsolescent’ and some of which were deleted in Fortran 2008 or earlier. Fortran compilers are no longer required to support these.
Package ‘tools’' ‘toTitleCase(ch0)’ now returns ‘character(0)’ when ‘ch0’ is of zero length; fixing PR#18724, reported by David Hugh Jones.
‘debugcall(<S3Generic>())’ now also works when a corresponding S4-generic version is in the ‘methods’ cache (PR#18143).
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’.
The internal help server on Windows can again serve requests sent in quick succession, fixing a regression in R 4.4.0.
Several deprecated auxiliary functions and the ‘MethodsList’ class for S4 method handling are now defunct in package ‘methods’, or have even been removed.
‘qbinom()’ and potentially ‘qpois()’, ‘qnbinom()’, no longer sometimes fail accurate inversion (of ‘pbinom()’, etc), thanks to Christopher Chang's report and patch in PR#18711.