./math/R, Statistical language for data analysis and graphics

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 4.4.2nb2, Package name: R-4.4.2nb2, Maintainer: pkgsrc-users

R is a language which bears a passing resemblance to the S language
developed at AT&T Bell Laboratories. It provides support for a
variety of statistical and graphical analyses. R is a true
computer language which contains a number of control-flow
constructions for iteration and alternation. It allows users to
add additional functionality by defining new functions. On
platforms which support the dlopen (3) interface, Fortran and C
code can be linked and called at run time.

R is very close to S in both syntax and semantics, but is not identical.
Whether this is a bug or feature is an open question.


Required to run:
[converters/libiconv] [www/curl] [graphics/tiff] [graphics/png] [graphics/cairo] [graphics/jpeg] [lang/perl5] [math/lapack] [math/blas] [devel/glib2] [devel/pango] [devel/gettext-lib] [devel/pcre] [devel/readline] [x11/tk] [lang/gcc7]

Required to build:
[pkgtools/x11-links] [x11/xcb-proto] [devel/libtool-fortran] [pkgtools/cwrappers] [x11/xorgproto]

Master sites: (Expand)

Filesize: 36701.938 KB

Version history: (Expand)


CVS history: (Expand)


   2024-04-28 16:26:43 by Makoto Fujiwara | Files touched by this commit (3)
Log message:
(math/R) Updated 4.3.2 to 4.3.3

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<c3><a9> Pag<c3><a8>s 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(<long vector>)' now works, fixing PR#18617, thanks to
           Ilia Kats.

         * 'seq.int()' did not adequately check its 'length.out'
           argument.

         * 'match(<POSIXct>, .)' 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(<negative diagonal>)' 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(<rank-deficient lm>, 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.
   2024-04-07 09:35:33 by Thomas Klausner | Files touched by this commit (1138)
Log message:
*: bump for cairo buildlink3.mk change

lzo was made an option
   2024-03-05 17:12:33 by Jonathan Perkin | Files touched by this commit (2)
Log message:
R: Fix building extensions with C++.
   2024-02-15 08:48:50 by Mark Davies | Files touched by this commit (3)
Log message:
R: fix dealing with conflict with NetBSD function strtoi()

Just rename the C level function strtoi() to not conflict with the
NetBSD function.  Don't also change the name of the R level funstion.
   2024-01-09 00:15:39 by Makoto Fujiwara | Files touched by this commit (2)
Log message:
(math/R) correction on patch-m4.R again
   2024-01-09 00:13:03 by Makoto Fujiwara | Files touched by this commit (2)
Log message:
(math/R) correction on patch-configure.ac.again
   2024-01-09 00:03:50 by Makoto Fujiwara | Files touched by this commit (3)
Log message:
(math/R) Correction on patches
   2024-01-08 08:18:26 by Makoto Fujiwara | Files touched by this commit (4) | Package updated
Log message:
(math/R) Updated 4.2.3 to 4.3.2 with remedy for strtoi

- pkgsrc side change
  strtoi function conflicted with NetBSD function. but it was
  referenced in the same file. Now it is referenced at various places.
  So it is renamed into strtoiR  (All the strings for now) by SUBST,
  thus including do_strtoi.
  (patches/patch-src_main_character.c is dropped)

- upstream info
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(<list>, as.data.frame)' no longer warns falsely for
           some base vector components.

         * Communication between parent and child processes in the
           'multicore' part of 'parallel' could fail on platforms that
           do not support an arbitrarily large payload in system
           functions 'read()'/'write()' on pipes (seen on macOS where a
           restriction to 'INT_MAX' bytes is documented, without doing
           a partial read unlike Linux). The payload is now split into
           1Gb chunks to avoid that problem. (PR#18571)

         * 'qqplot(x,y, conf.level=.)' gives better confidence bounds
           when 'length(x) != length(y)', thanks to Alexander Ploner's
           report and patch proposal (PR#18557).

         * 'norm(<0-length>, "2")' now gives zero instead of an \ 
error,
           as all the other norm types, thanks to Mikael Jagan's
           PR#18542.

         * Build-stage Rd macros \packageAuthor and \packageMaintainer
           now process 'Authors@R', fixing 'NA' results when the
           package 'DESCRIPTION' omits 'Author' and 'Maintainer'
           fields.

         * Formatting and printing complex numbers could give things
           like '0.1683-0i' because of rounding error: '-0i' is now
           replaced by '+0i'.

         * 'postscript()' refused to accept a 'title' comment
           containing the letter "W" (PR#18599).

         * 'isoreg(c(1,Inf))' signals an error instead of segfaulting,
           fixing PR#18603.

         * 'tiff(type = "Xlib")' was only outputting the last page of
           multi-page plots.

         * 'tools::latexToUtf8()' again knows about '\~{n}' and other
           letters with tilde, fixing a regression in R 4.3.0, and
           about '\^{i}' as an alternative to '\^{\i}' (similarly with
           other accents).  Furthermore, LaTeX codes for accented I
           letters are now correctly converted, also fixing related
           mistakes in 'tools::encoded_text_to_latex()'.

         * 'tar(*, tar = "internal")' no longer creates out-of-spec tar
           files in the very rare case of user or group names longer
           than 32 bytes, fixing PR#17871 with thanks to Ivan Krylov.

         * When using the "internal" timezone datetime code, adding a
           fraction of a second no longer adds one second, fixing
           PR#16856 from a patch by Ivan Krylov.

         * 'tools::checkRd()' no longer produces spurious notes about
           "unnecessary braces" from multi-line Rd results of \Sexpr
           macros.

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 <Rconfig.h> // for PR18534fixed
                   #ifdef PR18534fixed
                   # define usePR18534fix 1
                   #endif
                   #include <R_exts/Lapack.h>

           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(., <illegal>)' and 'tail(..)' now produce more useful
           '"Error in ...."' error messages, fixing PR#18362.

         * Package code syntax on Windows is checked in UTF-8 when
           UTF-8 is the native encoding.

         * 'na.contiguous(x)' now also returns the first run, when it
           is at the beginning and there is a later one of the same
           length; reported to R-devel, including a fix, by Georgi
           Boshnakov.  Further, by default, it modifies only an
           existing 'attr(*,"tsp")' but otherwise no longer sets one.

         * 'chol(<not pos.def>, pivot = <T|F>)' now gives a correct
           error or warning message (depending on 'pivot'), thanks to
           Mikael Jagan's (PR#18541).

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 'NaN's,
           including R's 'NA'.)

         * The parser now signals _classederrors, 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 _classedwarning 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(<lm>, newdata = *)' no longer unnecessarily creates
           an 'offset' of all '0's.

         * '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 '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<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
           <https://blog.r-project.org/2023/03/07/path-length-limit-on-windows>
           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 '@' 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(<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 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' <c2><a7>6.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 _viaoptions
           '--use-C17' and so on of 'R CMD INSTALL' and 'R CMD SHLIB'.

           For further details see "Writing R Extensions" \ 
<c2><a7>1.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' \ 
<c2><a7>1.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 _viaKaTeX 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 '@'. 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.<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'.

  BUG FIXES:

         * Hashed 'environment's 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 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
           _classederror.  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
           Fu<c3><9f> 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<c3><af> 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 '<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 _doesrequire 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<c3><a9> \ 
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 _andstricter.

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