-(math/R) Updated 4.2.3 to 4.3.2 with remedy for strtoi
+(math/R) Updated 4.3.2 to 4.3.3
-- pkgsrc side change
- strtoi function now conflicts with NetBSD function. Renaming R' side one
- into strtoiR (All the strings for now) by SUBST, thus including do_strtoi.
-
-- upstream info
-CHANGES IN R 4.3.2:
+CHANGES IN R 4.3.3:
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()'.
+ * 'iconv()' now fixes up variant encoding names such as
+ '"utf8"' case-insensitively.
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'.
+ * The legacy 'encoding = "MacRoman"' is deprecated in 'pdf()'
+ and 'postscript()': support was incomplete in earlier
+ versions of R.
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.
+ * 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.
- * Cursor placement in 'Rgui' now works even after a
- fixed-width font is selected.
+ * 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)').
- * Mandatory options ('options()') are now set on startup so
- that saving and restoring them always works (PR#18372).
+ * 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.
- * 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.
+ * 'quartz(file = NA)' opened a file called 'NA', including
+ when used as a Quartz-based bitmap device. It now gives an
+ error.
- This _doesrequire syntactically self contained R source
- files now, fixing another inadvertent bug.
+ * 'rank(<long vector>)' now works, fixing PR#18617, thanks to
+ Ilia Kats.
- * '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.
+ * 'seq.int()' did not adequately check its 'length.out'
+ argument.
- * 'getInitial(<formula>)' now finds the 'selfStart' model in
- the correct environment. (Reported by Ivan Krylov in
- PR#18368.)
+ * 'match(<POSIXct>, .)' is correct again for differing time
+ zones, ditto for '"POSIXlt"', fixing PR#18618 reported by
+ Bastian Klein.
- * Fix for possible segfault when using recently-added graphics
- features, such as gradients, clipping paths, masks, and
- groups with 'pdf(file=NULL)'.
+ * 'drop.terms(*, dropx = <0-length>)' now works, fixing
+ PR#18563 as proposed by Mikael Jagan.
- * 'class(m) <- class(m)' no longer changes a matrix 'm' by
- adding a class _attribute_.
+ * '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.
- * 'packageDate(pkg)' now only warns once if there is no 'pkg'.
+ * 'getS3method("t", "test")' no longer finds the 't.test()'
+ function, fixing PR#18627.
- * When 'ts()' creates a multivariate time series, '"mts"', it
- also inherits from '"array"' now, and 'is.mts()' is
- documented _andstricter.
+ * 'pdf()' and 'postscript()' support for the documented Adobe
+ encodings '"Greek"' and '"Cyrilllic"' was missing (although
+ the corresponding Windows' codepages could be used).
- * '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.
+ * 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.
- * '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.
+ * '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.
- * 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.
+ * '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.
- * 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.
+ * 'cov2cor(<0 x 0>)' now works, fixing PR#18423 thanks to
+ Mikael Jagan and Elin Waring.
- * 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.
+ * 'cov2cor(<negative diagonal>)' and similar now give one
+ warning instead of two, with better wording, fixing PR#18424
+ thanks to Mikael Jagan.
- * An error in 'table()' could permanently set
- 'options(warn=2)' promoting all subsequent warnings to
- errors.
+ * 'tools'':: startDynamicHelp()' now ensures 'port' is in
+ proper range, fixing PR#18645.
- * 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()'.
+ * '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.
- * '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.
+ * 'pmatch(x, table)' for large 'table', also called for data
+ frame row selection, 'dfrm[nm, ]', is now interruptible,
+ fixing PR#18656.
- * '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).
+ * '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.