Releases: r-hub/R
R 4.4.2
CHANGES IN R 4.4.2
C-LEVEL FACILITIES:
- The S-compatibility macros
F77_COM
andF77_COMDECL
defined in
headerR_ext/RS.h
are deprecated and will be removed shortly. We
could find no record of their use.
BUG FIXES:
-
Mathlib function
lgammacor(x)
no longer warns about underflow to
zero for largex
. -
Text widths and heights were incorrectly reported by the Quartz
device if the drawing context didn't exist yet (typically when
drawing off-screen to a window that is yet to appear, see
PR#18591). -
The Quartz device could segfault in cases where paths with spaces
are used in the new glyph drawing API. Thanks to Tomek
Gieorgijewski (PR#18758). -
On macOS in R CRAN builds, it is again possible to read
little-endian UTF-16 text with a BOM from a connection using
encoding="UTF-16"
. Users building R from source should avoid
using the system libiconv in macOS 14.1 and later. -
methods' internal
.requirePackage()
now re-enables primitive
method dispatch when needed; thanks to Ivan Krylov for
demystifying CRAN package check failures on the R-devel mailing
list.
R 4.4.1
CHANGES IN R 4.4.1
C-LEVEL FACILITIES:
-
Functions
R_atof
andR_strtod
declared in headerR_ext/Utils.h
are now documented in 'Writing R Extensions' and so formally part
of the API. -
The non-API entry points
Rf_setSVector
,Rf_StringFalse
,
Rf_StringTrue
andRf_isBlankString
have been added to those
reported byR CMD check
. -
The new function
Rf_allocLang
is now available. This provides an
alternative to the idiom of callingRf_allocList
followed by
SET_TYPEOF
.
UTILITIES:
R CMD check
now reports as warnings what gfortran calls 'Fortran
2018 deleted features', all of which have long been marked as
'obsolescent' and some of which were deleted in Fortran 2008 or
earlier. Fortran compilers are no longer required to support
these.
BUG FIXES:
-
as.numeric()
,scan()
,type.convert()
and other places which use
the internal C functionR_strtod
now require a non-empty digit
sequence in a decimal or binary exponent. This aligns with the
C/POSIX standard for strtod and with?NumericConstants
. -
as.data.frame(m, make.names=NA)
now works correctly for a matrix
m
withNA
's in row names. -
The error message from
<POSIXlt>[["hour"]]
and similar now
mentions *[[, "hour"]], as wished for in [PR#17409](https://bugs.r-project.or\
g/show_bug.cgi?id=17409) and proposed by
Michael Chirico. -
qbinom()
and potentiallyqpois()
,qnbinom()
, no longer sometimes
fail accurate inversion (ofpbinom()
, etc), thanks to Christopher
Chang's report and patch in [PR#18711](https://bugs.r-project.org/show_bug.cg\
i?id=18711). -
The internal help server on Windows can again serve requests sent
in quick succession, fixing a regression in R 4.4.0. -
debugcall(<S3Generic>())
now also works when a corresponding
S4-generic version is in the methods cache ([PR#18143](https://bugs.r-project\
.org/show_bug.cgi?id=18143)). -
Package tools'
toTitleCase(ch0)
now returnscharacter(0)
whench0
is of zero length; fixing [PR#18724](https://bugs.r-project.org/show_bug.cgi?\
id=18724), reported by David Hugh Jones. -
R CMD check
is no longer broken (without a check result and no
explanation in00check.log
) for a package which declares an
invalidVignetteBuilder
inDESCRIPTION
but has no vignettes.
R 4.4.0
CHANGES IN R 4.4.0
SIGNIFICANT USER-VISIBLE CHANGES:
-
Startup banners,
R --version
,sessionInfo()
andR CMD check
no
longer report(64-bit)
as part of the platform as this is almost
universal - the increasingly rare 32-bit platforms will still
report (32-bit).On Windows, ditto for window titles.
-
is.atomic(NULL)
now returnsFALSE
, asNULL
is not an atomic
vector. Strict back-compatibility would replaceis.atomic(foo)
by(is.null(foo) || is.atomic(foo))
but should happen only
sparingly.
NEW FEATURES:
-
The
confint()
methods for "glm" and "nls" objects have been
copied to the stats package. Previously, they were stubs which
called versions in package MASS. The MASS namespace is no longer
loaded if you invoke (say)confint(glmfit)
. Further, the "glm"
method forprofile()
and theplot()
andpairs()
methods for class
"profile" have been copied from MASS to stats. (profile.nls()
andplot.profile.nls()
were already in stats.) -
The
confint()
andprofile()
methods for "glm" objects have gained a
possibility to do profiling based on the Rao Score statistic in
addition to the default Likelihood Ratio. This is controlled by a
newtest =
argument. -
The
pairs()
method for "profile" objects has been extended with a
which =
argument to allow plotting only a subset of the
parameters. -
The "glm" method for
anova()
computes test statistics and
p-values by default, using a chi-squared test or an F test
depending on whether the dispersion is fixed or free. Test
statistics can be suppressed by giving argument test a false
logical value. -
In
setRepositories()
the repositories can be set using their
names vianame =
instead of indexind =
. -
methods()
and.S3methods()
gain aall.names
option for the (rare)
case where functions starting with a.
should be included. -
Serializations can now be interrupted (e.g., by Ctrl-C on a
Unix-alike) if they take too long, e.g., fromsave.image()
,
thanks to suggestions by Ivan Krylov and others on R-devel. -
New startup option
--max-connections
to set the maximum number of
simultaneous connections for the session. Defaults to 128 as
before: allowed values up to 4096 (but resource limits may in
practice restrict to smaller values). -
R on Windows (since Windows 10 2004) now uses the new Segment
Heap allocator. This may improve performance of some
memory-intensive applications. -
When R packages are built, typically by
R CMD build <pkg>
, the
new--user=<build_user>
option overrides the (internally
determined) user name, currentlySys.info()["user"]
orLOGNAME
.
This is a (modified) fulfillment of Will Landau's suggestion in
PR#17530. -
tools::testInstalledBasic()
gets new optional argumentsoutDir
andtestSrcdir
, e.g., allowing to use it in a<builddir> != <srcdir>
setup, and in standard "binary" Windows installation
if a sourcetests/
folder is present. -
range(<DT_with_Inf>, finite = TRUE)
now work for objects of class
"Date", "POSIXct", and "POSIXlt" with infinite entries,
analogously torange.default()
, as proposed by Davis Vaughan on
R-devel. Otherrange()
-methods can make use of new function
.rangeNum()
. -
New
.internalGenerics
object complementing.S3PrimitiveGenerics
,
for documentation and low-level book-keeping. -
grid()
now invisibly returns the x- and y- coordinates at which
the grid-lines were drawn. -
norm(., type)
now also works for complex matrices. -
kappa(., exact = TRUE, norm = *)
now works for all norms and also
for complex matrices. In symmetric / triangular cases, the new
argumentuplo = "U"
|uplo = "L"
allows the upper or lower triangular
part to be specified. -
memDecompress(type = "unknown")
recognizes compression in the
default 'zlib' format as used bymemCompress(type = "gzip")
. -
memCompress()
andmemDecompress()
will use the libdeflate library
(https://github.com/ebiggers/libdeflate) if installed. This
uses the same type of compression fortype = "gzip"
but is 1.5-2x
faster than the system libz library on some common platforms: the
speed-up may depend on the library version. -
diff()
for objects of class "Date", "POSIXct", and "POSIXlt"
accepts a units argument passed via...
. -
Dynamic help now does a much better job of rendering package
DESCRIPTION
metadata. -
Rprof()
gains an event argument and support for elapsed (real)
time profiling on Unix (PR#18076). -
filled.contour()
gains a key.border argument. -
tools::update_pkg_po()
gets arguments pot_make and mo_make for
not re-making the corresponding files, and additionally a
verbose argument. -
Hexadecimal string colour specifications are now accepted in
short form, so, for example, we can use"#123"
, which is
equivalent to"#112233"
.Thanks to MikeFC for the original idea and Ella Kaye, Malcolm
Barrett, George Stagg, and Hanne Oberman for the patch. -
Plain-text help shows
\var
markup by angle brackets. -
The new experimental primitive function
declare()
is intended to
eventually allow information about R code to be communicated to
the interpreter, compiler, and code analysis tools. The syntax
for declarations is still being developed. -
Functions
psmirnov()
,qsmirnov()
andrsmirnov()
in package stats
have had argumenttwo.sided
renamed to alternative, to take into
account that the permutation distributions of the one-sided
statistics can be different in the case of ties. Consequence of
PR#18582. -
sort()
is now an implicit S4 generic in methods. -
Formatting and printing,
format(z)
,print(z)
, of complex vectors
z
no longer zap relatively small real or imaginary parts to zero,
fixing PR#16752. This is an API change, as it was documented
previously to round real and imaginary parts together on purpose,
producing nicer looking output. As mentioned, e.g. in the PR,
this change is compatible with many other "R-like" programming
environments.We have simplified the internal code and now basically format the
real and imaginary parts independently of each other. -
New experimental functions
Tailcall()
andExec()
to support
writing stack-space-efficient recursive functions. -
Where characters are attempted to be plotted by
pdf()
,
postscript()
andxfig()
which are not in the selected 8-bit
character set (most often Latin-1) and the R session is using a
UTF-8 locale, the warning messages will show the UTF-8 character
rather than its bytes and one dot will be substituted per
character rather than per byte. (Platforms whoseiconv()
does
transliteration silently plot the transliteration.)In a UTF-8 locale some transliterations are now done with a
warning (e.g., dashes and Unicode minus to hyphen, ligatures are
expanded, permille (‰) is replaced by o/oo), although the OS may
have got there first. These are warnings as they will continue
to be replaced by dots in earlier versions of R. -
The matrix multiplication functions
crossprod()
andtcrossprod()
are now also primitive and S3 generic, as%*%
had become in R
4.3.0. -
source()
andexample()
have a new optional argumentcatch.aborts
which allows continued evaluation of the R code after an error. -
The non-Quartz
tiff()
devices allow additional types of
compression if supported by the platform's libtiff library. -
The list of base and recommended package names is now provided by
tools::standard_package_names()
. -
cairo_pdf()
andcairo_ps()
default toonefile = TRUE
to closer
matchpdf()
andpostscript()
. -
New option
catch.script.errors
provides a documented way to catch
errors and then continue in non-interactive use. -
L %||% R
newly in base is an expressive idiom for the phrases
if(!is.null(L)) L else R
orif(is.null(L)) R else L
. -
The return value from
warnings()
now always inherits from
"warnings" as documented, now also in the case of no warnings
where it previously returnedNULL
. -
as.complex("1i")
now returns 0 + 1i instead ofNA
with a warning. -
z <- c(NA, 1i)
now keeps the imaginary part Im(z[1]) == 0, no
longer coercing toNA_complex_
. Similarly,cumsum(z)
correctly
sums real and imaginary parts separately, i.e., without
"crosstalk" in case of NAs. -
On Alpine Linux
iconv()
now maps "latin2", "latin-2", "latin9"
and "latin-9" to encoding names the OS knows about
(case-insensitively). -
iconv(sub = "Unicode")
now always zero-pads to four (hex) digits,
rather than to 4 or 8. (This seems to have become the convention
once Unicode restricted the number of Unicode points to 2^21 - 1
and so will never need more than 6 digits.) -
NCOL(NULL)
now returns 0 instead of 1, for consistency with
cbind()
. -
The information for the Euro glyph missing from the Adobe
.afm
files for the Courier, Helvetica and Times families has been
copied from their URW equivalents - this will improve vertical
centring in thepdf()
andpostscript()
devices. -
The included BLAS sources have been updated to those shipped with
LAPACK version 3.12.0. The changes are almost entirely cosmetic. -
The included LAPACK sources have been updated to version 3.12.0
and some further double-complex routines added. -
There are new font families for the 2014--5 URW 2.0 fonts (see
?pdf
) which are included in recent versions of Ghostscript.
These have font widths for most Greek glyphs and ...
R 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 inpdf()
and
postscript()
: support was incomplete in earlier versions of R.
BUG FIXES:
-
Arguments are now properly forwarded to methods on S4 generics
with...
in the middle of their formal arguments. This was broken
for the case when a method introduced an argument but did not
include...
in its own formals. Thanks to Herv'e Pag`es for the
report PR#18538 -
Some invalid file arguments to
pictex()
,postscript()
andxfig()
opened a file calledNA
rather than throw an error. These
includedpostscript(NULL)
(which some people expected to work
likepdf(NULL)
). -
Passing
filename = NA
tosvg()
,cairo_pdf()
,cairo_ps()
or the
Cairo-based bitmap devices opened a file calledNA
: it now throws
an error. -
quartz(file = NA)
opened a file calledNA
, 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 itslength.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,
anddrop.terms()
no longer makes up a response, PR#18566, fixing
both bugs thanks to Mikael Jagan. -
getS3method("t", "test")
no longer finds thet.test()
function,
fixing PR#18627. -
pdf()
andpostscript()
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 vectorx
,
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 forx=0
or1
in the boundary cases
wherea
orb
or both are0
, 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.
R 4.3.2
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 variableR_REPOSITORIES
toNULL
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 thanNA_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 oficonv()
). -
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
generatorRANDOM_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 stringsx
whenL > nchar(x)
, thanks to a report and patch
by 'Architect 95'. -
contrib.url(character())
now returns 0-lengthcharacter()
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 functionsread()
/write()
on
pipes (seen on macOS where a restriction toINT_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
processAuthors@R
, fixingNA
results when the packageDESCRIPTION
omitsAuthor
andMaintainer
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.
R 4.3.1
CHANGES IN R 4.3.1
C-LEVEL FACILITIES:
-
The C-level API version of R's
integrate()
,Rdqags()
inApplic.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
anddtptrs
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 usecd tests; make test-Internet-dev
BUG FIXES:
-
.S3methods()
, typically called frommethods()
, again marks
methods from package base as visible.Also, the visibility of non-base methods is again determined by
the method's presence insearch()
. -
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 existingattr(*,"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).
R 4.3.0
CHANGES IN R 4.3.0
SIGNIFICANT USER-VISIBLE CHANGES:
-
Calling
&&
or||
with LHS or (if evaluated) RHS of length greater
than one is now always an error, with a report of the form'length = 4' in coercion to 'logical(1)'
Environment variable
_R_CHECK_LENGTH_1_LOGIC2_
no longer has any
effect.
NEW FEATURES:
-
The included BLAS sources have been updated to those shipped with
LAPACK version 3.10.1. (This caused some platform-dependent
changes to package check output.) And then to the sources from
LAPACK version 3.11.0 (with changes only to double complex
subroutines). -
The included LAPACK sources have been updated to include the four
Fortran 90 routines rather than their Fortran 77 predecessors.
This may give some different signs in SVDs or
eigendecompositions.. (This completes the transition to LAPACK
3.10.x begun in R 4.2.0.) -
The LAPACK sources have been updated to version 3.11.0. (No new
subroutines have been added, so this almost entirely bug fixes:
Those fixes do affect some computations with NaNs, including R's
NA.) -
The parser now signals classed errors, notably in case of the
pipe operator|>
. The error object and message now give line and
column numbers, mostly as proposed and provided by Duncan Murdoch
in PR#18328. -
toeplitz()
is now generalized for asymmetric cases, with a
toeplitz2()
variant. -
xy.coords()
andxyz.coords()
and consequently, e.g.,plot(x,y, log = "y")
now signal a classed warning about negative values
ofy
(wherelog(.)
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()
andstrsplit()
has been
improved, particularly withperl = TRUE
andfixed = 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 argumentdot_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, ...)
gainsconf.level
andconf.args
arguments for
computing and plotting a confidence band for the treatment
function transforming the distribution ofx
into the distribution
ofy
(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()
andstrsplit()
, 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 henceread.table()
get new optiontryLogical = 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 containsLa_version()
and reports codepage
and timezone when relevant, in bothprint()
andtoLatex()
methods
which also get new optiontzone
for displaying timezone
information whenlocale = FALSE
. -
New function
R_compiled_by()
reports the C and Fortran compilers
used to build R, if known. -
predict(<lm>, newdata = *)
no longer unnecessarily creates an
offset of all 0s. -
solve()
for complex inputs now uses argumenttol
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 offwithWarnings()
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
andTEMP
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
customizedall.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 numerica
orb
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
valu...
R 4.2.3
CHANGES in R 4.2.3
C-LEVEL FACILITIES:
-
The definition of
DL_FUNC
inR_ext/Rdynload.h
has been changed to
be fully C-compliant. This means that functions loaded via for
exampleR_GetCCallable
need to be cast to an appropriate type if
they have any arguments. -
.Machine
has a new elementsizeof.time_t
to identify old systems
with a 32-bit type and hence a limited range of date-times (and
limited support for dates millions of years from present).
PACKAGE INSTALLATION:
- (Windows) The default C++ standard had accidentally been left at
C++11 when it was changed to C++14 on Unix.
BUG FIXES:
-
As "POSIXlt" objects may be “partially filled” and their list
components meant to be recycled,length()
now is the length of
the longest component. -
as.POSIXlt.Date()
could underflow for dates in the far past (more
than half a million years BCE). -
as.Date.POSIXlt(x)
would return "1970-01-01" instead ofNA
in R
4.2.2, e.g., forx <- as.POSIXlt(c("2019-01-30","2001-1-1")) x$mon <- c(0L, NA); as.Date(x)
-
R CMD check
failed to apply enabled_R_CHECK_SUGGESTS_ONLY_
to
examples and vignettes (regression in R 4.2.0). -
R CMD check
did not re-build vignettes in separate processes by
default (regression in R 4.2.0). -
Running examples from HTML documentation now restores previous
knitr settings and options (PR#18420). -
Quartz: fonts are now located using Core Graphics API instead of
deprecated ATS which is no longer supported in the macOS 13 SDK
(PR#18426). This also addresses an issue where the currently
used font in the Quartz device context was not correctly
retained. -
(Windows) Math symbols in text drawing functions are again
rendered correctly (PR#18440). This fixes a regression in R
4.2.1 caused by a fix in PR#18382 which uncovered an issue in
GraphApp due to which the symbol charset was not used with TT
Symbol font face. -
(Windows) Installing a package with a
src/Makefile.{win,ucrt}
file includes~/.R/Makevars.win64
in the search for user
makevars, as documented in “R Installation and Administration”
and done for packages with asrc/Makevars.{win,ucrt}
file. -
format(<POSIXlt_w/_unbalanced_sec>, "....%OS<n>")
withn > 0
no
longer accidentally uses the unbalanced seconds, thanks to
Suharto Anggono's report (including patch) in PR#18448. -
solve.default(a, b)
works around issues with some versions of
LAPACK when a contains NA or NaN values. -
When
UseMethod()
cannot dispatch, it no longer segfaults
producing the error message in case of a longclass()
, thanks to
Joris Vankerschaver's report (including patch) in PR#18447. -
When
example(foo, ..)
produces graphics on an interactive device
it needs to open itself, it now leavesdevAskNewPage()
unchanged
even when it wasFALSE
, thus fixing a 14 years old ‘’. -
packageDescription()
again catches errors from encoding
conversions. This also fixes brokenpackageVersion()
in C locale
on systems where iconv does not support transliteration.
R 4.2.2
CHANGES IN R 4.2.2
NEW FEATURES:
-
tools::Rdiff(useDiff = TRUE)
checks for the presence of an
external diff command and switches touseDiff = FALSE
if none is
found. This allowsR CMD Rdiff
to always work. -
On Windows, environment variable
R_LIBCURL_SSL_REVOKE_BEST_EFFORT
can be used to switch to only ‘best-effort’ SSL certificate
revocation checks with the default "libcurl" download method.
This reduces security, but may be needed for downloads to work
with MITM proxies (PR#18379). -
(macOS) The run-time check for libraries from XQuartz for X11 and
Tcl/Tk no longer uses otool from the Apple Developer Tools
(PR#18400). -
The LaTeX style for producing the PDF manuals,
Rd.sty
, now loads
the standard amsmath, amsfonts and amssymb packages for greater
coverage of math commands in the Rd\eqn
and\deqn
macros. The
\mathscr
LaTeX command is also provided (via the mathrsfs
package, if available, or the amsfonts bundle otherwise),
fulfilling the wish of PR#18398. -
(Windows) The default format of
readClipboard()
and
writeClipboard()
has been changed to 13 (CF_UNICODETEXT
).
INSTALLATION on a UNIX-ALIKE:
-
The PDF manuals (if built) can be compacted by the new target
make compact-pdf
(at the top level or in directorydoc/manual
). -
There is now configure support for LLVM clang 15 on Linux, which
defaults to position-independent (PIE) executables whereas
gfortran does not. -
Many small changes to ease compilation (and suppress warnings)
with LLVM clang 15.
BUG FIXES:
-
Rscript -e
would fail ifstdin
were closed (Reported by Henrik
Bengtsson.) -
qt(*, log.p=TRUE)
in outer tails no longer produces NaN in its
final steps, thus fixing PR#18360. -
tools::Rd2latex()
now escapes hashes and ampersands when writing
URLs, fixing LaTeX errors with such URLs in\tabular
. -
When
isGeneric(f, fdef=*)
is used with mismatching names, the
warning is better understandable; reported (with fix) in PR#18370
by Gabe Becker. -
poly(x, n)
now works again (and is now documented) whenx
is a
"Date" or "POSIXct" object, or of another class while fulfilling
mode(x) == "numeric"
. This also enablespoly(x, *, raw=TRUE)
for
such variables. Reported by Michael Chirico to R-devel. -
write.table()
,write.csv()
andwrite.csv2()
restore their
numerical precision (internal equivalent ofdigits = 15
) after an
interrupt (PR#18384). -
One can now read also byte
FF
from a clipboard connection
(PR#18385). -
source("")
andsource(character())
now give more helpful error
messages. -
R CMD check --as-cran
set_R_CHECK_TIMINGS_
too late to have the
intended effect. -
as.POSIXlt(x)
now also works with very large datesx
, fixing
PR#18401 reported by Hannes Mühleisen. -
Files can now be extracted even from very large zip archives
(PR#18390, thanks to Martin Jakt). -
Non-finite objects of class "POSIXlt" are now correctly coerced
to classes "Date" and "POSIXct"; following up on the extension to
format()
them correctly. -
Added methods for
is.finite()
,is.infinite()
andis.nan()
for
"POSIXlt" date-time objects.
BUG FIXES on Windows:
-
Non-ASCII characters are now properly displayed on Windows in
windows created using GraphApp via e.g.winDialogString
thanks to
a workaround for an at least surprising Windows behavior with
UTF-8 as the system encoding (PR#18382). -
Find and replace operations work again in the script editor in
Rgui on Windows. -
Computation of window size based on requested client size in
GraphApp when running in a multi-byte locale on Windows has been
fixed (regression in R 4.2.0 for users of systems where R 4.1
used a single-byte locale). Rgui again respects the number of
console rows and columns given in Rconsole file. -
Rterm support for Alt+xxx sequences has been fixed to produce the
corresponding character (only) once. This fixes pasting text with
tilde on Italian keyboard (PR#18391).
R 4.2.1
CHANGES IN R 4.2.1
NEW FEATURES:
-
New function
utils::findCRANmirror()
to find out if a CRAN mirror
has been selected, otherwise fallback to the main site. This
behaves in the same way astools::CRAN_package_db()
and is
intended for packages wishing to access CRAN for purposes other
than installing packages.The need for this was shown by a day when the main CRAN website
was offline and a dozen or so packages which had its URL
hardcoded failed their checks.
INSTALLATION on a UNIX-ALIKE:
-
The libraries searched for by
--with-blas
(without a value) now
include BLIS (after OpenBLAS but before ATLAS). And on macOS,
the Accelerate framework (after ATLAS). (This is patterned after
the AX_BLAS macro from the Autoconf Archive.) -
The included LAPACK sources have been updated to 3.10.1.
UTILITIES:
-
The (full path to) the command tidy to be used for HTML
validation can be set by environment variableR_TIDYCMD
. -
Setting environment variable
_R_CHECK_RD_VALIDATE_RD2HTML_
to a
false value will overrideR CMD check --as-cran
and turn off HTML
validation. This provides a way to circumvent a problematic
tidy.The 2006 version that ships with macOS is always skipped.
C-LEVEL FACILITIES:
- The undocumented legacy declarations of
Sint
,Sfloat
,SINT_MAX
andSINT_MIN
in headerR.h
are deprecated.
BUG FIXES:
-
fisher.test(d)
no longer segfaults for "large"d
; fixing PR#18336
by preventing/detecting an integer overflow reliably. -
tar(., files=*)
now produces correctly the warning about invalid
uid or gid of files, fixing PR#18344, reported by Martin Morgan. -
tk_choose.files()
withmulti = FALSE
misbehaved on paths
containing spaces (PR#18334) (regression introduced in R 4.0.0). -
sort(x, partial = ind, *)
now works correctly notably for the
non-defaultna.last = FALSE
orTRUE
, fixing PR#18335 reported by
James Edwards. -
Environment variable
_R_CHECK_XREFS_REPOSITORIES_
is only used
for checking.Rd
cross-references inR CMD check
(as documented)
and not for other uses looking for a CRAN mirror. -
The search for a CRAN mirror when checking packages now uses
getOption("repos")
if that specifies a CRAN mirror, even when it
does not also specify all three Bioconductor repositories (as was
previously required). -
The HTML code generated by
tools::Rd2HTML()
has been improved to
pass tidy 5.8.0.
BUG FIXES on Windows:
-
Writing to a clipboard connection works again, fixing a
regression in R 4.2.0 (PR#18332). Re-using a closed clipboard
connection longer issues a spurious warning about an ignored
encoding argument. -
C function
getlocale
no longer attempts to query an unsupported
category from the OS, even when requested at R level, which may
cause crashes when R 4.2.0 (which uses UCRT) is embedded
(reported by Kevin Ushey). -
Accent keys now work in GraphApp Unicode windows, which are used
by Rgui whenever running in a multibyte locale (so also in UTF-8,
hence fixing a regression in R 4.2.0 for users of systems where R
4.1 used a single-byte locale). -
Completion in Rgui now works also with non-ASCII characters.
-
Rgui no longer truncates usage information with
--help
. -
Text injection from external applications via SendInput now works
in GraphApp Unicode windows, fixing a regression in R 4.2.0 for
Rgui users of systems where R 4.1 used a single-byte locale but R
4.2.0 uses UTF-8. -
Performance of
txtProgressBar()
in Rgui when running in a
multi-byte locale has been improved (fixing a performance
regression in R 4.2.0 for users of systems where R 4.1 used a
single-byte locale). -
The script editor in Rgui now works also on systems using UTF-8
as the native encoding. Users of the script editor have to
convert their scripts with non-ASCII characters to UTF-8 before
reading them in R 4.2.1 or newer (on recent Windows where UTF-8
is used). This fixes a regression in R 4.2.0, which prevented
some operations with scripts when they contained non-ASCII
characters.