CHANGES IN R 4.0.3
# NEW FEATURES:-
On platforms using configure option
--with-internal-tzcode
,
additional values"internal"
and (on macOS only)"macOS"
are
accepted for the environment variableTZDIR
. (See?TZDIR
.)On macOS,
"macOS"
is used by default if the system timezone
database is a newer version than that in the R installation. -
When
install.packages(type = "source")
fails to find a package in
a repository it mentions package versions which are excluded by
their R version requirement and links to hints on why a package
might not be found. -
The default value for
options("timeout")
can be set from
environment variableR_DEFAULT_INTERNET_TIMEOUT
, still defaulting
to 60 (seconds) if that is not set or invalid.This may be needed when child R processes are doing downloads,
for example during the installation of source packages which
download jars or other forms of data.
LINK-TIME OPTIMIZATION on a UNIX-ALIKE:
-
There is now support for parallelized Link-Time Optimization
(LTO) with GCC and for 'thin' LTO with clang via setting the
LTO macro. -
There is support for setting a different
LTO
flag for the Fortran
compiler, including to empty when mixing clang and gfortran (as
on macOS). See fileconfig.site
. -
There is a new
LTO_LD
macro to set linker options for LTO
compilation, for example to select an alternative linker or to
parallelize thin LTO.
DEPRECATED AND DEFUNCT:
- The
LINPACK
argument tochol.default()
,chol2inv()
,
solve.default()
andsvd()
has been defunct since R 3.1.0. Using
it now gives a warning which will become an error in R 4.1.0.
BUG FIXES:
-
The code mitigating stack overflow with PCRE regexps on very long
strings is enabled for PCRE2 < 10.30 also when JIT is enabled,
since stack overflows have been seen in that case. -
Fix to correctly show the group labels in
dotchart()
(which where
lost in the ylab improvement for R 4.0.0). -
addmargins(*, ..)
now also works whenfn()
is a local function,
thanks to bug report and patch PR#17124 from Alex Bertram. -
rank(x)
and hencesort(x)
now work when x is an object (as per
is.object(x))
of type "raw" and provides a valid[
method,
e.g., forgmp::as.bigz(.)
numbers. -
chisq.test(*, simulate.p.value=TRUE)
andr2dtable()
now work
correctly for large table entries (in the millions). Reported by
Sebastian Meyer and investigated by more helpers in PR#16184. -
Low-level socket read/write operations have been fixed to
correctly signal communication errors. Previously, such errors
could lead to a segfault due to invalid memory access. Reported
and debugged by Dmitriy Selivanov in PR#17850. -
quantile(x, pr)
works more consistently for pr values slightly
outside [0,1], thanks to Suharto Anggono's PR#17891.Further,
quantile(x, prN, names=FALSE)
now works even when prN
containsNA
s, thanks to Anggono's PR#17892. Ditto for ordered
factors or Date objects whentype = 1
or3
, thanks to PR#17899. -
Libcurl-based internet access, including
curlGetHeaders()
, was
not respecting the"timeout"
option. If this causes
unanticipated timeouts, consider increasing the default by
settingR_DEFAULT_INTERNET_TIMEOUT
. -
as.Date(<char>)
now also works with an initial "", thanks to
Michael Chirico's PR#17909. -
isS3stdGeneric(f)
now detects an S3 generic also when it it is
trace()
d, thanks to Gabe Becker's PR#17917. -
R_allocLD()
has been fixed to return memory aligned for long
double type PR#16534. -
fisher.test()
no longer segfaults when called again after its
internal stack has been exceeded PR#17904. -
Accessing a long vector represented by a compact integer sequence
no longer segfaults (reported and debugged by Hugh Parsonage). -
duplicated()
now works also for strings with multiple encodings
inside a single vector PR#17809. -
phyper(11, 15, 0, 12, log.p=TRUE)
no longer gives NaN; reported
as PR#17271 by Alexey Stukalov. -
Fix incorrect calculation in
logLik.nls()
PR#16100, patch from
Sebastian Meyer. -
A very old bug could cause a segfault in
model.matrix()
when
terms involved logical variables. Part of PR#17879. -
model.frame.default()
allowed data = 1, leading to involuntary
variable capture (rest of PR#17879). -
tar()
no longer skips non-directory files, thanks to a patch by
Sebastian Meyer, fixing the remaining part of PR#16716.