This blog is updated daily.
A general description is here.
The C prototypes for LAPACK calls ‘dspgv’ and ‘dtptrs’ in ‘R_ext/Lapack.h’ had one too many and one too few character length arguments - but this has not caused any known issues. To get the corrected prototypes, include
#include <Rconfig.h> // for PR18534fixed #ifdef PR18534fixed # define usePR18534fix 1 #endif #include <R_ext/Lapack.h>
in your C/C++ code (PR#18534).
The deprecated legacy S-compatibility macros ‘PROBLEM’, ‘MESSAGE’, ‘ERROR’, ‘WARN’, ‘WARNING’, ‘RECOVER’, ... are no longer defined in ‘R_ext/RS.h’ (included by ‘R.h’). Replace these by calls to ‘Rf_error’ and ‘Rf_warning’ (defined in header ‘R_ext/Error.h’ included by ‘R.h’).
Header ‘R_ext/RS.h’ no longer includes ‘R_ext/Error.h’.
‘list.files()’ on Windows now returns also files with names longer that
260 bytes (the Windows limit is 260 characters). Previously, some file
names particularly with ‘East Asian’ characters were omitted.
‘list.files()’ on Windows now returns also files with names longer that 260 bytes (the Windows limit is 260 characters). Previously, some file names particularly with ‘East Asian’ characters were omitted.
‘rank(x)’ no longer overflows during integer addition, when computing rank average for largish but not-yet long vector ‘x’, fixing PR#18630, thanks to Ilia Kats.
‘z <- c(NA, 1i)’ now keeps the imaginary part ‘Im(z[1]) == 0’, no longer coercing to ‘NA_complex_’. Similarly, ‘cumsum(z)’ correctly sums real and imaginary parts separately, i.e., without “crosstalk” in case of ‘NA’s.
On Alpine Linux ‘iconv()’ now maps ‘"latin2"’, ‘"latin-2"’, ‘"latin9"’ and ‘"latin-9"’ to names the OS knows about (case-insensitively).
‘iconv()’ now fixes up variant encoding names such as ‘"utf8"’ case-insensitively.
Computations of glyph metric information for ‘pdf()’ and ‘postscript()’ did not take into account that transliteration could replace one character by two or more (only seen on macOS 14) and typically warned that the information was not known.
‘iconv()’ now fixes up variant encoding names such as ‘"utf8"’ case-insensitively, and on Alpine Linux maps ‘"latin2"’, ‘"latin-2"’, ‘"latin9"’ and ‘"latin-9"’ to names the OS knows about (case-insensitively).
‘drop.terms(*)’ now drops response as by default, ‘keep.response = FALSE’, fixing PR#18564 thanks to Mikael Jagan.
‘drop.terms(*)’ keeps ‘ + offset(.)’ terms when it should, PR#18565, and ‘drop.terms()’ no longer makes up a response, PR#18566, fixing both bugs thanks to Mikael Jagan.
‘pdf()’ and ‘postscript()’ support for the documented Adobe encodings ‘"Greek"’ and ‘"Cyrilllic"’ was missing (although the corresponding Windows' codepages could be used). (And also for the legacy ‘"MacRoman"’ encoding.)
Computations of glyph metric informaation for ‘pdf()’ and ‘postscript()’ did not take into account that transliteration could replace one character by two or more (only seen on macOS 14) and typically warned that the information was not known.
Where characters are attempted to be plotted by ‘pdf()’, ‘postscript()’ and ‘xfig()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
In a UTF-8 locale some transliterations are now done with a warning (e.g., dashes and Unicode minus to hyphen, ligatures are expanded, permille (‘‰’) is replaced by ‘o/oo’), although the OS may have got there first. These are warnings as they will continue to be replaced by dots in earlier versions of R.
The legacy graphics devices ‘pictex()’ and ‘xfig()’ are now deprecated. They do not support recent graphics enhancements and their font-handling is rudimentary. The intention is to retain them for historical interest as long as they remain somewhat functional.
‘as.complex("1i")’ now returns ‘1i’ instead of ‘NA’ with a warning.
Where characters are attempted to be plotted by ‘pdf()’, ‘postscript()’ and ‘xfig()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
In a UTF-8 locale some transliterations are now done without warning (e.g., dashes and Unicode minus to hyphen, ligatures are expanded).
Where characters are attempted to be plotted by ‘pdf()’ and ‘postscript()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
In a UTF-8 locale some transliterations are now done without warning (e.g., dashes and Unicode minus to hyphen, ligatures are expanded).
Where characters are attempted to be plotted by ‘pdf()’ and ‘postscript()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
In a UTF-8 locale some transliterations are now done without warning (e.g., dashes and Unicode minus to hyphen, ligatures are expanded and Euro sign replaced by ‘EUR’ except if using ‘encoding + "WinANSI"’, the default on Windows).
If the ‘libdeflate’ library and headers are available, ‘libdeflate’ rather than ‘libz’ is used to (de)compress R objects in lazy-load databases, Typically tasks spend up to 5% of their time on such operations, although creating lazy-data databases is one of the exceptions.
This can be suppressed if the library is available by the ‘configure’ option ‘--without-libdeflate-compression’.
‘list.files()’ on Windows now returns also files with names longer that 260 bytes (the Windows limit is 260 characters). Previously, some file names particularly with ‘East Asian’ characters were omitted.
‘readChar(useBytes=TRUE)’ now terminates strings even when the underlying connection uses extra space in the input buffer. This fixes problems with extra garbage seen with ‘gzip’ connections, PR#18605.
Named capture in PCRE regular expressions now works also with more than 127 named groups (PR#18588).
Datetime functions are now robust against long jumps when dealing with internal time zone changes. This avoids confusing warnings about an invalid time zone, previously triggered by turning warnings into errors or handling them via ‘tryCatch’ (PR#17966, PR#17780).
Datetime functions now restore even an empty ‘TZ’ environment variable after internal time zone changes (PR#17724). This makes results of datetime functions with this (typically unintentional) setting more predictable.
‘SEXP’ type ‘S4SXP’ has been renamed ‘OBJSXP’ to support experimenting with alternative object systems. The ‘S4SXP’ value can still be used in ‘C’ code but is now deprecated. Based on contributions from the R Consortium Object-Oriented Programming Working Group.
‘drop.terms(*, dropx=<0-length>)’ now works, fixing PR#18563 as proposed by Mikael Jagan.
‘SEXP’ type ‘S4SXP’ has been renamed ‘OBJSXP’ to support experimenting with alternative object systems. The ‘S4SXP’ value can still be used in ‘C’ code but is now deprecated. Based on contriubtions from the R Consortium Object-Oriented Programming Working Group.
Some invalid ‘file’ arguments to ‘pictex()’, ‘postscript()’ and
‘xfig()’ opened a file called ‘NA’ rather than throw an error. These
included ‘postscript(NULL)’ (which some people expected to work like
‘pdf(NULL)’).
Passing ‘filename = NA’ to ‘svg()’, ‘cairo_pdf()’, ‘cairo_ps()’ or the Cairo-based bitmap devices opened a file called ‘NA’: it now throws an error.
‘quartz(file = NA)’ opened a file called ‘NA’, including when used as a Quartz-based bitmap device. It now gives an error.
‘rank(<long vector>)’ now works, fixing PR#18617, thanks to Ilia Kats.
Some invalid ‘file’ arguments to ‘pictex()’, ‘postscript()’ and ‘xfig()’ opened a file called ‘NA’ rather than throw an error. These included ‘postscript(NULL)’ (which some people expected to work like ‘pdf(NULL)’).
Passing ‘filename = NA’ to ‘svg()’, ‘cairo_pdf()’, ‘cairo_ps()’ or the Cairo-based bitmap devices opened a file called ‘NA’: it now throws an error.
‘quartz(file = NA)’ opened a file called ‘NA’, including when used as a Quartz-based bitmap device. It now gives an error.
‘rank(<long vector>)’ now works, fixing PR#18617, thanks to Ilia Kats.
‘match(<POSIXct>, .)’ is correct again for differing time zones, ditto for ‘"POSIXlt"’, fixing PR#18618 reported by Bastian Klein.
‘seq.int()’ did not adequately check its ‘length.out’ argument.
Some invalid ‘file’ arguments to ‘pictex()’, ‘postscript()’ and ‘xfig()’ opened a file called ‘NA’ rather than throw an error. These included ‘postscript(NULL)’ (which some people expected to work like ‘pdf(NULL)’).
Passing ‘filename = NA’ to ‘svg()’, ‘cairo_pdf()’, ‘cairo_ps()’ or the Cairo-based bitmap devices opened a file called ‘NA’: it now throws an error.
‘quartz(file = NA)’ opened a file called ‘NA’, including when used as a Quartz-based bitmap device. It now gives an error.
‘rank(<long vector>)’ now works, fixing PR#18617, thanks to Ilia Kats.
‘warnings()’ now always inherits from ‘"warnings"’ as documented, newly also in the case of no warnings, where it previously returned ‘NULL’.
Some invalid ‘file’ arguments to ‘pictes()’, ‘postscript()’ and ‘xfig()’ opened a file called ‘NA’ rather than throw an error. These included ‘postscript(NULL)’ (which some people expected to work like ‘pdf(NULL)’).
Passing ‘filename = NA’ to ‘svg()’, ‘cairo_pdf()’, ‘cairo_ps()’ or the Cairo-based bitmap devices opened a file called ‘NA’: it now throws an error.
‘quartz(file = NA)’ opened a file called ‘NA’, including when used as a Quartz-based bitmap device. It now gives an error.
‘rank(<long vector>)’ now works, fixing PR#18617, thanks to Ilia Kats.
‘seq.int()’ did not adequately check its ‘length.out’ argument.
Some invalid ‘file’ arguments to ‘postscript()’ and ‘xfig()’ opened a file called ‘NA’ rather than throw an error. These included ‘postscript(NULL)’ (which some people expected to work like ‘pdf(NULL)’).
Passing ‘filename = NA’ to ‘svg()’, ‘cairo_pdf()’, ‘cairo_ps()’ or the Cairo-based bitmap devices open a file called ‘NA’: it now throws an error.
‘quartz(file = NA)’ opened a file called ‘NA’, including when used as a Quartz-based bitmap device. It now gives an error.
Some invalid ‘file’ arguments to ‘postscript()’ and ‘xfig()’ opened a file called ‘NA’ rather than throw an error. These included ‘postscript(NULL)’ (which some people expected to work like ‘pdf(NULL)’).
Passing ‘filename = NA’ to ‘svg()’, ‘cairo_pdf()’, ‘cairo_ps()’ or the Cairo-based bitmap devices open a file called ‘NA’: it now throws an error.
‘quartz(file + NA)’ opened a file called ‘NA’, including when used as a Quartz-based bitmap device. It now gives an error.
‘L %||% R’ newly in base is an expressive idiom for the ‘if(!is.null(L)) L else R’ or ‘if(is.null(L)) R else L’ phrases.
‘tools::checkRd()’ no longer produces spurious notes about “unnecessary
braces” from multi-line Rd results of \Sexpr macros.
‘tools::checkRd()’ no longer produces spurious notes about “unnecessary braces” from multi-line Rd results of \Sexpr macros.
New option ‘catch.script.errors’ provides a documented way to catch errors and continue in non-interactive use.
Some error and warning messages for large (‘long vector’) ‘matrix(v, nr, nc)’ and ‘dim(m) <- d’ are now correct about sizes, using ‘long long’ formatting, fixing PR#18612 (and more) reported by Mikael Jagan.
The default initialization of the ‘"repos"’ option from the ‘repositories’ file at startup can be skipped by setting environment variable ‘R_REPOSITORIES’ to ‘NULL’ such that ‘getOption("repos")’ is empty if not set elsewhere.
‘qr.X()’ is now an implicit S4 generic in ‘methods’.
‘iconv(to = "ASCII//TRANSLIT")’ is emulated using substitution on platforms which do not support it (notably Alpine Linux). This should give a human-readable conversion in ASCII on all platforms (rather than ‘NA_character_’).
‘trans3d()’ gains options ‘continuous’ and ‘verbose’ addressing the problem of possible “wrap around” when projecting too long curves, as reported by Achim Zeileis in PR#18537.
‘tools::showNonASCII()’ has been rewritten to work better on macOS 14 (which has a changed implementation of ‘iconv()’).
‘tiff(type = "quartz")’ (the default on macOS) now warns if ‘compression’ is specified: it continues to be ignored.
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.x.y.
There is support for using LLVM's ‘flang-new’ as the Fortran compiler from LLVM 16.0.x (preferably 17.0.0 or later).
‘R CMD check’ reports the use of the Fortran 90 random number generator ‘RANDOM_NUMBER()’ and the subroutines to initialize it.
‘Writing R Extensions’ has example code to use R's RNGs from Fortran.
‘substr(x, n, L) <- cc’ now works (more) correctly for multibyte UTF-8 strings ‘x’ when ‘L > nchar(x)’, thanks to a report and patch by ‘Architect 95’.
‘contrib.url(character())’ now returns 0-length ‘character()’ as documented, which also avoids spurious warnings from ‘available.packages()’ et al. in the edge case of an empty vector of repository URLs.
‘readChar(., 4e8)’ no longer fails, thanks to Kodi Arfer's report (PR#18557).
‘lapply(<list>, as.data.frame)’ no longer warns falsely for some base vector components.
Communication between parent and child processes in the ‘multicore’ part of ‘parallel’ could fail on platforms that do not support an arbitrarily large payload in system functions ‘read()’/‘write()’ on pipes (seen on macOS where a restriction to ‘INT_MAX’ bytes is documented, without doing a partial read unlike Linux). The payload is now split into 1Gb chunks to avoid that problem. (PR#18571)
‘qqplot(x,y, conf.level=.)’ gives better confidence bounds when ‘length(x) != length(y)’, thanks to Alexander Ploner's report and patch proposal (PR#18557).
‘norm(<0-length>, "2")’ now gives zero instead of an error, as all the other norm types, thanks to Mikael Jagan's PR#18542.
Build-stage Rd macros \packageAuthor and \packageMaintainer now process ‘Authors@R’, fixing ‘NA’ results when the package ‘DESCRIPTION’ omits ‘Author’ and ‘Maintainer’ fields.
Formatting and printing complex numbers could give things like ‘0.1683-0i’ because of rounding error: ‘-0i’ is now replaced by ‘+0i’.
‘postscript()’ refused to accept a ‘title’ comment containing the letter “W” (PR#18599).
‘isoreg(c(1,Inf))’ signals an error instead of segfaulting, fixing PR#18603.
‘tiff(type = "Xlib")’ was only outputting the last page of multi-page plots.
‘tools::latexToUtf8()’ again knows about ‘\~{n}’ and other letters with tilde, fixing a regression in R 4.3.0, and about ‘\^{i}’ as an alternative to ‘\^{\i}’ (similarly with other accents). Furthermore, LaTeX codes for accented I letters are now correctly converted, also fixing related mistakes in ‘tools::encoded_text_to_latex()’.
‘tar(*, tar = "internal")’ no longer creates out-of-spec tar files in the very rare case of user or group names longer than 32 bytes, fixing PR#17871 with thanks to Ivan Krylov.
When using the “internal” timezone datetime code, adding a fraction of a second no longer adds one second, fixing PR#16856 from a patch by Ivan Krylov.
‘tar(*, tar = "internal")’ no longer creates out-of-spec tar files in the very rare case of user or group names longer than 32 bytes, fixing PR#17871 with thanks to Ivan Krylov.
When using the “internal” timezone datetime code, adding a fraction of a second no longer adds one second, fixing PR#16856 from a patch by Ivan Krylov.
‘tools::latexToUtf8()’ again knows about ‘\~{n}’ and other letters with tilde, fixing a regression in R 4.3.0, and about ‘\^{i}’ as an alternative to ‘\^{\i}’ (similarly with other accents). Furthermore, LaTeX codes for accented I letters are now correctly converted, also fixing related mistakes in ‘tools::encoded_text_to_latex()’.
‘cairo_pdf()’ and ‘cairo_ps()’ default to ‘onefile = TRUE’ to closer match ‘pdf()’ and ‘postscript()’.
‘configure’ option ‘--enable-lto=check’ has not worked reliably since 2019 and has been removed.
‘tools::latexToUtf8()’ again knows about ‘\~{n}’ and other letters with tilde, fixing a regression in R 4.3.0.
‘is.atomic(NULL)’ now returns ‘FALSE’, as ‘NULL’ is not an atomic vector. Strict back-compatibility would replace ‘is.atomic(foo)’ by ‘(is.null(foo) || is.atomic(foo))’ but should happen only sparingly.
The list of base and recommended package names is now provided by ‘tools :: standard_package_names’.
Where characters are attempted to be plotted by ‘pdf()’ and ‘postscript()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
In a UTF-8 locale some transliterations are now done without warning (e.g., dashes and Unicode minus to hyphen).
For ‘cbind()’ and ‘rbind()’, the optional ‘deparse.level’ argument is now properly passed to methods, thanks to Mikael Jagan's PR#18579 and comments there.
‘source()’ and ‘example()’ have a new optional argument ‘catch.aborts’ which allows continued evaluation of the R code after an error.
The non-Quartz ‘tiff()’ devices allow additional types of compression if supported by the platform's ‘libtiff’ library.
When checking Rd files, ‘R CMD check --as-cran’ now notes some of the “lost braces” that ‘tools::checkRd()’ finds. Typical problems are Rd macros missing the initial backslash (e.g., ‘code{...}’), in-text set notation (e.g., ‘{1, 2}’, where the braces need escaping), and \itemize lists with _description_-like entries of the form \item{label}{description}.
‘tiff(type = "Xlib")’ was only outputting the last page of multi-page plots.
New ‘R_missing()’, factored out from ‘do_missing()’, used to fix PR#18579.
The non-Quartz ‘tiff()’ devices allow additional types of compression.
New experimental functions ‘Tailcall’ and ‘Exec’ to support writing stack-space-efficient recursive functions.
‘tiff(type = "quartz")’ (the default on macOS) now warns if ‘compression’ is specified: it continues to be ignored.
‘source()’ and ‘example()’ get a new optional argument ‘catch.aborts’ which allows continued evaluation of the R code after an error.
Where characters are attempted to be plotted by ‘pdf()’ and ‘postscript()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
The matrix multiplication functions ‘crossprod()’ and ‘tcrossprod()’ are now also primitive and S3 generic, as ‘%*%’ had become in R 4.3.0.
Where characters are attempted to be plotted by ‘pdf()’ and
‘postscript()’ which are not in the selected 8-bit character set (most
often Latin-1) and the R session is using a UTF-8 locale, the warning
messages will show the UTF-8 character rather than its bytes and one
dot will be substituted per character rather than per byte. (Platforms
whose ‘iconv()’ does transliteration silently plot the
transliteration.)
Where characters are attempted to be plotted by ‘pdf()’ and ‘postscript()’ which are not in the selected 8-bit character set (most often Latin-1) and the R session is using a UTF-8 locale, the warning messages will show the UTF-8 character rather than its bytes and one dot will be substituted per character rather than per byte. (Platforms whose ‘iconv()’ does transliteration silently plot the transliteration.)
‘tools::showNonASCII()’ has been rewritten to work better on macOS 14 (which has a changed implementation of ‘iconv()’).
‘tar(., files=*)’ now produces correctly the warning about invalid UID or GID of files, fixing PR#18344, reported by Martin Morgan.
Formatting and printing, ‘format(z), print(z)’, of complex vectors ‘z’ no longer zap relatively small real or imaginary parts to zero, fixing PR#16752. This is an API change, as it was documented previously to round real and imaginary parts together on purpose, producing nicer looking output. As mentioned, e.g. in the PR, this change is compatible to many other “R-like” programming environments.
We have simplified the internal code and now basically format the real and imaginary parts independently of each other.
New experimental functions ‘Tailcall’ and ‘Exec’ to support writing stack-space-effcient recursive functions.
‘tools::showNonASCII()’ has been rewritten to work better on macOS 14 (which has a changed implementation of ‘iconv()’.
A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interfaces in their Accelerate framework. Those interfaces are only available in macOS 13.3 or later, and building requires SDK 13.3 or later (from the Command Line Tools or Xcode 14.3 or later).
By default the option uses new Accelerate for BLAS calls: to also use it for LAPACK use ‘--with-newAccelerate=lapack’. The later interfaces provide LAPACK 3.9.1 rather than 3.2.1: 3.9.1 is from 2021-04 and does not include the improved algorithms introduced in LAPACK 3.10.0 (including for BLAS calls).
‘tools::testInstalledBasic()’ gets new optional arguments ‘outDir’ and ‘testSrcdir’, e.g., allowing to use it in a ‘builddir != srcdir’ setup, and in standard “binary” Windows installation *if* a source ‘tests/’ folder is present.
A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interfaces in their Accelerate framework. Those interfaces are only available in macOS 13.3 or later, and building requires SDK 13.3 or later (from the Command Line Tools or Xcode 14.3 or later).
By default the option uses new Accelerate for BLAS calls: to also use it for LAPACK use ‘--with-newAccelerate=lapack’. The later interfaces provide LAPACK 3.9.1 rather than 3.2.1: 3.9.1 is from 2021-04 and does not include the improved algorithms introduced in LAPACK 3.10.0.
‘as.complex(x)’ now returns ‘complex(real=x, imaginary=0)’ for _all_ numerical and logical ‘x’, notably also for ‘NA’ or ‘NA_integer_’.
‘isoreg(c(1,Inf))’ signals an error instead of segfaulting, fixing PR#18603.
‘is.atomic(NULL)’ now returns ‘FALSE’, as ‘NULL’ is not an atomic vector. Strict back compatibility would replace ‘is.atomic(foo)’ by ‘(is.null(foo) || is.atomic(foo))’ but should happen sparingly only.
‘sort()’ is now an implicit S4 generic in ‘methods’.
‘R CMD check’ now warns on non-portable uses of Fortran ‘KIND’ such as ‘INTEGER(KIND=4)’ and ‘REAL(KIND=8)’.
To see the failing lines set environment variable ‘_R_CHECK_FORTRAN_KIND_DETAILS_’ to a true value.
The ‘formula’ methods for ‘t.test()’ and ‘wilcox.test()’ now catch when ‘paired’ is passed, addressing PR#14359; use ‘Pair(x1, x2) ~ 1’ for a paired test.
The level reported in the browser prompt was often too large. It now shows the number of browser contexts on the stack.
‘postscript()’ refused to accept a ‘title’ comment containing the letter “W” (PR#18599).
The ‘keep.source’ option for Rd \Sexpr blocks is no longer ignored.
‘pairwise.t.test()’ misbehaved when subgroups had 0 DF for variance, even with ‘pool.sd=TRUE’ PR#18594 (Jack Berry).
A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interfaces in their Accelerate framework. Those interfaces are only available in macOS 13.3 or later, and building requires SDK 14.3 or later (from the Command Line Tools or Xcode).
By default the option uses new Accelerate for BLAS calls: to also use it for LAPACK use ‘--with-newAccelerate=lapack’. The later interfaces provide LAPACK 3.9.1 rather than 3.2.1: 3.9.1 is from 2021-04 and does not include the improved algorithms introduced in LAPACK 3.10.0.
‘data()’ no longer handles zipped data from long-defunct (since R 2.13.0) ‘--use-zip-data’ installations.
Functions ‘psmirnov()’, ‘qsmirnov()’ and ‘rsmirnov()’ in package ‘stats’ have argument ‘two.sided’ changed to ‘alternative’, to take into account that the permutation distributions of the one-sided statistics can be different in the case of ties. Consequence of PR#18582.
‘R CMD check’ reports the use of the Fortran 90 random number generator ‘RANDOM_NUMBER()’ and the subroutines to initialize it.
‘Writing R Extensions’ has example code to use R's RNGs from Fortran.
The new experimental primitive function ‘declare()’ is intended to eventually allow information about R code to be communicated to the interpreter, compiler, and code analysis tools. The syntax for declarations is still being developed.
Headers ‘R_ext/Applic.h’ and ‘R-ext/Linpack.h’ used to include ‘R_ext/BLAS.h’ although this was undocumented and unneeded by their documented entry points. They no longer do so.
Headers ‘R_ext/Applic.h’ and ‘R-ext/Linpack.h’ used to include ‘R_ext/BLAS.h’ although this was undocumented and unneeded by their documented entry points. They no longer do so.
[Linpack.h deferred to 2023-09-18 to allow some packages to adjust.]
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.x.y.
(In progress)
A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's
‘new’ BLAS / LAPACK interface in their Accelerate framework. That
interface is only available in macOS 13.3 or later, and building
requires SDK 14.3 or later (from the Command Line Tools or Xcode).
To avoid many compilation warnings you may want to use
CC="clang -mmacos-version-min=13.3"
Entry points in ‘libRblas.dylib’ and ‘libRlapack.dylib’ are diverted to Accelerate: some from R itself call Accelerate directly, notably the functions using the ‘lapack’ module such as ‘svd()’.
That version of Accelerate provides LAPACK 3.9.1 rather than 3.2.1.
The matrix multiplication functions ‘crossprod()’ and ‘tcrossprod()’
are now also primitive and S3 generic, as ‘%*%’ had become in R 4.3.0.
Plain-text help shows \var markup with angle brackets.
The matrix multiplication functions ‘crossprod()’ and ‘tcrossprod()’ are now also primitive and S3 generic, as ‘%*%’ had become in R 4.3.0.
‘configure’ ‘--enable-lto=check’ has not worked reliably since 2019 and has been removed.
(In progress) A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interface in their Accelerate framework. That interface is only available in macOS 13.3 or later, and building requires SDK 14.3 or later (from the Command Line Tools or Xcode).
To avoid many compilation warnings you may want to use
CC="clang -mmacos-version-min=13.3"
Entry points in ‘libRblas.dylib’ and ‘libRlapack.dylib’ are diverted to Accelerate: some from R itself call Accelerate directly, notably the functions using the ‘lapack’ module such as ‘svd()’.
That version of Accelerate provides LAPACK 3.9.1 rather than 3.2.1.
Environment variable ‘R_SYSTEM_ABI’ is no longer used and so no longer recorded in ‘etc/Renviron’ (it was not on Windows and was only ever used when preparing package ‘tools’).
(In progress) A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interface in their Accelerate framework. That interface is only available in macOS 13.3 or later, and building requires SDK 14.3 or later (from the Command Line Tools or Xcode).
To avoid many compilation warnings you may need to use
CC="clang -mmacos-version-min=13.3"
That version of Accelerate provides LAPACK 3.9.1 rather than 3.2.1.
Currently Accelerate is used for BLAS calls from C in R and package stats and for LAPACK calls from the ‘lapack’ module.
The BLAS entry points in libRblas.dylib are diverted to Accelerate: this means that calls to LAPACK routines from packages will go to the reference implementation and BLAS calls in that will use Accelerate.
Headers ‘R_ext/Applic.h’ and ‘R-ext/Linpack.h’ included ‘R_ext/BLAS.h’ although this was undocumented and unneeded by their documented entry points. They no longer do so.
[Deferred to 2023-09-18 to allow some packages to adjust.]
Formatting and printing complex numbers could give things like
‘0.1683-0i’ because of rounding error: ‘-0i’ is now replaced by ‘+0i’.
Formatting and printing complex numbers could give things like ‘0.1683-0i’ because of rounding error: ‘-0i’ is now replaced by ‘+0i’.
Headers ‘R_ext/Applic.h’ and ‘R-ext/Linpack.h’ included ‘R_ext/BLAS.h’ although this was undocumented and unneeded by their documented entry points. They no longer do so.
[Deferred to 2023-09-18 to allows some packages to adjust.]
(In progress) A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interface in their Accelerate framework. That interface is only available in macOS 13.3 or later, and building requires SDK 14.3 or later (from the Command Line Tools or Xcode).
To avoid many compilation warnings you may need to use
CC="clang -mmacos-version-min=13.3"
That version of Accelerate provides LAPACK 3.9.1 rather than 3.2.1.
Currently Accelerate is used for BLAS calls from C in R and package stats and for LAPACK calls from the ‘lapack’ module.
Formatting and printing complex numbers could give things like ‘0.1683-0i’ because of rounding error: ‘-0i’ is now replaced by ‘+0i’.
(In progress) A new ‘configure’ option ‘--with-newAccelerate’ makes use of Apple's ‘new’ BLAS / LAPACK interface in their Accelerate framework. That interface is only available in macOS 13.3 or later, and building requires SDK 14.3 or later (from the Command Line Tools or Xcode).
To avoid many compilation warnings you may need to use
CC="clang -mmacos-version-min=13.3"
That version of Accelerate provides LAPACK 3.9.1 rather than 3.2.1.
Hexadecimal string colour specifications are now accepted in short form, so, for example, we can use ‘"#123"’, which is equivalent to ‘"#112233"’.
Thanks to MikeFC for the original idea and Ella Kaye, Malcolm Barrett, George Stagg, Hanne Oberman, and Michael Chirico for the patch.
‘R CMD check’ reports the use of Fortran 90 random number generator ‘RANDOM_NUMBER()’ and the subroutines to initialize it.
‘Writing R Extensions’ has example code to use R's RNGs from Fortran.
‘transform.data.frame()’ no longer adjusts names; in particular, untransformed variables are kept as-is, including those with syntactically invalid names (PR#17890).
‘filled.contour()’ gains ‘key.border’ argument.
‘tools::update_pkg_po()’ gets ‘pot_make’ and ‘mo_make’ options for _not_ re-making the corresponding files, and additionally option ‘verbose’.
‘diff()’ for objects of class ‘"Date"’, ‘"POSIXct"’, and ‘"POSIXlt"’ accepts a ‘units’ argument passed via ‘...’.
‘R CMD Rdiff’ gets option ‘--useEx’.
‘withAutoprint({ .. })’ now preserves ‘srcref’s previously lost, thanks to Andrew Simmons' report plus fix in PR#18572.
‘Rprof()’ gains an ‘event’ argument and support for elapsed (real) time profiling on Unix (PR#18076).
When S4 method dispatch fails because no method was found, the error message now includes the signature argument names; thanks to Michael Chirico's proposal on R-devel.
Dynamic help now does a much better job rendering package ‘DESCRIPTION’ metadata.
There is an experimental ‘configure’ option ‘--with-libdeflate-compression’ which uses ‘libdeflate’ rather than ‘libz’ to (de)compress R objects in lazy-load databases, if the ‘libdeflate’ library and headers are available. Typically tasks spend up to 5% of their time on such operations, although creating lazy-data databases is one of the exceptions.
_pro tem_ this can also be selected by setting environment variable ‘R_USE_LIBDEFLATE_FOR_LAZYLOAD’ to ‘yes’.
‘tools::checkDocFiles()’ and ‘tools::checkRdContents()’ now also check internal Rd files by default, but “specially” (ignoring missing documentation of arguments).
There is an experimental ‘configure’ option ‘--with-libdeflate-compression’ which uses ‘libdeflate’ rather than ‘libz’ to (de)compress R objects in lazy-load databases, if the ‘libdeflate’ library and headers are available. Typically tasks spend up to 5% of their time on such operations, although creating lazy-data databases is one of the exceptions.
_pro tem_ this can also be selected by setting enviroment variable ‘R_USE_LIBDEFLATE_FOR_LAZYLOAD’ to ‘yes’.
‘diff()’ for objects of class ‘"Date"’, ‘"POSIXct"’, and ‘"POSIXlt"’ accepts a ‘"units"’ argument passed via ‘...’.
Build-stage Rd macros \packageAuthor and \packageMaintainer now process ‘Authors@R’, fixing ‘NA’ results when the package ‘DESCRIPTION’ omits ‘Author’ and ‘Maintainer’ fields.
There is an experimental new ‘configure’ option ‘--with-libdeflate-compression’ that uses ‘libdeflate’ rather than ‘libz’ to (de)compress R objects in lazy-load databases, if the ‘libdeflate’ library and headers are available. Typically tasks spend up to 5% of their time on such operations, although creating lazy-data databases is one of the exceptions.
THere is an experimental new ‘configure’ option ‘--with-libdeflate-compression’ that uses ‘libdeflate’ rather than ‘libz’ to (de)compress R objects in lazy-load databases, if the ‘libdeflate’ library and headers are available. Typically tasks spend up to 5% of their time on such operations, although creating lazy-data databases is one of the exceptions.
Build-stage Rd macros \packageAuthor and \packageMaintainer now process
‘Authors@R’, fixing ‘NA’ results when the package ‘DESCRIPTION’ omits
‘Author’ and ‘Maintainer’ fields.
‘memDecompress(type = "unknown")’ recognizes compression in the default ‘zlib’ format as used by ‘memCompress(type = "gzip")’.
Build-stage Rd macros \packageAuthor and \packageMaintainer now process ‘Authors@R’, fixing ‘NA’ results when the package ‘DESCRIPTION’ omits ‘Author’ and ‘Maintainer’ fields.
‘memDecompress(type = "unknown")’ recognizes compression in the defailt ‘zlib’ format as used by ‘memCompress(type = "gzip")’.
‘memCompress()’ and ‘memDecompress()’ will use the ‘libdeflate’ library (<URL: https://github.com/ebiggers/libdeflate>) if installed. This uses the same type of compression for ‘type = "gzip"’ but is 1.5-2x faster than the system ‘libz’ library on some common platforms: the speed-up may depend on the library version.
‘memDecompress(type = "unknown")’ recognizes compresion in the defailt ‘zlib’ format as used by ‘memCompress(type = "gzip")’.
(*Experimental:*) ‘memCompress()’ and ‘memDecompress()’ have a new type ‘"libdeflate"’ which use the ‘libdeflate’ library (<URL: https://github.com/ebiggers/libdeflate>) if installed. This uses the same type of compression as their default ‘type = "gzip"’ but is substantially faster on some common plaftorms: the speed-up may depend on the library version.
This option may replace ‘type = "gzip"’ before release.
The ‘confint()’ and ‘profile’ methods for ‘"glm"’ objects have gained a possibility to do profiling based on the Rao Score statistic in addition to the default Likelihood Ratio. This is controlled by a new ‘test =’ argument.
In ‘setRepositories()’ the repositories can be set using their names via ‘name =’ instead of index ‘ind =’.
‘range(<DT_with_Inf>, finite = TRUE)’ now work for objects of class ‘"Date"’, ‘"POSIXct"’, and ‘"POSIXlt"’ with infinite entries, analogously to ‘range.default()’, as proposed by Davis Vaughan on R-devel. Other ‘range()’-methods can make use of new ‘.rangeNum()’.
‘kappa(., exact = TRUE, norm = *)’ now works for all norms and also for complex matrices. In symmetric / triangular cases, new argument ‘uplo = "U" | "L"’ allows to specify the upper or lower triangular part.
Enviroment variable ‘R_SYSTEM_ABI’ is no longer used and so no longer recorded in ‘etc/Renviron’ (it was not on Windows and was only ever used when preparing package ‘tools’).
‘kappa()’ and ‘rcond()’ work correctly in more cases; ‘kappa(., norm = "2")’ now warns that it computes the 1-norm with (default) ‘exact = FALSE’; prompted by Mikael Jagan's quite comprehensive PR#18543.
Rd skeletons generated by ‘prompt()’ or ‘promptData()’ now use a dummy title (so ‘R CMD build’ works). ‘tools::checkRdContents()’ has been updated to detect such template leftovers, including from ‘promptPackage()’.
‘norm(., type)’ now also works for complex matrices.
‘kappa(., exact=TRUE, norm=*)’ now works for all norms and also for complex matrices. In symmetric / triangular cases, new argument ‘uplo = "U" | "L"’ allows to specify the upper or lower triangular part.
Plain-text help no longer outputs spurious colons in the arguments list (for multi-line \item labels in the Rd source).
‘kappa()’ and ‘rcond()’ work correctly in more cases; ‘kappa(., norm="2")’ now warns that it computes the 1-norm with (default) ‘exact = FALSE’; prompted by Mikael Jagan's quite comprehensive PR#18543.
Rd skeletons generated by ‘prompt()’ or ‘promptData()’ now use a dummy title (so R CMD build works). ‘tools::checkRdContents()’ has been updated to detect such template leftovers, including from ‘promptPackage()’.
‘grid()’ now invisibly returns the x- and y- coordinates at which the grid-lines were drawn.
‘R CMD check’ now visits ‘inst/NEWS.Rd’ when checking Rd files.
‘norm(<0-length>, "2")’ now gives zero instead of an error, as all the other norm types, thanks to Mikael Jagan's PR#18542.
There is some support for building with Intel's LLVM-based compilers on
‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’
from oneAPI 2023.x.0.
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.x.0.
There is support for using LLVM's ‘flang-new’ as the Fortran compiler from LLVM 16.0.x (preferably 17.0.0 or later).
‘grid()’ now invisibly returns the x- and y- coordinates at which the grid-lines weredrawn.
‘trans3d()’ gains options ‘continuous’ and ‘verbose’ addressing the problem of possible “wrap around” when projecting too long curves, as reported by Achim Zeileis in PR#18537.
‘qqplot(x,y, conf.level=.)’ gives better confidence bounds when ‘length(x) != length(y)’, thanks to Alexander Ploner's report and patch proposal (PR#18557).
Enviroment variable ‘R_SYSTEM_ABI’ is no longer used and so no longer recorded in ‘etc/Renviron’ (it is not on Windows and was only ever used when preparing package ‘tools’).
The ‘confint()’ methods for ‘"glm"’ and ‘"nls"’ objects have been copied to the ‘stats’ package. Previously, they were stubs which called versions in package ‘MASS’. The ‘MASS’ namespace is no longer loaded if you invoke (say) ‘confint(glmfit)’. Further, the ‘"glm"’ method for ‘profile()’ and the ‘plot()’ and ‘pairs()’ methods for class ‘"profile"’ have been copied from ‘MASS’ to ‘stats’. (‘profile.nls()’ and ‘plot.profile.nls()’ were already in ‘stats’.)
Serializations can now be interrupted (e.g., by ‘Ctrl-C’ on a Unix-alike) if they take too long, e.g., from ‘save.image()’, thanks to suggestions by Ivan Krylov and others on R-devel.
Communication between parent and child processes in ‘multicore’ part of
‘parallel’ could fail on platforms that do not support arbitrarily
large payload in system functions ‘read()’/‘write()’ on pipes (seen on
macOS). The payload is now split into 1Gb chunks to avoid that problem.
PR#18571
Communication between parent and child processes in the ‘multicore’ part of ‘parallel’ could fail on platforms that do not support an arbitrarily large payload in system functions ‘read()’/‘write()’ on pipes (seen on macOS where a restriction to ‘INT_MAX’ bytes is documented, without doing a partial read unlike Linux). The payload is now split into 1Gb chunks to avoid that problem. (PR#18571)
New ‘.internalGenerics’ complementing ‘.S3PrimitiveGenerics’, for documentation and low-level book keeping.
Communication between parent and child processes in ‘multicore’ part of ‘parallel’ could fail on platforms that do not support arbitrarily large payload in system functions ‘read()’/‘write()’ on pipes (seen on macOS). The payload is now split into 1Gb chunks to avoid that problem. PR#18571
The ‘confint()’ methods for ‘"glm"’ and ‘"nls"’ objects have been copied to the ‘stats’ package. Previously, they were stubs which called versions in package ‘MASS’. The ‘MASS’ namespace is no longer loaded if you invoke (say) ‘confint(glmfit)’. Further, the ‘"glm"’ method for ‘profile()’ and the ‘plot()’ and ‘pairs()’ mesthods for class ‘"profile"’ have been copied from ‘MASS’ to ‘stats’. (‘profile.nls()’ and ‘plot.profile.nls()’ were already in ‘stats’.)
R on Windows (since Windows 10 2004) now uses the new Segment Heap allocator. This may improve performance of some memory-intensive applications.
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.x.0.
‘density()’ more consistently computes grid values for the FFT-based convolution, following Robert Schlicht's analysis and proposal in PR#18337, correcting density values typically by a factor of about 0.999. Optional ‘old.coords=TRUE’ provides back compatibility.
‘R CMD check’ now notes Rd files without an \alias, as long documented in ‘Writing R Extensions’ §1.3.1. The check for a missing \description has been moved from ‘tools::checkRd()’ to ‘tools::checkRdContents()’.
‘tools::checkRdContents()’ failed to detect empty argument descriptions when they spanned multiple lines, including those generated by ‘prompt()’. These cases are now noted by ‘R CMD check’.
There is some support for building with Intel's LLVM-based compilers on ‘x86_64’ Linux, such as (C) ‘icx’, (C++) ‘ipcx’ and (Fortran) ‘ifx’ from oneAPI 2023.1.0.
‘range(<DT_with_Inf>, finite=TRUE)’ now work for objects of class ‘"Date"’, ‘"POSIXct"’, and ‘"POSIXlt"’ with infinite entries, analogously to ‘range.default()’, as proposed by Davis Vaughan on R-devel. Other ‘range()’-methods can make use of new ‘.rangeNum()’.
‘iconv(to = "ASCII//TRANSLIT")’ is emulated using substitution on platforms which do not support it (notably Alpine Linux). This should give a human-readable conversion in ASCII on all platforms (rather than ‘NA_character_’).
The ‘confint()’ methods for ‘"glm"’ and ‘"nls"’ objects are now in the ‘stats’ package. Previously, they were stubs that called versions in ‘MASS’. The original versions are still in ‘MASS’ and can be called using an explicit namespace qualifier, but the ‘MASS’ namespace is no longer autoloaded if you invoke (say) ‘confint(glmfit)’. Similarly, ‘profile.glm()’, ‘plot.profile()’, and ‘pairs.profile()’ are now in ‘stats’. (‘profile.nls()’ and ‘plot.profile.nls()’ were in ‘stats’ already.)
The ‘confint()’ and ‘profile’ methods for ‘"glm"’ objects have gained a possibility to do profiling based on the Rao Score statistic in addition to the default Likelihood Ratio. This is controlled by a new ‘test=’ argument.
‘lapply(<list>, as.data.frame)’ no longer warns falsely for some base vector components.
‘qr.X()’ is now an implicit S4 generic in ‘methods’.
The default initialization of the ‘"repos"’ option from the ‘repositories’ file at startup can be skipped by setting environment variable ‘R_REPOSITORIES’ to ‘NULL’ such that ‘getOption("repos")’ is empty if not set elsewhere.
‘R CMD check’ now warns about Rd files without an \alias, as long documented in ‘Writing R Extensions’ §1.3.1. This currently ignores files with \docType{package}. The check for a missing \description has been moved from ‘tools::checkRd()’ to ‘tools::checkRdContents()’.
‘tools’‘::testInstalledBasic()’ gets new optional arguments ‘outDir’ and ‘testSrcdir’, e.g., allowing to use it in a ‘<builddir> != <srcdir>’ setup, and in standard “binary” Windows installation *if* a source ‘tests/’ folder is present.
A non-blocking connection with non-default encoding such as a socket, now correctly returns from ‘readLines()’ after new data has arrived also when its EOF had been reached previously. Thanks to Peter Meilstrup's report on R-devel and Ivan Krylov's report and patch proposal in PR#18555.
‘readChar(., 4e8)’ no longer fails, thanks to Kodi Arfer's report (PR#18557).
‘R CMD check’ now warns about Rd files without an \alias, as long documented in ‘Writing R Extensions’ §1.3.1. This currently ignores files with \docType{package}.
‘contrib.url(character())’ now returns 0-length ‘character()’ as documented, which also avoids spurious warnings from ‘available.packages()’ et al. in the edge case of an empty vector of repository URLs.
Writing to a clipboard connection works again, fixing a regression in R 4.2.0 (PR#18332). Re-using a closed clipboard connection no longer issues a spurious warning about an ignored encoding argument.
‘substr(x, n, L) <- cc’ now works (more) correctly for multibyte UTF-8 strings ‘x’ when ‘L > nchar(x)’, thanks to a report and patch by ‘Architect 95’.
‘R CMD check’ notes when S4-style exports are used without declaring a strong dependence on package ‘methods’.
‘tools::checkRd()’ (used by ‘R CMD check’) detects more problems with \Sexpr-based dynamic content, including bad nesting of \Sexprs and invalid arguments.
‘tools::checkRd()’ now reports Rd titles and section names ending in a period; this is ignored by ‘R CMD check’ unless environment variable ‘_R_CHECK_RD_CHECKRD_MINLEVEL_’ is set to -5 or smaller.
‘tools::checkRd()’ no longer produces spurious notes about “unnecessary braces” from multi-line Rd results of \Sexpr macros.
Rd \Sexpr macros with nested #ifdef conditionals were not processed.
Arguments are now properly forwarded to methods on S4 generics with ... in the middle of their formal arguments. This was broken for the case when a method introduced an argument but did not include ... in its own formals. Thanks to Hervé Pagès for the report PR#18538.
‘getParseData(f)’ now also works for a function defined in the first of several ‘<pkg>/R/*.R’ source files, thanks to Kirill Müller's report and Duncan Murdoch's patch in PR#16756.
When R packages are built, typically by ‘R CMD build <pkg>’, the new ‘--user=<build_user>’ option overrides the (internally determined) user name, currently ‘Sys.info()["user"]’ or ‘LOGNAME’. This is a (modified) fulfillment of Will Landau's suggestion in PR#17530.
R on Windows (since Windows 10 2004) now uses the new Segment Heap allocator. This may improve performance of some memory intensive applications.
The C-level API version of R's ‘integrate()’, ‘Rdqags()’ in ‘Applic.h’, now returns the correct number of integrand evaluations ‘neval’, fixing PR#18515 reported and diagnosed by Stephen Wade.
The C prototypes for LAPACK calls ‘dspgv’ and ‘dtptrs’ in ‘R_exts/Lapack.h’ had one too many and one too few character length arguments - but this has not caused any known issues. To get the corrected prototypes, include
#include <Rconfig.h> // for PR18534fixed #ifdef PR18534fixed # define usePR18534fix 1 #endif #include <R_exts/Lapack.h>
in your C/C++ code (PR#18534).
Many of the checks of esoteric Internet operations and those using unreliable external sites have been moved to a new target that is not run by default and primarily intended for the core developers. To run them use
cd tests; make test-Internet-dev
‘.S3methods()’, typically called from ‘methods()’, again marks methods from package ‘base’ as ‘visible’.
Also, the visibility of non-‘base’ methods is again determined by the method's presence in ‘search()’.
‘tools::Rdiff()’ is now more robust against invalid strings, fixing installation tests on Windows without Rtools installed (PR#18530).
Fix (new) bug in ‘hcl.colors(2, *)’, by Achim Zeileis (PR#18523).
‘head(., <illegal>)’ and ‘tail(..)’ now produce more useful ‘"Error in ...."’ error messages, fixing PR#18362.
Package code syntax on Windows is checked in UTF-8 when UTF-8 is the native encoding.
‘na.contiguous(x)’ now also returns the first run, when it is at the beginning and there is a later one of the same length; reported to R-devel, including a fix, by Georgi Boshnakov. Further, by default, it modifies only an existing ‘attr(*,"tsp")’ but otherwise no longer sets one.
‘chol(<not pos.def>, pivot = <T|F>)’ now gives a correct error or warning message (depending on ‘pivot’), thanks to Mikael Jagan's (PR#18541).
Fix (new) bug in ‘hcl.colors(2, *)’, by Achim Zeileis (PR#18523).
Package code syntax on Windows is checked in UTF-8 when UTF-8 is the native encoding.
New startup option ‘--max-connections’ to set the maximum number of connections for the session. Defaults to 128 as before: allowed values up to 4096 (but resource limits may in practice restrict to smaller values).
‘S3method(<gen>, <class>, <func>)’ in the ‘NAMESPACE’ file now works (again) when ‘<func>’ is visible from the namespace, e.g., imported, or in base.