[Rd] R 4.3.0 is released

Peter Dalgaard pd@me@ @end|ng |rom cb@@dk
Fri Apr 21 10:25:55 CEST 2023

The build system rolled up R-4.3.0.tar.gz (codename "Already Tomorrow") this morning.

This is a major update, containing many new features and bug fixes.

The list below details the changes in this release. 

You can get the source code from


or wait for it to be mirrored at a CRAN site nearer to you.

Binaries for various platforms will appear in due course.

For the R Core Team,

Peter Dalgaard

These are the checksums (md5 and SHA-256) for the freshly created files, in case you wish
to check that they are uncorrupted:

MD5 (AUTHORS) = 320967884b547734d6279dedbc739dd4
MD5 (COPYING) = eb723b61539feef013de476e68b5c50a
MD5 (COPYING.LIB) = a6f89e2100d9b6cdffcea4f398e37343
MD5 (FAQ) = 3f5d6539d3c4878cbbb74dcbee74447f
MD5 (INSTALL) = 7893f754308ca31f1ccf62055090ad7b
MD5 (NEWS) = a63858aea2a450900edf8c965cac1efa
MD5 (NEWS.0) = bfcd7c147251b5474d96848c6f57e5a8
MD5 (NEWS.1) = 4108ab429e768e29b1c3b418c224246e
MD5 (NEWS.2) = b38d94569700664205a76a7de836ba83
MD5 (NEWS.3) = e55ed2c8a547b827b46e08eb7137ba23
MD5 (R-latest.tar.gz) = f8f409fa66b82dbc79ddc5706f19638f
MD5 (README) = f468f281c919665e276a1b691decbbe6
MD5 (RESOURCES) = a79b9b338cab09bd665f6b62ac6f455b
MD5 (THANKS) = 45b6d2e88a6ecb5b24fa33a781351cd5
MD5 (VERSION-INFO.dcf) = cf5eba51ce402edaaa26eacdd4af55b5
MD5 (R-4/R-4.3.0.tar.gz) = f8f409fa66b82dbc79ddc5706f19638f

60a0d150e6fc1f424be76ad7b645d236b56e747692a4679f81ce6536c550e949  AUTHORS
e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING
6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3  COPYING.LIB
8c396b0db6b1b072e66ea78deab8c89f71150744420ad9f74de6505aacee9a80  FAQ
f87461be6cbaecc4dce44ac58e5bd52364b0491ccdadaf846cb9b452e9550f31  INSTALL
be75619066603438a01d75f6f9ed741bc4fe15981eac900dd6dd0b1a4861dbb2  NEWS
4e21b62f515b749f80997063fceab626d7258c7d650e81a662ba8e0640f12f62  NEWS.0
5de7657c5e58e481403c0dd1a74a5c090b3ef481ce75a91dfe05d4b03f63163f  NEWS.1
cde079b6beab7d700d3d4ecda494e2681ad3b7f8fab13b68be090f949393ec62  NEWS.2
1910a2405300b9bc7c76beeb0753a5249cf799afe175ce28f8d782fab723e012  NEWS.3
45dcc48b6cf27d361020f77fde1a39209e997b81402b3663ca1c010056a6a609  R-latest.tar.gz
2fdd3e90f23f32692d4b3a0c0452f2c219a10882033d1774f8cadf25886c3ddc  README
8b7d3856100220f4555d4d57140829f2e81c27eccec5b441f5dce616e9ec9061  RESOURCES
8319c5415de58ee10d4bc058d79c370fd8e6b2ad09e25d7a1e04b74ca5f380a6  THANKS
3281640b70d461113ecb20020f3ed760bd30411c51657354bc3b322fa457fc49  VERSION-INFO.dcf
45dcc48b6cf27d361020f77fde1a39209e997b81402b3663ca1c010056a6a609  R-4/R-4.3.0.tar.gz

This is the relevant part of the NEWS file



    * 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


    * 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

    * 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

    * 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

    * 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

    * 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

    * The as.data.frame.vector() utility now errors for wrong-length
      row.names.  It warned for almost six years, with "Will be an

    * 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(<lm>, 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(<rank-deficient lm>, 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(<very large negative>, log.p=TRUE) is now fully accurate
      (instead of to "only" minimally five digits).

    * demo(error.catching) now also shows off withWarnings() and

    * 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<some>(a, b, ..)) is as "smart" now, as
      stopifnot(all.equal(....)) has been already, thus allowing
      customized all.equal<Some>() 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

    * The @ 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

    * 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

    * 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

    * 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().


    * 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

    * 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

    * 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(<numeric>) and as.POSIXlt(.) (without specifying
      origin) now work.  So does as.Date(<numeric>).

    * 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

    * 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.


    * The graphics engine version, R_GE_version, has been bumped to 16
      and so packages that provide graphics devices should be

    * The grDevices and grid packages have new functions for rendering
      typeset glyphs, primarily: grDevices::glyphInfo() and

      Rendering of typeset glyphs is only supported so far on the
      Cairo-based graphics devices and on the pdf() and quartz()

    * 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

    * Support for gradients, patterns, clipping paths, masks, groups,
      compositing operators, and affine transformations has been added
      to the quartz() device.


    * 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.


    * 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.)


    * 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

    * 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

      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.


    * 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.)


    * 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,

      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.


    * 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)

    * _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

    * 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

    * 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 @. The formerly internal function findMatches() is now
      exported, mainly for use in methods for .DollarNames() and


    * default.stringsAsFactors() is defunct.

    * Calling as.data.frame.<class>() 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.


    * Hashed environments with sizes less than 5 can now grow.
      (Reported to R-devel by Duncan Garmonsway.)

    * as.character(<Rd>, deparse = TRUE) failed to re-escape curly
      braces in LaTeX-like text.  (Reported by Hadley Wickham in

    * 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(<POSIXt>) 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(<Date>).  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(<POSIXlt>) and as.POSIXct(<POSIXct>) default
      methods now do obey their tz argument, also in this case.

    * as.POSIXlt(<Date>) 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

    * 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

    * 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

    * 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 <pkg>/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(<model with offset>) now finds the offset in the
      correct environment, thanks to Andr'e Gillibert's report and patch
      in PR#18456.

    * getInitial(<formula>) 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_

    * 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
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Office: A 4.23
Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com

More information about the R-announce mailing list