* Thu Feb 29 2024 Detlef Steuer - CHANGES IN R 4.3.3: NEW FEATURES: * iconv() now fixes up variant encoding names such as \"utf8\" case-insensitively. DEPRECATED AND DEFUNCT: * The legacy encoding = \"MacRoman\" is deprecated in pdf() and postscript(): support was incomplete in earlier versions of R. BUG FIXES: * 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\'e Pag`es for the report PR#18538. * 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() now works, fixing PR#18617, thanks to Ilia Kats. * seq.int() did not adequately check its length.out argument. * match(, .) is correct again for differing time zones, ditto for \"POSIXlt\", fixing PR#18618 reported by Bastian Klein. * drop.terms( *, dropx = <0-length>) now works, fixing PR#18563 as proposed by 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. * getS3method(\"t\", \"test\") no longer finds the t.test() function, fixing PR#18627. * pdf() and postscript() support for the documented Adobe encodings \"Greek\" and \"Cyrilllic\" was missing (although the corresponding Windows\' codepages could be used). * 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. * 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. * 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. * cov2cor(<0 x 0>) now works, fixing PR#18423 thanks to Mikael Jagan and Elin Waring. * cov2cor() and similar now give one warning instead of two, with better wording, fixing PR#18424 thanks to Mikael Jagan. * tools:: startDynamicHelp() now ensures port is in proper range, fixing PR#18645. * pbeta(x, a,b) is correct now for x=0 or 1 in the boundary cases where a or b or both are 0, fixing PR#18672 thanks to Michael Fay. * pmatch(x, table) for large table, also called for data frame row selection, dfrm[nm, ], is now interruptible, fixing PR#18656. * predict(, newdata= *) fix computing of nbasis, see Russ Lenth\'s comment 29 in PR#16158. * Added a work-around for a bug in macOS 14.3.1 and higher which prevents R plots in the Quartz Cocoa device from updating on screen. * Fri Nov 03 2023 Detlef Steuer - CHANGES IN R 4.3.2: NEW FEATURES: * 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. INSTALLATION on a UNIX-ALIKE: * 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). UTILITIES: * 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. BUG FIXES: * 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(, 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 AuthorsAATTR, 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. * tools::checkRd() no longer produces spurious notes about \"unnecessary braces\" from multi-line Rd results of \\Sexpr macros. * Fri Jun 16 2023 Detlef Steuer - CHANGES IN R 4.3.1: C-LEVEL FACILITIES: * 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 // for PR18534fixed [#]ifdef PR18534fixed [#] define usePR18534fix 1 [#]endif [#]include in your C/C++ code (PR#18534). INSTALLATION: * 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 BUG FIXES: * .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(., ) 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(, pivot = ) now gives a correct error or warning message (depending on pivot), thanks to Mikael Jagan\'s (PR#18541). * Fri Apr 21 2023 Detlef Steuer - CHANGES IN R 4.3.0: SIGNIFICANT USER-VISIBLE CHANGES: * Calling && or || with LHS or (if evaluated) RHS of length greater than one is now always an error, with a report of the form \'length = 4\' in coercion to \'logical(1)\' Environment variable _R_CHECK_LENGTH_1_LOGIC2_ no longer has any effect. NEW FEATURES: * The included BLAS sources have been updated to those shipped with LAPACK version 3.10.1. (This caused some platform-dependent changes to package check output.) And then to the sources from LAPACK version 3.11.0 (with changes only to double complex subroutines). * The included LAPACK sources have been updated to include the four Fortran 90 routines rather than their Fortran 77 predecessors. This may give some different signs in SVDs or eigendecompositions.. (This completes the transition to LAPACK 3.10.x begun in R 4.2.0.) * The LAPACK sources have been updated to version 3.11.0. (No new subroutines have been added, so this almost entirely bug fixes: Those fixes do affect some computations with NaNs, including R\'s NA.) * The parser now signals _classed_ errors, notably in case of the pipe operator |>. The error object and message now give line and column numbers, mostly as proposed and provided by Duncan Murdoch in PR#18328. * toeplitz() is now generalized for asymmetric cases, with a toeplitz2() variant. * xy.coords() and xyz.coords() and consequently, e.g., plot(x,y, log = \"y\") now signal a _classed_ warning about negative values of y (where log(.) is NA). Such a warning can be specifically suppressed or caught otherwise. * Regular expression functions now check more thoroughly whether their inputs are valid strings (in their encoding, e.g. in UTF-8). * The performance of grep(), sub(), gsub() and strsplit() has been improved, particularly with perl = TRUE and fixed = TRUE. Use of useBytes = TRUE for performance reasons should no longer be needed and is discouraged: it may lead to incorrect results. * apropos() gains an argument dot_internals which is used by the completion (help(rcompgen)) engine to also see base internals such as .POSIXct(). * Support in tools::Rdiff() for comparing uncompressed PDF files is further reduced - see its help page. * qqplot(x, y, ...) gains conf.level and conf.args arguments for computing and plotting a confidence band for the treatment function transforming the distribution of x into the distribution of y (Switzer, 1976, _Biometrika_). Contributed by Torsten Hothorn. * Performance of package_dependencies() has been improved for cases when the number of dependencies is large. * Strings newly created by gsub(), sub() and strsplit(), when any of the inputs is marked as \"bytes\", are also marked as \"bytes\". This reduces the risk of creating invalid strings and accidental substitution of bytes deemed invalid. * Support for readLines(encoding = \"bytes\") has been added to allow processing special text files byte-by-byte, without creating invalid strings. * iconv(from = \"\") now takes into account any declared encoding of the input elements and uses it in preference to the native encoding. This reduces the risk of accidental creation of invalid strings, particularly when different elements of the input have different encoding (including \"bytes\"). * Package repositories in getOption(\"repos\") are now initialized from the repositories file when utils is loaded (if not already set, e.g., in .Rprofile). (From a report and patch proposal by Gabriel Becker in PR#18405.) * compactPDF() gets a verbose option. * type.convert() and hence read.table() get new option tryLogical = TRUE with back compatible default. When set to false, converts \"F\" or \"T\" columns to character. * Added new unit prefixes \"R\" and \"Q\" for abbreviating (unrealistically large) sizes beyond 10^{27} in standard = \"SI\", thanks to Henrik Bengtsson\'s PR#18435. * as.data.frame()\'s default method now also works fine with atomic objects inheriting from classes such as \"roman\", \"octmode\" and \"hexmode\", such fulfilling the wish of PR#18421, by Benjamin Feakins. * The as.data.frame.vector() utility now errors for wrong-length row.names. It warned for almost six years, with \"Will be an error!\". * sessionInfo() now also contains La_version() and reports codepage and timezone when relevant, in both print() and toLatex() methods which also get new option tzone for displaying timezone information when locale = FALSE. * New function R_compiled_by() reports the C and Fortran compilers used to build R, if known. * predict(, newdata = *) no longer unnecessarily creates an offset of all 0s. * solve() for complex inputs now uses argument tol and by default checks for \'computational singularity\' (as it long has done for numeric inputs). * predict(, newdata= *) now obeys a new argument rankdeficient, with new default \"warnif\", warning only if there are non-estimable cases in newdata. Other options include rankdeficient = \"NA\", predicting NA for non-estimable newdata cases. This addresses PR#15072 by Russ Lenth and is based on his original proposal and discussions in PR#16158 also by David Firth and Elin Waring. Still somewhat experimental. * Rgui console implementation now works better with the NVDA screen reader when the full blinking cursor is selected. The underlying improvements in cursor handling may help also other screen readers on Windows. * The drop-field control in GraphApp can now be left with the TAB key and all controls can be navigated in the reverse order using the Shift+TAB key, improving accessibility of the Rgui configuration editor. * qnorm(, log.p=TRUE) is now fully accurate (instead of to \"only\" minimally five digits). * demo(error.catching) now also shows off withWarnings() and tryCatchWEMs(). * As an experimental feature the placeholder _ can now also be used in the rhs of a forward pipe |> expression as the first argument in an extraction call, such as _$coef. More generally, it can be used as the head of a chain of extractions, such as _$coef[[2]]. * Spaces in the environment variable used to choose the R session\'s temporary directory (TMPDIR, TMP and TEMP are tried in turn) are now fatal. (On Windows the \'short path\' version of the path is tried and used if that does not contain a space.) * all.equal.numeric() gets a new optional switch giveErr to return the numeric error as attribute. Relatedly, stopifnot(all.equal(a, b, ..)) is as \"smart\" now, as stopifnot(all.equal(....)) has been already, thus allowing customized all.equal() wrappers. * R on Windows is now able to work with path names longer than 260 characters when these are enabled in the system (requires at least Windows 10 version 1607). Packages should be updated to work with long paths as well, instead of assuming PATH_MAX to be the maximum length. Custom front-ends and applications embedding R need to update their manifests if they wish to allow this feature. See for more information. * \'Object not found\' and \'Missing argument\' errors now give a more accurate error context. Patch provided by Lionel Henry in PR#18241. * The AATT operator is now an S3 generic. Based on contributions by Tomasz Kalinowski in PR#18482. * New generic chooseOpsMethod() provides a mechanism for objects to resolve cases where two suitable methods are found for an Ops Group Generic. This supports experimenting with alternative object systems. Based on contributions by Tomasz Kalinowski in PR#18484. * inherits(x, what) now accepts values other than a simple character vector for argument what. A new generic, nameOfClass(), is called to resolve the class name from what. This supports experimenting with alternative object systems. Based on contributions by Tomasz Kalinowski in PR#18485. * Detection of BLAS/LAPACK in use (sessionInfo()) with FlexiBLAS now reports the current backend. * The \"data.frame\" method for subset() now warns about extraneous arguments, typically catching the use of = instead of == in the subset expression. * Calling a:b when numeric a or b is longer than one may now be made into an error by setting environment variable _R_CHECK_LENGTH_COLON_ to a true value, along the proposal in PR#18419 by Henrik Bengtsson. * density(x, weights = *) now warns if automatic bandwidth selection happens without using weights; new optional warnWbw may suppress the warning. Prompted by Christoph Dalitz\' PR#18490 and its discussants. * rm(list = *) is faster and more readable thanks to Kevin Ushey\'s PR#18492. * The plot.lm() function no longer produces a normal Q-Q plot for GLMs. Instead it plots a half-normal Q-Q plot of the absolute value of the standardized deviance residuals. * The print() method for class \"summary.glm\" no longer shows summary statistics for the deviance residuals by default. Its optional argument show.residuals can be used to show them if required. * The tapply() function now accepts a data frame as its X argument, and allows INDEX to be a formula in that case. by.data.frame() similarly allows INDICES to be a formula. * The performance of df[j] <- value (including for missing j) and write.table(df) has been improved for data frames df with a large number of columns. (Thanks to Gabriel Becker\'s PR#18500, PR#18503 and discussants, prompted by a report from Toby Dylan Hocking on the R-devel mailing list.) * The matrix multiply operator % *% is now an S3 generic, belonging to new group generic matrixOps. From Tomasz Kalinowski\'s contribution in PR#18483. * New function array2DF() to convert arrays to data frames, particularly useful for the list arrays created by tapply(). DATES and TIMES: * On platforms where (non-UTC) datetimes before 1902 (or before 1900 as with system functions on recent macOS) are guessed by extrapolating time zones from 1902-2037, there is a warning at the first use of extrapolation in a session. (As all time zones post 2037 are extrapolation, we do not warn on those.) * (Platforms using --with-internal-tzone, including Windows and by default macOS). How years are printed in dates or date-times can be controlled by environment variable R_PAD_YEARS_BY_ZERO. The default remains to pad to 4 digits by zeroes, but setting value no gives no padding (as used by default by glibc). * strftime() tries harder to determine the offset for the \"%z\" format, and succeeds on the mainstream R platforms. * strftime() has a limit of 2048 bytes on the string produced - attempting to exceed this is an error. (Previously it silently truncated at 255 bytes.) * sessionInfo() records (and by default prints) the system time zone as part of the locale information. Also, the source (system/internal) of the date-time conversion and printing functions. * Objects of class \"POSIXlt\" created in this version of R always have 11 components: component zone is always set, and component gmtoff is set for times in UTC and usually set on the (almost all) platforms which have C-level support, otherwise is NA. * There are comprehensive validity checks on the structure of objects of class \"POSIXlt\" when converting (including formatting and printing). (This avoids mis-conversions of hand-crafted objects.) * There is some support for using the native date-time routines on macOS: this is only viable on recent versions (e.g. 12.6 and 13) and does get wrong some historical changes (before 1900, during WWII). Use of --with-internal-tzone remains the default. * as.POSIXct() and as.POSIXlt(.) (without specifying origin) now work. So does as.Date(). * as.Date.POSIXct(., tz) now treats several tz values, notably \"GMT\" as equivalent to \"UTC\", proposed and improved by Michael Chirico and Joshua Ulrich in PR#17674. * Experimental balancePOSIXlt() utility allows using \"ragged\" and or out-of-range \"POSIXlt\" objects more correctly, e.g., in subsetting and subassignments. Such objects are now documented. More experimentally, a \"POSIXlt\" object may have an attribute \"balanced\" indicating if it is known to be filled or fully balanced. * Functions axis.Date() and axis.POSIXct() are rewritten to gain better default tick locations and better default formats by using prettyDate(). Thanks to Swetlana Herbrandt. * The mapping of Windows\' names for time zones to IANA\'s \'Olson\' names has been updated. When ICU is available (it is by default), it is used to get a mapping for the current region set in Windows. This can be overridden by setting environment variable TZ to the desired Olson name - see OlsonNames() for those currently available. GRAPHICS: * The graphics engine version, R_GE_version, has been bumped to 16 and so packages that provide graphics devices should be reinstalled. * The grDevices and grid packages have new functions for rendering typeset glyphs, primarily: grDevices::glyphInfo() and grid::grid.glyph(). Rendering of typeset glyphs is only supported so far on the Cairo-based graphics devices and on the pdf() and quartz() devices. * The defined behaviour for \"clear\" and \"source\" compositing operators (via grid::grid.group()) has been changed (to align better with simple interpretation of original Porter-Duff definitions). * Support for gradients, patterns, clipping paths, masks, groups, compositing operators, and affine transformations has been added to the quartz() device. INSTALLATION on a UNIX-ALIKE: * A system installation of generic LAPACK 3.10.0 or later will be preferred to the version in the R sources. configure option --with-lapack=no (equivalently --without-lapack) forces compilation of the internal LAPACK sources. If --with-lapack is not specified, a system liblapack is looked for and used if it reports version 3.10.0 or later and does not contain BLAS routines. Packages using LAPACK will need to be reinstalled if this changes to using an external library. * On aarch64 Linux platforms using GCC, configure now defaults to - fPIC (instead of -fpic), as desired in PR#18326. * configure now checks conversion of datetimes between POSIXlt and POSIXct around year 2020. Failure (which has been seen on platforms missing tzdata) is fatal. * If configure option --with-valgrind-instrumentation is given value 1 or 2, option --with-system-valgrind-headers is now the default and ignored (with a warning). It is highly recommended that the system headers are installed alongside valgrind: they are part of its packaging on some Linux distributions and packaged separately (e.g. in the valgrind-devel RPM) on others. configure will give a warning if they are not found. The system headers will be required in a future release of R to build with valgrind instrumentation. * libcurl 8.x is now accepted by configure: despite a change in major version number it changes neither API nor ABI. INSTALLATION on WINDOWS: * The makefiles and installer scripts for Windows have been tailored to Rtools43, an update of the Rtools42 toolchain. It is based on gcc 12 and newer versions of MinGW-W64, binutils and libraries. At this time R-devel can still be built using Rtools42 without changes, but when R-devel is installed via the installer, it will by default look for Rtools43. * Old make targets rsync-extsoft and 32-bit ones that are no longer needed have been removed. * Default builds (including for packages) no longer select C99. Thus the C standard used is the default for the compiler, which for the toolchain in Rtools43 is C17. (This is consistent with Unix builds.) PACKAGE INSTALLATION: * The default C++ standard has been changed to C++17 where available (which it is on all currently checked platforms): if not C++14 or C++11 is used if available otherwise C++ is not supported. * USE_FC_LEN_T is the default: this uses the correct (compiler-dependent) prototypes for Fortran BLAS/LAPACK routines called from C/C++, and requires adjustment of many such calls - see \'Writing R Extensions\' SS6.6.1. * There is initial support for C++23 as several compilers are now supporting -std=c++23 or -std=c++2b or similar. As for C++20, there no additional configure checks for C++23 features beyond a check that the compiler reports a __cplusplus value greater than that in the C++20 standard. C++ feature tests should be used. * There is support for a package to indicate the version of the C standard which should be used to compile it, and for the installing user to specify this. In most cases R defaults to the C compiler\'s default standard which is C17 (a `bug-fix\' of C11) - earlier versions of R or compilers may have defaulted to C99. Current options are: USE_C17 Use a standard that is at most C17. The intention is to allow legacy packages to still be installed when later C standards become the default, including packages using new keywords as identifiers or with K&R-style function declarations. This will use C17 if available, falling back to C11. USE_C90 Use the C90 (aka C89) standard. (As that standard did not require compilers to identify that version, all we can verify is that the compiler does not claim to be using a later standard. It may accept C99 features - for example clang accepts // to make comments.) USE_C99 Use the C99 standard. This should be rarely needed - it avoids the few new features of C11/C17 which can be useful if a package assumes them if C17 is specified and they are not implemented. USE_C23 Use C23 (or in future, later). Compiler/library support for C23 is still being implemented, but LLVM clang from 15.0.0 and the upcoming GCC 13 have quite extensive support. These can be specified as part of the SystemRequirements field in the package\'s DESCRIPTION file or _via_ options --use-C17 and so on of R CMD INSTALL and R CMD SHLIB. For further details see \"Writing R Extensions\" SS1.2.5. * (Windows) A src/Makefile.ucrt or src/Makefile.win file is now included after R_HOME/etcR_ARCH/Makeconf and so no longer needs to include that file itself. Installation of a package with such a file now uses a site Makevars file in the same way as a package with a src/Makevars.win file would. * configure is now passed crucial variables such as CC and CFLAGS in its environment, as many packages were not setting them (as documented in \'Writing R Extensions\' SS1.2). This has most effect where configure is used to compile parts of the package - most often by cmake or libtool which obfuscate the actual compile commands used. Also used for configure.win and configure.ucrt on Windows. FORTRAN FLAGS: * The flag -fno-optimize-sibling-calls is no longer forced for gfortran 7 and later. It should no longer be needed now using \'hidden\' character-length arguments when calling BLAS/LAPACK routines from C/C++ is the default even for packages. (Unless perhaps packages call Fortran code from C/C++ without using R\'s headers and without allowing for these arguments.) C-LEVEL FACILITIES: * The deprecated S-compatibility macros DOUBLE_ * in R_ext/Constants.h (included by R.h) have been removed. * The deprecated legacy typedefs of Sint and Sfloat in header R.h are no longer defined, and that header no longer includes header limits.h from C nor climits from C++. * New macro CAD5R() is provided in Rinternals.h and used in a few places in the R sources. * ALTREP now supports VECSXP vectors. Contributed by Gabor Csardi in PR#17620. * The Rcomplex definition (in header R_ext/Complex.h) has been extended to prevent possible mis-compilation when interfacing with Fortran (PR#18430). The new definition causes compiler warnings with static initializers such as {1, 2}, which can be changed to {.r=1, .i=2}. Using the new definition from C++ depends on compiler extensions supporting C features that have not been incorporated into the C++ standards but are available in g++ and clang++: this may result in C++ compiler warnings but these have been worked around for recent versions of common compilers (GCC, Apple/LLVM clang, Intel). It is intended to change the inclusion of header R_ext/Complex.h by other R headers, so C/C++ code files which make use of Rcomplex should include that header explicitly. UTILITIES: * R CMD check does more checking of package .Rd files, warning about invalid email addresses and (some) invalid URIs and noting empty \\item labels in description lists. * R CMD check now also reports problems when reading package news in md (file NEWS.md) and (optionally) plain text (file NEWS) formats. * _R_CHECK_TIMINGS_ defaults to a value from the environment even for R CMD check --as-cran; this allows for exceptionally fast or slow platforms. It now applies to checking PDF and HTML versions of the manuals, and \'checking CRAN incoming feasibility\'. * R CMD check can optionally (but included in --as-cran) check whether HTML math rendering _via_ KaTeX works for the package .Rd files. * Non-interactive debugger invocations can be trapped by setting the environment variable _R_CHECK_BROWSER_NONINTERACTIVE_ to a true value. This is enabled by R CMD check --as-cran to detect the use of leftover browser() statements in the package. * The use of sprintf and vsprintf from C/C++ has been deprecated in macOS 13 and is a known security risk. R CMD check now reports (on all platforms) if their use is found in compiled code: replace by snprintf or vsnprintf respectively. [ *NB: * whether such calls get compiled into the package is platform-dependent.] * Where recorded at installation, R CMD check reports the C and Fortran compilers used to build R. It reports the OS in use (if known, as given by osVersion) as well as that R was built for. It notes if a C++ standard was specified which is older than the current default: many packages have used C++11 to mean \'not C++98\' - as C++11 is the minimum supported since R 4.0.0, that specification can probably be removed. * R CMD INSTALL reports the compilers (and on macOS, the SDK) used, and this is copied to the output of R CMD check. Where a C++ standard is specified, it is reported. * R CMD check\'s \'checking compilation flags in Makevars\' has been relaxed to accept the use of flags such as -std=f2008 in PKG_FFLAGS. * tools::buildVignettes() has a new argument skip, which is used by R CMD check to skip (and note) vignettes with unavailable \\VignetteDepends (PR#18318). * New generic .AtNames() added to enable class-specific completions after AATT. The formerly internal function findMatches() is now exported, mainly for use in methods for .DollarNames() and .AtNames(). DEPRECATED AND DEFUNCT: * default.stringsAsFactors() is defunct. * Calling as.data.frame.() directly (for 12 atomic classes) is going to be formally deprecated, currently activated by setting the environment variable _R_CHECK_AS_DATA_FRAME_EXPLICIT_METHOD_ to non-empty, which also happens in R CMD check --as-cran. BUG FIXES: * Hashed environments with sizes less than 5 can now grow. (Reported to R-devel by Duncan Garmonsway.) * as.character(, deparse = TRUE) failed to re-escape curly braces in LaTeX-like text. (Reported by Hadley Wickham in PR#18324.) * library() now passes its lib.loc argument when requiring Depends packages; reported (with fix) in PR#18331 by Mikael Jagan. * R CMD Stangle: improved message about \'Output\' files. * head(x, n) and tail(x, n) now signal an error if n is not numeric, instead of incidentally \"working\" sometimes returning all of x. Reported and discussed by Colin Fay, in PR#18357. * The \"lm\" method for summary() now gives the correct F-statistic when the model contains an offset. Reported in PR#18008. * C() and `contrasts<-`() now preserve factor level names when given a function object (as opposed a function name which did preserve names). Reported in PR#17616. * c(a = 1, 2)[[]] no longer matches 2 but rather signals a _classed_ error. Reported and analysed by Davis Vaughan in PR#18367, a duplicate of PR#18004, by Jan Meis et al. For consistency, NULL[[]] is also erroneous now. x[[]] <- v gives an error of the same class \"MissingSubscriptError\". * The relist() function of utils now supports NULL elements in the skeleton (PR#15854). * ordered(levels = *) (missing x) now works analogously to factor(, ordered=TRUE); reported (with fix) by Achim Zeileis in PR#18389. * User-defined Rd macro definitions can now span multiple lines, thanks to a patch from Duncan Murdoch. Previously, the Rd parser silently ignored everything after the first line. * Plain-text help (tools::Rd2txt()) now preserves an initial blank line for text following description list items. * tools::Rd2HTML() and tools::Rd2latex() no longer split \\arguments and \\value lists at Rd comments. * tools::Rd2latex() now correctly handles optional text outside \\items of argument lists as well as bracketed text at the beginning of sections, e.g., \\value{[NULL]}. * as.character() now behaves more in line with the methods for atomic vectors such as numbers, and is no longer influenced by options(). Ditto for as.character(). The as.character() method gets arguments digits and OutDec with defaults _not_ depending on options(). Use of as.character( *, format = .) now warns. * Similarly, the as.character.hexmode() and *.octmode() methods also behave as good citizen methods and back compatibility option keepStr = TRUE. * The as.POSIXlt() and as.POSIXct() default methods now do obey their tz argument, also in this case. * as.POSIXlt() now does apply a tz (time zone) argument, as does as.POSIXct(); partly suggested by Roland Fuss on the R-devel mailing list. * as.Date.POSIXlt(x) now also works when the list components are of unequal length, aka \"partially filled\" or \"ragged\". * expand.model.frame() looked up variables in the wrong environment when applied to models fitted without data. Reported in PR#18414. * time() now (also) uses the ts.eps = getOption(\"ts.eps\") argument and thus by default rounds values very close to the start (or end) of a year. Based on a proposal by Andre\"i V. Kostyrka on R-help. * Printing of a factanal() result with just one factor and sort = TRUE now works regularly, fixing PR#17863 by Timothy Bates, thanks to the \'R Contributors\' working group. * Printing 0-length objects of class \"factor\", \"roman\", \"hexmode\", \"octmode\", \"person\", \"bibentry\", or \"citation\" now prints something better, one of which fixes PR#18422, reported by Benjamin Feakins. * Sys.timezone() queries timedatectl only if systemd is loaded; addressing a report by Jan Gorecki in PR#17421. * The formula method of cor.test() had scoping problems when environment(formula) was not the calling environment; reported with a patch proposal by Mao Kobayashi in PR#18439. * attach() of an environment with active bindings now preserves the active bindings. Reported by Kevin Ushey in PR#18425. * BLAS detection now works also with system-provided libraries not available as regular files. This fixes detection of the Accelerate framework on macOS since Big Sur. Reported by David Novgorodsky. * download.file() gives a helpful error message in case of an invalid download.file.method option, thanks to Colin Fay\'s report in PR#18455. * Sporadic crashes of Rterm when using completion have been fixed. * Rprof() is now more reliable. A livelock in thread initialization with too short sampling interval has been fixed on macOS. A deadlock in using the C runtime has been fixed on Windows. A potential deadlock has been prevented on Unix. * Cursor placement in Rgui now works even after a fixed-width font is selected. * Mandatory options (options()) are now set on startup so that saving and restoring them always works (PR#18372). * Package installation, R CMD INSTALL or install.packages( *), now parses each of the /R/ *.R files individually instead of first concatenating and then parse()ing the large resulting file. This allows parser or syntax errors to be diagnosed with correct file names and line numbers, thanks to Simon Dedman\'s report and Bill Dunlap\'s patch in PR#17859. This _does_ require syntactically self contained R source files now, fixing another inadvertent bug. * predict.lm() now finds the offset in the correct environment, thanks to Andr\'e Gillibert\'s report and patch in PR#18456. * getInitial() now finds the selfStart model in the correct environment. (Reported by Ivan Krylov in PR#18368.) * Fix for possible segfault when using recently-added graphics features, such as gradients, clipping paths, masks, and groups with pdf(file=NULL). * class(m) <- class(m) no longer changes a matrix m by adding a class _attribute_. * packageDate(pkg) now only warns once if there is no pkg. * When ts() creates a multivariate time series, \"mts\", it also inherits from \"array\" now, and is.mts() is documented _and_ stricter. * Rd2txt() now preserves line breaks of \\verb Rd content and from duplicated \\cr. The former also fixes the rendering of verbatim output from Rd \\Sexpr in plain-text help. * uniroot(f, interval) should no longer wrongly converge _outside_ the interval in some cases where abs(f(x)) == Inf for an x at the interval boundary, thanks to posts by Ben Bolker and Serguei Sokol on R-devel. * Vectorized alpha handling in palette functions such as in gray(), rainbow(), or hcl.colors() works correctly now, thanks to Achim Zeileis\' report and patch in PR#18476. * Formatting and print()ing of bibentry objects has dropped the deprecated citation.bibtex.max argument, such that the bibtex argument\'s default for print.bibentry() depends directly on the citation.bibtex.max option, whereas in format.bibentry() the option no longer applies. * Attempting to use a character string naming a foreign function entry point in a foreign function call in a package will now signal an error if the packages has called R_forceSymbols to specify that symbols must be used. * An error in table() could permanently set options(warn=2) promoting all subsequent warnings to errors. * The sigma() function gave misleading results for binary GLMs. A new method for objects of class \"glm\" returns the square root of the estimate of the dispersion parameter using the same calculation as summary.glm(). * bs() and ns() in the (typical) case of automatic knot construction, when some of the supposedly inner knots coincide with boundary knots, now moves them inside (with a warning), building on PR#18442 by Ben Bolker. * R CMD on Windows now skips the site profile with --no-site-file and --vanilla even when R_PROFILE is set (PR#18512, from Kevin Ushey). * Mon Apr 10 2023 Detlef Steuer - add patch to build with libcurl >= 8 * Wed Mar 15 2023 Detlef Steuer - CHANGES IN R 4.2.3: C-LEVEL FACILITIES: * The definition of DL_FUNC in R_ext/Rdynload.h has been changed to be fully C-compliant. This means that functions loaded _via_ for example R_GetCCallable need to be cast to an appropriate type if they have any arguments. * .Machine has a new element sizeof.time_t to identify old systems with a 32-bit type and hence a limited range of date-times (and limited support for dates millions of years from present). PACKAGE INSTALLATION: * (Windows) The default C++ standard had accidentally been left at C++11 when it was changed to C++14 on Unix. BUG FIXES: * As \"POSIXlt\" objects may be \"partially filled\" and their list components meant to be recycled, length() now is the length of the longest component. * as.POSIXlt.Date() could underflow for dates in the far past (more than half a million years BCE). * as.Date.POSIXlt(x) would return \"1970-01-01\" instead of NA in R 4.2.2, e.g., for x <- as.POSIXlt(c(\"2019-01-30\",\"2001-1-1\")) x$mon <- c(0L, NA); as.Date(x) * R CMD check failed to apply enabled _R_CHECK_SUGGESTS_ONLY_ to examples and vignettes (regression in R 4.2.0). * R CMD check did not re-build vignettes in separate processes by default (regression in R 4.2.0). * Running examples from HTML documentation now restores previous knitr settings and options (PR#18420). * Quartz: fonts are now located using Core Graphics API instead of deprecated ATS which is no longer supported in the macOS 13 SDK (PR#18426). This also addresses an issue where the currently used font in the Quartz device context was not correctly retained. * (Windows) Math symbols in text drawing functions are again rendered correctly (PR#18440). This fixes a regression in R 4.2.1 caused by a fix in PR#18382 which uncovered an issue in GraphApp due to which the symbol charset was not used with TT Symbol font face. * (Windows) Installing a package with a src/Makefile.{win,ucrt} file includes ~/.R/Makevars.win64 in the search for user makevars, as documented in \"R Installation and Administration\" and done for packages with a src/Makevars.{win,ucrt} file. * format(, \"....%OS\") with n > 0 no longer accidentally uses the unbalanced seconds, thanks to Suharto Anggono\'s report (including patch) in PR#18448. * solve.default(a, b) works around issues with some versions of LAPACK when a contains NA or NaN values. * When UseMethod() cannot dispatch, it no longer segfaults producing the error message in case of a long class(), thanks to Joris Vankerschaver\'s report (including patch) in PR#18447. * When example(foo, ..) produces graphics on an interactive device it needs to open itself, it now leaves devAskNewPage() unchanged even when it was FALSE, thus fixing a 14 years old \'\'. * packageDescription() again catches errors from encoding conversions. This also fixes broken packageVersion() in C locale on systems where iconv does not support transliteration. * Mon Oct 31 2022 Detlef Steuer - CHANGES IN R 4.2.2: NEW FEATURES: * tools::Rdiff(useDiff = TRUE) checks for the presence of an external diff command and switches to useDiff = FALSE if none is found. This allows R CMD Rdiff to always work. * On Windows, environment variable R_LIBCURL_SSL_REVOKE_BEST_EFFORT can be used to switch to only \'best-effort\' SSL certificate revocation checks with the default \"libcurl\" download method. This reduces security, but may be needed for downloads to work with MITM proxies (PR#18379). * (macOS) The run-time check for libraries from XQuartz for X11 and Tcl/Tk no longer uses otool from the Apple Developer Tools (PR#18400). * The LaTeX style for producing the PDF manuals, Rd.sty, now loads the standard amsmath, amsfonts and amssymb packages for greater coverage of math commands in the Rd \\eqn and \\deqn macros. The \\mathscr LaTeX command is also provided (via the mathrsfs package, if available, or the amsfonts bundle otherwise), fulfilling the wish of PR#18398. * (Windows) The default format of readClipboard() and writeClipboard() has been changed to 13 (CF_UNICODETEXT). INSTALLATION on a UNIX-ALIKE: * The PDF manuals (if built) can be compacted by the new target make compact-pdf (at the top level or in directory doc/manual). * There is now configure support for LLVM clang 15 on Linux, which defaults to position-independent (PIE) executables whereas gfortran does not. * Many small changes to ease compilation (and suppress warnings) with LLVM clang 15. BUG FIXES: * Rscript -e would fail if stdin were closed (Reported by Henrik Bengtsson.) * qt( *, log.p=TRUE) in outer tails no longer produces NaN in its final steps, thus fixing PR#18360. * tools::Rd2latex() now escapes hashes and ampersands when writing URLs, fixing LaTeX errors with such URLs in \\tabular. * When isGeneric(f, fdef= *) is used with mismatching names, the warning is better understandable; reported (with fix) in PR#18370 by Gabe Becker. * poly(x, n) now works again (and is now documented) when x is a \"Date\" or \"POSIXct\" object, or of another class while fulfilling mode(x) == \"numeric\". This also enables poly(x, *, raw=TRUE) for such variables. Reported by Michael Chirico to R-devel. * write.table(), write.csv() and write.csv2() restore their numerical precision (internal equivalent of digits = 15) after an interrupt (PR#18384). * One can now read also byte FF from a clipboard connection (PR#18385). * source(\"\") and source(character()) now give more helpful error messages. * R CMD check --as-cran set _R_CHECK_TIMINGS_ too late to have the intended effect. * as.POSIXlt(x) now also works with very large dates x, fixing PR#18401 reported by Hannes M\"uhleisen. * Files can now be extracted even from very large zip archives (PR#18390, thanks to Martin Jakt). * Non-finite objects of class \"POSIXlt\" are now correctly coerced to classes \"Date\" and \"POSIXct\"; following up on the extension to format() them correctly. * Added methods for is.finite(), is.infinite() and is.nan() for \"POSIXlt\" date-time objects. * Thu Jun 23 2022 Detlef Steuer - CHANGES IN R 4.2.1: NEW FEATURES: * New function utils::findCRANmirror() to find out if a CRAN mirror has been selected, otherwise fallback to the main site. This behaves in the same way as tools::CRAN_package_db() and is intended for packages wishing to access CRAN for purposes other than installing packages. The need for this was shown by a day when the main CRAN website was offline and a dozen or so packages which had its URL hardcoded failed their checks. INSTALLATION on a UNIX-ALIKE: * The libraries searched for by --with-blas (without a value) now include BLIS (after OpenBLAS but before ATLAS). And on macOS, the Accelerate framework (after ATLAS). (This is patterned after the AX_BLAS macro from the Autoconf Archive.) * The included LAPACK sources have been updated to 3.10.1. UTILITIES: * The (full path to) the command tidy to be used for HTML validation can be set by environment variable R_TIDYCMD. * Setting environment variable _R_CHECK_RD_VALIDATE_RD2HTML_ to a false value will override R CMD check --as-cran and turn off HTML validation. This provides a way to circumvent a problematic tidy. The 2006 version that ships with macOS is always skipped. C-LEVEL FACILITIES: * The undocumented legacy declarations of Sint, Sfloat, SINT_MAX and SINT_MIN in header R.h are deprecated. BUG FIXES: * fisher.test(d) no longer segfaults for \"large\" d; fixing PR#18336 by preventing/detecting an integer overflow reliably. * tar(., files= *) now produces correctly the warning about invalid uid or gid of files, fixing PR#18344, reported by Martin Morgan. * tk_choose.files() with multi = FALSE misbehaved on paths containing spaces (PR#18334) (regression introduced in R 4.0.0). * sort(x, partial = ind, *) now works correctly notably for the non-default na.last = FALSE or TRUE, fixing PR#18335 reported by James Edwards. * Environment variable _R_CHECK_XREFS_REPOSITORIES_ is only used for checking .Rd cross-references in R CMD check (as documented) and not for other uses looking for a CRAN mirror. * The search for a CRAN mirror when checking packages now uses getOption(\"repos\") if that specifies a CRAN mirror, even when it does not also specify all three Bioconductor repositories (as was previously required). * The HTML code generated by tools::Rd2HTML() has been improved to pass tidy 5.8.0. * Fri Apr 22 2022 Detlef Steuer - CHANGES IN R 4.2.0: SIGNIFICANT USER-VISIBLE CHANGES: * The formula method of aggregate() now matches the generic in naming its first argument x (resolving PR#18299 by Thomas Soeiro). This means that calling aggregate() with a formula as a named first argument requires name formula in earlier versions of R and name x now, so portable code should not name the argument (code in many packages did). * Calling && or || with either argument of length greater than one now gives a warning (which it is intended will become an error). * Calling if() or while() with a condition of length greater than one gives an error rather than a warning. Consequently, environment variable _R_CHECK_LENGTH_1_CONDITION_ no longer has any effect. * Windows users should consult the WINDOWS section below for some profound changes including * Support for 32-bit builds has been dropped. * UTF-8 locales are used where available. * The default locations for the R installation and personal library folder have been changed. Thanks to Tomas Kalibera for months of work on the Windows port for this release. NEW FEATURES: * matrix(x, n, m) now warns in more cases where length(x) differs from n * m, as suggested by Abby Spurdle and Wolfgang Huber in Feb 2021 on the R-devel mailing list. This warning can be turned into an error by setting environment variable _R_CHECK_MATRIX_DATA_ to TRUE: R CMD check --as-cran does so unless it is already set. * Function file_test() in package utils gains tests for symlinks, readability and writability. * capabilities(\"libxml\") is now false. The description of capabilities(\"http/ftp\") now reflects that it refers to the default method, no longer the internal one. * simplify2array() gains an except argument for controlling the exceptions used by sapply(). * Environment variables R_LIBS_USER and R_LIBS_SITE are both now set to the R system default if unset or empty, and can be set to NULL to indicate an empty list of user or site library directories. * The warning for axis()(-like) calls in cases of relatively small ranges (typically in log-scale situations) is slightly improved _and_ suppressed from explicit calls to .axisPars() as has always been the intention. * The contrasts setter function `contrasts<-` gains an explicit default how.many = NULL rather than just using missing(how.many). * grid.pretty() gains a new optional argument n = 5. * There is a new function .pretty() with option bounds as a technical-utility version of pretty(). It and pretty() gain a new argument f.min with a better than back-compatible default. * Function grDevices::axisTicks() and related functions such as graphics::axis() work better, notably for the log scale; partly because of the pretty() improvements, but also because care is taken e.g., when ylim is finite but diff(ylim) is infinite. * nclass.FD() gains a digits option. * The R Mathlib internal C function bd0() (called indirectly from a dozen probability density and distribution functions such as dpois(), dbinom(), dgamma(), pgamma() _etc_) has been complemented by a more sophisticated and (mostly) more accurate C function ebd0(), currently called only by internal dpois_raw() improving accuracy for R level dpois() and potentially others calling it such as dnbinom(), dgamma() or pgamma(). (Thanks to Morten Welinder\'s PR#15628.) * write.ftable() gains sep = \" \" argument as suggested by Thomas Soeiro. * The names of the locale categories supported by R\'s Sys.getlocale() and Sys.setlocale() are now provided by variable .LC.categories in the base namespace. * The Date and POSIXt methods for hist() and the histogram method for plot() now also use the new default col = \"lightgray\" in consistency with the corresponding change to hist()\'s default for R 4.0.0. * hist.default() gains new fuzz argument, and the histogram plot method no longer uses fractional axis ticks when displaying counts (\"Frequency\"). * mapply() and hence Map() now also obey the \"max-or-0-if-any\" recycling rule, such that, e.g., Map(`+`, 1:3, 1[0]) is valid now. * as.character() for \"hexmode\" or \"octmode\" objects now fulfils the important basic rule as.character(x)[j] === as.character(x[j]). * The set utility functions, notably intersect() have been tweaked to be more consistent and symmetric in their two set arguments, also preserving a common mode. * substr(ch, start,end) <- new now e.g., preserves names(ch); ditto for substring(), thanks to a patch from Brodie Gaslam. * plot() gains a extend.ylim.f argument, in partial response to PR#15285; further PR#17784 is fixed thanks to several contributors and a patch by Elin Waring. The Cook\'s dist contours get customizable via cook.col and cook.lty with a different default color and their legend is nicer by default and customizable via cook.legendChanges. * Attempting to subset an object that is not subsettable now signals an error of class notSubsettableError. The non-subsettable object is contained in the object field of the error condition. * Subscript-out-of-bounds errors are now signaled as errors of class subscriptOutOfBoundsError. * Stack-overflow errors are now signaled as errors inheriting from class stackOverflowError. See ?stackOverflowError for more details. * New partly experimental Sys.setLanguage() utility, solving the main problem of PR#18055. * gettext() and gettextf() get a new option trim = TRUE which when set to false allows translations for strings such as \"Execution halted\ \" typical for C code. * An experimental implementation of hash tables is now available. See ?hashtab for more details. * identical() gains a extptr.as.ref argument for requesting that external pointer objects be compared as reference objects. * reorder() gets an argument decreasing which it passes to sort() for level creation; based on the wish and patch by Thomas Soeiro in PR#18243. * as.vector() gains a data.frame method which returns a simple named list, also clearing a long standing \'FIXME\' to enable as.vector(, mode=\"list\"). This breaks code relying on as.vector() to return the unchanged data frame. * legend() is now vectorized for arguments cex, x.intersp, and text.width. The latter can now also be specified as a vector (one element for each column of the legend) or as NA for computing a proper column wise maximum value of strwidth(legend). The argument y.intersp can be specified as a vector with one entry for each row of the legend. legend() also gains new arguments title.cex and title.font. Thanks to Swetlana Herbrandt. * Deparsing no longer remaps attribute names dim, dimnames, levels, names and tsp to historical S-compatible names (which structure() maps back). * sample() and sample.int() have additional sanity checks on their size and n arguments. all.equal.numeric() gains a sanity check on its tolerance argument - calling all.equal(a, b, c) for three numeric vectors is a surprisingly common error. mean(na.rm =), rank(na.last =), barplot(legend.text =), boxplot(), contour(drawlabels =), polygon(border =) and methods::is(class2 =) have more robust sanity checks on their arguments. R CMD Rd2pdf (used by R CMD check) has a more robust sanity check on the format of \\alias{} commands. * psigamma(x, deriv) for negative x now also works for deriv = 4 and 5; their underlying C level dpsifn() is documented in \'Writing R Extensions\'. * The HTML help system now uses HTML5 (wish of PR#18149). * ks.test() now provides exact p-values also with ties and MC p-values in the two-sample (Smirnov) case. By Torsten Hothorn. * ks.test() gains a formula interface, with y ~ 1 for the one-sample (Kolmogorov) test and y ~ group for the two-sample (Smirnov) test. Contributed by Torsten Hothorn. * The return value from ks.test() now has class c(\"ks.test\", \"htest\") - packages using try() need to take care to use inherits() and not == on the class. * New functions psmirnov(), qsmirnov() and rsmirnov() in package stats implementing the asymptotic and exact distributions of the two-sample Smirnov statistic. * iconv() now allows sub = \"c99\" to use C99-style escapes for UTF-8 inputs which cannot be converted to encoding to. * In a forward pipe |> expression it is now possible to use a named argument with the placeholder _ in the rhs call to specify where the lhs is to be inserted. The placeholder can only appear once on the rhs. * The included LAPACK sources have been updated to version 3.10.0, except for the four Fortran 77 routines which 3.10.0 has re-implemented in Fortran 90 (where the older versions have been retained as the R build process does not support Fortran 90). * path.expand() and most other uses of tilde expansion now warn if a path would be too long if expanded. (An exception is file.exists(), which silently returns false.) * trunc(, *) now supports units = \"months\" or \"years\" for consistency with the POSIXt method, thanks to Dirk Eddelbuettel\'s proposal in PR#18099. * list2DF() now checks that its arguments are of the same length, rather than use recycling. * The HTML help system has several new features: LaTeX-like math can be typeset using either KaTeX or MathJax, usage and example code is highlighted using Prism, and for dynamic help the output of examples and demos can be shown within the browser if the knitr package is installed. These features can be disabled by setting the environment variable _R_HELP_ENABLE_ENHANCED_HTML_ to a false value. GRAPHICS: * The graphics engine version, R_GE_version, has been bumped to 15 and so packages that provide graphics devices should be reinstalled. * The grid package now allows the user to specify a \"vector\" of pattern fills. The fill argument to gpar() accepts a list of gradients and/or patterns and the functions linearGradient(), radialGradient(), and pattern() have a new group argument. Points grobs (data symbols) can now also have a pattern fill. The grobCoords() function now returns a more informative and complex result. * The grid package has new functions for drawing isolated groups: grid.group(), grid.define(), and grid.use(). These functions add compositing operators and affine transformations to R\'s graphics capabilities. The grid package also has new functions for stroking and filling paths: grid.stroke(), grid.fill(), and grid.fillStroke(). A new function as.path() allows the user to specify the fill rule for a path that is to be used for clipping, stroking, or filling; available options are \"winding\" and \"evenodd\". A new function as.mask() allows the user to specify the type of a mask; available options are \"alpha\" and \"luminance\". These new features are only supported so far (at most) on the Cairo-based graphics devices and on the pdf() device. * dev.capabilities() reports on device support for the new features. * par() now warns about unnamed non-character arguments to prevent misuse such as {usr <- par(\"usr\"); par(usr)}. INSTALLATION: * Facilities for accessing ftp:// sites are no longer tested (except _pro tem_ for curlGetHeaders()) as modern browsers have removed support. * R can now be built with DEFS = -DSTRICT_R_HEADERS . PACKAGE INSTALLATION: * R CMD INSTALL no longer tangles vignettes. This completes an R CMD build change in R 3.0.0 and affects packages built before R 3.0.2. Such packages should be re-made with R CMD build to have the tangled R code of vignettes shipped with the tarball. * USE_FC_LEN_T will become the default: this uses the correct prototypes for Fortran BLAS/LAPACK routines called from C/C++, and requires adjustment of most such calls - see \'Writing R Extensions\' SS6.6.2. (This has been supported since R 3.6.2.) * Package installation speed for packages installed with keep.source has been improved. This resolve the issue reported by Ofek Shilon in PR#18236. UTILITIES: * R CMD check can optionally report files/directories left behind in home, /tmp (even though TMPDIR is set) and other directories. See the \"R Internals\" manual for details. * R CMD check now reports byte-compilation errors during installation. These are not usually fatal but may result in parts of the package not being byte-compiled. * _R_CHECK_DEPENDS_ONLY_ can be applied selectively to examples, tests and/or vignettes in R CMD check: see the \"R Internals\" manual. * _R_CHECK_SRC_MINUS_W_IMPLICIT_ now defaults to true: recent versions of Apple clang on macOS have made implicit function declarations in C into a compilation error. * R CMD check --as-cran makes use of the environment variable AUTORECONF. See the \"R Internals\" manual SS8 for further details. * R CMD check --use-valgrind also uses valgrind when re-building vignettes as some non-Sweave vignettes unhelpfully comment out all their code when R CMD check runs vignettes. * Errors in re-building vignettes (unless there are LaTeX errors) are reported by R CMD check as ERROR rather than WARNING when running vignettes has been skipped (as it frequently is in CRAN checks and by --as-cran). * R CMD Rd2pdf gains a --quiet option that is used by R CMD build when building the PDF package manual. * R CMD Rd2pdf now always runs LaTeX in batch mode, consistent with Texinfo >= 6.7. The --batch option is ignored. * R CMD build and R CMD check now include the Rd file name and line numbers in the error message of an \\Sexpr evaluation failure. * For packages using the \\doi Rd macro (now an install-time \\Sexpr) but no other dynamic Rd content, R CMD build now produces a smaller tarball and is considerably faster - skipping temporary package installation. C-LEVEL FACILITIES: * The non-API header R_ext/R-ftp-http.h is no longer provided, as the entry points it covered are now all defunct. * A number of non-API declarations and macro definitions have been moved from the installed header Rinternals.h to the internal header Defn.h. Packages that only use entry points and definitions documented to be part of the API as specified in \'Writing R Extensions\' SS6 should not be affected. * The macro USE_RINTERNALS no longer has any effect when compiling package code. Packages which also use R_NO_REMAP will need to ensure that the remapped names are used for calls to API functions that were formerly also made available as macros. * The deprecated legacy S-compatibility macros PROBLEM, MESSAGE, ERROR, WARN, WARNING, RECOVER, ... are no longer defined in R_exts/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. * Header R_ext/Constants.h (included by R.h) when included from C++ now includes the C++ header cfloat rather than the C header float.h (now possible as C++11 is required). * The legacy S-compatibility macros DOUBLE_ * in R_ext/Constants.h (included by R.h) are deprecated. * The deprecated S-compatibility macros SINGLE_ * in R_ext/Constants.h (included by R.h) have been removed. * R_Calloc, R_Free and R_Realloc are preferred to their unprefixed forms and error messages now use the prefix. These forms were introduced in R 3.4.0 and are available even when STRICT_R_HEADERS is defined. * rmultinom has been documented in \'Writing R Extensions\' SS6 so is now part of the R API. * Similarly, Rtanpi, called from R level tanpi() is now part of the R API. * The long-deprecated, undocumented and non-API entry point call_R is no longer declared in R_ext/RS.h (included by R.h). * The header S.h which has been unsupported since Jan 2016 has been removed. Use R.h instead. DEPRECATED AND DEFUNCT: * The (non-default and deprecated) method = \"internal\" for download.file() and url() no longer supports http:// nor ftp:// URIs. (It is used only for file:// URIs.) On Windows, download.file(method = \"wininet\") no longer supports ftp:// URIs. (It is no longer the default method, which is \"libcurl\" and does.) On Windows, the deprecated method = \"wininet\" now gives a warning for http:// and https:// URIs for both download.file() and url(). (It is no longer the default method.) * On Windows, the command-line option --max-mem-size and environment variable R_MAX_MEM_SIZE are defunct. The memory allocation limit was important for 32-bit builds, but these are no longer supported. * default.stringsAsFactors() is now formally deprecated, where that was only mentioned on its regular help page, previously. So it now gives a warning if called. * unix.time() is defunct now; it had been deprecated since R 3.4.0. BUG FIXES: * Setting digits = 0 in format(), print.default() (and hence typically print()) or options() is again invalid. Its behaviour was platform-dependent, and it is unclear what \"zero significant digits\" should mean (PR#18098). * Messages from C code in the cairo section of package grDevices are now also offered for translation, thanks to Michael Chirico\'s PR#18123. * mean(x) with finite x now is finite also without \"long.double\" capability. * R CMD Rd2pdf no longer leaves an empty build directory behind when it aborts due to an already existing output file. (Thanks to Sebastian Meyer\'s PR#18141.) * density(x, weights = w, na.rm = TRUE) when anyNA(x) is true, now removes weights \"in parallel\" to x, fixing PR#18151, reported by Matthias Gondan. Additionally, it gets a subdensity option. * Conversion of \\Sexpr[]{} to LaTeX or HTML no longer produces long blocks of empty lines when itself contains several lines all producing empty output. Thanks to a report and patch by Ivan Krylov posted to R-devel. * R CMD build no longer fails if a package vignette uses child documents and inst/doc exists. (Thanks to Sebastian Meyer\'s PR#18156.) * When an R documentation (\'help\' source) file man/foo.Rd in a package has \\donttest{..} examples with a syntax error, it is now signalled as ERROR and with correct line numbers relating to the * -Ex.R file, thanks to Duncan Murdoch and Sebastian Meyer\'s reports and patch proposals in PR#17501. * Improved determination of the correct translation domain in non-base packages, addressing the combination of PR#18092 and PR#17998 (#c6) with reports and _augmented_ patch #2904 by Suharto Anggono. Note that \"R-base\" is no longer the default domain e.g., for top-level calls to gettext(); rather translation needs explicit domain = * specification in such cases. * identical(attrib.as.set=FALSE) now works correctly with data frames with default row names (Thanks to Charlie Gao\'s PR#18179). * txtProgressBar() now enforces a non-zero width for argument char, without which no progress can be visible. * dimnames(table(d)) is more consistent in the case where d is a list with a single component, thanks to Thomas Soeiro\'s report to R-devel. Further, table(d1, d2) now gives an error when d1 and d2 are data frames as suggested by Thomas in PR#18224. * Fix for drawing semi-transparent lines and fills on the native Windows graphics device (PR#18219 and PR#16694). Thanks to Nick Ray for helpful diagnosis on Bugzilla. * The deparser now wraps sub-expressions such as if(A) .. with parentheses when needed; thanks to Duncan Murdoch\'s PR#18232 and Lionel Henry\'s patches there. * remove.packages() no longer tries to uninstall Priority: base packages, thanks to a report and suggestions by Colin Fay in PR#18227. * win.metafile() now has xpinch and ypinch arguments so that the user can override Windows\' (potentially wrong) guess at device dimensions. * x[i] and x[[i]] for non-integer i should now behave in all cases as always documented: the index used is equivalent to as.integer(i) unless that would overflow where trunc(i) is used instead; thanks to Suharto Anggono\'s report and patch proposals in PR#17977. * asOneSidedFormula() now associates the resulting formula with the global environment rather than the evaluation environment created for the call. * $name now matches the field name case-insensitively, consistent with bibentry() creation and the replacement method. * cbind() failed to detect some length mismatches with a mixture of time-series and non-time-series inputs. * The default LaTeX style file Sweave.sty used by the RweaveLatex driver no longer loads the obsolete ae package; thanks to a report by Thomas Soeiro in PR#18271. Furthermore, it now skips \\usepackage[T1]{fontenc} for engines other than pdfTeX (if detected) or if the new [nofontenc] option is used. * smooth.spline() now stores its logical cv argument more safely, fixing a rare bug when printing, and also stores n. * smooth.spline(x,y, *) now computes the cv.crit statistic correctly, also when is.unsorted(x), fixing PR#18294. * The data.frame method of rbind() now warns when binding not-wholly-recycling vectors, by analogy to the default method (for matrices). * setAs() finds the correct class for name to when multiple packages define a class with that name. Thanks to Gabor Csardi for the report. * Fix for detaching a package when two classes of the same name are present in method signatures for the same generic. Thanks to Gabor Csardi for the report. * match.arg(\"\", c(\"\", \"a\", \"B\")) gives a better error message, in part from PR#17959, thanks to Elin Waring. * R CMD Sweave --clean no longer removes pre-existing files or subdirectories (PR#18242). * The quartz() device no longer splits polylines into subpaths. That has caused narrowly-spaced lines with many points to always look solid even when dashed line type was used due to dash phase restarts. * Deparsing constructs such as quote(1 + `!`(2) + 3) works again as before R 3.5.0, thanks to the report and patch in PR#18284 by Suharto Anggono. * as.list(f) for a factor f now keeps names(f), fixing PR#18309. * qbeta(.001, .9, .009) and analogous qf() calls now return a correct value instead of NaN or wrongly 1, all with a warning; thanks to the report by Ludger Goeminne in PR#18302. * plot.lm() failed to produce the plot of residuals vs. factor levels (i.e., which=5 when leverages are constant) for models with character predictors (PR#17840). * interaction.plot(..., xtick = TRUE) misplaced the x-axis line (PR#18305). * Not strictly fixing a bug, format()ing and print()ing of non-finite Date and POSIXt values NaN and +/-Inf no longer show as NA but the respective string, e.g., Inf, for consistency with numeric vector\'s behaviour, fulfilling the wish of PR#18308. * R CMD check no longer runs test scripts generated from corresponding .Rin files twice and now signals an ERROR if processing an .Rin script fails. * tools::Rd2txt() used for plain-text help pages now renders \\hrefs (if tools::Rd2txt_options(showURLs = TRUE)) and \\urls with percent-encoding and standards-compliant delimiting style (angle brackets and no URL: prefix). \\email is now rendered with a mailto: prefix. * Fri Mar 11 2022 Detlef Steuer - CHANGES IN R 4.1.3: NEW FEATURES: * The default version of Bioconductor has been changed to 3.14. (This is used by setRepositories and the menus in GUIs.) UTILITIES: * R CMD check --as-cran has a workaround for a bug in versions of file up to at least 5.41 which mis-identify DBF files last changed in 2022 as executables. C-LEVEL FACILITIES: * The legacy S-compatibility macros SINGLE_ * in R_ext/Constants.h (included by R.h) are deprecated and will be removed in R 4.2.0. BUG FIXES: * Initialization of self-starting nls() models with initialization functions following the pre-R-4.1.0 API (without the ... argument) works again for now, with a deprecation warning. * Fixed quoting of ~autodetect~ in Java setting defaults to avoid inadvertent user lookup due to leading ~, reported in PR#18231 by Harold Gutch. * substr(., start, stop) <- v now treats _negative_ stop values correctly. Reported with a patch in PR#18228 by Brodie Gaslam. * Subscripting an array x without dimnames by a length(dim(x))-column character matrix gave \"random\" non-sense, now an error; reported in PR#18244 by Mikael Jagan. * ...names() now matches names(list(...)) closely, fixing PR#18247. * all.equal( *, scale = s) now works as intended when length(s) > 1, partly thanks to Michael Chirico\'s PR#18272. * print(x) for long vectors x now also works for named atomic vectors or lists and prints the correct number when reaching the getOption(\"max.print\") limit; partly thanks to a report and proposal by Hugh Parsonage to the R-devel list. * all.equal(, *) no longer signals a deprecation warning. * reformulate( *, response=r) gives a helpful error message now when length(r) > 1, thanks to Bill Dunlap\'s PR#18281. * Modifying globalCallingHandlers inside withCallingHandlers() now works or fails correctly, thanks to Henrik Bengtsson\'s PR#18257. * hist(, breaks = \"days\") and hist(, breaks = \"secs\") no longer fail for inputs of length 1. * qbeta(.001, .9, .009) and similar cases now converge correctly thanks to Ben Bolker\'s report in PR#17746. * window(x, start, end) no longer wrongly signals \"\'start\' cannot be after \'end\'\", fixing PR#17527 and PR#18291. * data() now checks that its (rarely used) list argument is a character vector - a couple of packages passed other types and gave incorrect results. * which() now checks its arr.ind argument is TRUE rather coercing to logical and taking the first element - which gave incorrect results in package code. * model.weights() and model.offset() more carefully extract their model components, thanks to Ben Bolker and Tim Taylor\'s R-devel post. * list.files(recursive = TRUE) now shows all broken symlinks (previously, some of them may have been omitted, PR#18296). * Mon Nov 01 2021 Detlef Steuer - CHANGES IN R 4.1.2: C-LEVEL FACILITIES: * The workaround in headers R.h and Rmath.h (using namespace std;) for the Oracle Developer Studio compiler is no longer needed now C++11 is required so has been removed. A couple more usages of log() (which should have been std::log()) with an int argument are reported on Solaris. * The undocumented limit of 4095 bytes on messages from the S-compatibility macros PROBLEM and MESSAGE is now documented and longer messages will be silently truncated rather than potentially causing segfaults. * If the R_NO_SEGV_HANDLER environment variable is non-empty, the signal handler for SEGV/ILL/BUS signals (which offers recovery user interface) is not set. This allows more reliable debugging of crashes that involve the console. DEPRECATED AND DEFUNCT: * The legacy S-compatibility macros PROBLEM, MESSAGE, ERROR, WARN, WARNING, RECOVER, ... are deprecated and will be hidden in R 4.2.0. R\'s native interface of Rf_error and Rf_warning has long been preferred. BUG FIXES: * .mapply(F, dots, .) no longer segfaults when dots is not a list and uses match.fun(F) as always documented; reported by Andrew Simmons in PR#18164. * hist(, ...) and hist(, ...) no longer pass arguments for rect() (such as col and density) to axis(). (Thanks to Sebastian Meyer\'s PR#18171.) * \\Sexpr{ch} now preserves Encoding(ch). (Thanks to report and patch by Jeroen Ooms in PR#18152.) * Setting the RNG to \"Marsaglia-Multicarry\" e.g., by RNGkind(), now warns in more places, thanks to Andr\'e Gillibert\'s report and patch in PR#18168. * gray(numeric(), alpha=1/2) no longer segfaults, fixing PR#18183, reported by Till Krenz. * Fixed dnbinom(x, size=, .., log=TRUE) regression, reported by Martin Morgan. * as.Date.POSIXlt(x) now keeps names(x), thanks to Davis Vaughan\'s report and patch in PR#18188. * model.response() now strips an \"AsIs\" class typically, thanks to Duncan Murdoch\'s report and other discussants in PR#18190. * try() is considerably faster in case of an error and long call, as e.g., from some do.call(). Thanks to Alexander Kaever\'s suggestion posted to R-devel. * qqline(y =