Skip to content

Releases: r-hub/R

R 4.4.2

31 Oct 20:31
Compare
Choose a tag to compare
CHANGES IN R 4.4.2

C-LEVEL FACILITIES:

  • The S-compatibility macros F77_COM and F77_COMDECL defined in
    header R_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 large x.

  • 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

14 Jun 08:15
Compare
Choose a tag to compare
CHANGES IN R 4.4.1

C-LEVEL FACILITIES:

  • Functions R_atof and R_strtod declared in header R_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 and Rf_isBlankString have been added to those
    reported by R CMD check.

  • The new function Rf_allocLang is now available. This provides an
    alternative to the idiom of calling Rf_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 function R_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 with NA'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 potentially qpois(), qnbinom(), no longer sometimes
    fail accurate inversion (of pbinom(), 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 returns character(0) when ch0
    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 in 00check.log) for a package which declares an
    invalid VignetteBuilder in DESCRIPTION but has no vignettes.

R 4.4.0

24 Apr 07:43
Compare
Choose a tag to compare
CHANGES IN R 4.4.0

SIGNIFICANT USER-VISIBLE CHANGES:

  • Startup banners, R --version, sessionInfo() and R 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 returns FALSE, as NULL is not an atomic
    vector. Strict back-compatibility would replace is.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 for profile() and the plot() and pairs() methods for class
    "profile" have been copied from MASS to stats. (profile.nls()
    and plot.profile.nls() were already in stats.)

  • The confint() and profile() 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
    new test = 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 via name = instead of index ind =.

  • methods() and .S3methods() gain a all.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., from save.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, currently Sys.info()["user"] or LOGNAME.
    This is a (modified) fulfillment of Will Landau's suggestion in
    PR#17530.

  • tools::testInstalledBasic() gets new optional arguments outDir
    and testSrcdir, e.g., allowing to use it in a <builddir> != <srcdir> setup, and in standard "binary" Windows installation
    if a source tests/ folder is present.

  • range(<DT_with_Inf>, finite = TRUE) now work for objects of class
    "Date", "POSIXct", and "POSIXlt" with infinite entries,
    analogously to range.default(), as proposed by Davis Vaughan on
    R-devel. Other range()-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
    argument uplo = "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 by memCompress(type = "gzip").

  • memCompress() and memDecompress() will use the libdeflate library
    (https://github.com/ebiggers/libdeflate) if installed. This
    uses the same type of compression for type = "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() and rsmirnov() in package stats
    have had argument two.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() and Exec() to support
    writing stack-space-efficient recursive functions.

  • Where characters are attempted to be plotted by pdf(),
    postscript() and xfig() 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 whose iconv() 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() and tcrossprod()
    are now also primitive and S3 generic, as %*% had become in R
    4.3.0.

  • source() and example() have a new optional argument catch.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() and cairo_ps() default to onefile = TRUE to closer
    match pdf() and postscript().

  • 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 or if(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 returned NULL.

  • as.complex("1i") now returns 0 + 1i instead of NA with a warning.

  • z <- c(NA, 1i) now keeps the imaginary part Im(z[1]) == 0, no
    longer coercing to NA_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 the pdf() and postscript() 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 ...

Read more

R 4.3.3

29 Feb 10:36
Compare
Choose a tag to compare
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'e Pag`es 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.

R 4.3.2

01 Nov 11:19
Compare
Choose a tag to compare
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.

R 4.3.1

17 Jun 09:46
Compare
Choose a tag to compare
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).

R 4.3.0

22 Apr 00:03
Compare
Choose a tag to compare
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() and xyz.coords() and consequently, e.g., plot(x,y, log = "y") now signal a classed warning about negative values
    of y (where log(.) is NA). Such a warning can be specifically
    suppressed or caught otherwise.

  • Regular expression functions now check more thoroughly whether
    their inputs are valid strings (in their encoding, e.g. in
    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 0s.

  • solve() for complex inputs now uses argument tol and by default
    checks for ‘computational singularity’ (as it long has done for
    numeric inputs).

  • predict(<rank-deficient lm>, newdata=*) now obeys a new argument
    rankdeficient, with new default "warnif", warning only if there
    are non-estimable cases in newdata. Other options include
    rankdeficient = "NA", predicting NA for non-estimable newdata
    cases. This addresses PR#15072 by Russ Lenth and is based on his
    original proposal and discussions in PR#16158 also by David Firth
    and Elin Waring. Still somewhat experimental.

  • Rgui console implementation now works better with the NVDA screen
    reader when the full blinking cursor is selected. The underlying
    improvements in cursor handling may help also other screen
    readers on Windows.

  • The drop-field control in GraphApp can now be left with the TAB
    key and all controls can be navigated in the reverse order using
    the Shift+TAB key, improving accessibility of the Rgui
    configuration editor.

  • qnorm(<very large negative>, log.p=TRUE) is now fully accurate
    (instead of to “only” minimally five digits).

  • demo(error.catching) now also shows off withWarnings() and
    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
    valu...

Read more

R 4.2.3

19 Mar 11:40
Compare
Choose a tag to compare
CHANGES in R 4.2.3

C-LEVEL FACILITIES:

  • The definition of DL_FUNC in R_ext/Rdynload.h has been changed to
    be fully C-compliant. This means that functions loaded via for
    example R_GetCCallable need to be cast to an appropriate type if
    they have any arguments.

  • .Machine has a new element sizeof.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 of NA in R
    4.2.2, e.g., for

        x <- 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 a src/Makevars.{win,ucrt} file.

  • format(<POSIXlt_w/_unbalanced_sec>, "....%OS<n>") with n > 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 long class(), 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 leaves devAskNewPage() unchanged
    even when it was FALSE, thus fixing a 14 years old ‘’.

  • packageDescription() again catches errors from encoding
    conversions. This also fixes broken packageVersion() in C locale
    on systems where iconv does not support transliteration.

R 4.2.2

10 Jan 20:49
Compare
Choose a tag to compare
CHANGES IN R 4.2.2

NEW FEATURES:

  • tools::Rdiff(useDiff = TRUE) checks for the presence of an
    external diff command and switches to useDiff = FALSE if none is
    found. This allows R 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 directory doc/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 if stdin 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) when x is a
    "Date" or "POSIXct" object, or of another class while fulfilling
    mode(x) == "numeric". This also enables poly(x, *, raw=TRUE) for
    such variables. Reported by Michael Chirico to R-devel.

  • write.table(), write.csv() and write.csv2() restore their
    numerical precision (internal equivalent of digits = 15) after an
    interrupt (PR#18384).

  • One can now read also byte FF from a clipboard connection
    (PR#18385).

  • source("") and source(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 dates x, 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() and is.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

04 Jul 17:37
Compare
Choose a tag to compare
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 as tools::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 variable R_TIDYCMD.

  • Setting environment variable _R_CHECK_RD_VALIDATE_RD2HTML_ to a
    false value will override R 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
    and SINT_MIN in header R.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() with multi = 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-default na.last = FALSE or TRUE, fixing PR#18335 reported by
    James Edwards.

  • Environment variable _R_CHECK_XREFS_REPOSITORIES_ is only used
    for checking .Rd cross-references in R 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.