| % -*- coding: utf-8 -*- |
| \newcommand{\Rlogo}{\if{html}{\figure{../../html/Rlogo.svg}{options: class="toplogo" alt="[R logo]"}}\if{latex}{\figure{Rlogo.pdf}{options: width=0.5in}}} |
| |
| \name{NEWS} |
| \title{R News} |
| \encoding{UTF-8} |
| |
| \section{\Rlogo CHANGES IN R-devel}{ |
| \subsection{SIGNIFICANT USER-VISIBLE CHANGES}{ |
| \itemize{ |
| \item Calling \code{&&} or \code{||} with either argument of |
| length greater than one is now an error. |
| [Scheduled for May 2.] |
| } |
| } |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item Placeholder. |
| } |
| } |
| |
| \subsection{INSTALLATION on a UNIX-ALIKE}{ |
| \itemize{ |
| \item A system installation of generic LAPACK 3.10.0 or later will |
| be preferred to the version in the \R sources. |
| |
| \command{configure} option \option{--with-lapack=no} (equivalently |
| \option{--without-lapack}) forces compilation of the internal |
| LAPACK sources. |
| |
| If \option{--with-lapack} is not specified, a system |
| \code{liblapack} is looked for and used if it reports version |
| 3.10.0 or later and does not contain BLAS routines. |
| |
| Using 3.10.0 may give some different signs in SVDs (seen in the |
| \file{lapack.R} test). |
| |
| Packages using LAPACK will need to be reinstalled if this changes |
| to using an external library. |
| } |
| } |
| |
| \subsection{PACKAGE INSTALLATION}{ |
| \itemize{ |
| \item \code{USE_FC_LEN_T} is the default: this uses the |
| correct prototypes for Fortran BLAS/LAPACK routines called from |
| C/C++, and requires adjustment of most such calls -- see |
| \sQuote{Writing R Extensions} §6.6.1. |
| |
| [In progress: scheduled for May 5 if enough packages are |
| corrected before then. |
| |
| Setting environment variable \env{_R_INSTALL_USE_FC_LEN_T_} to a |
| true value enables this \emph{pro tem}. This is set by \command{R |
| CMD check --as-cran} when it installs a package.] |
| } |
| } |
| |
| \subsection{C-LEVEL FACILITIES}{ |
| \itemize{ |
| \item The deprecated S-compatibility macros \code{DOUBLE_*} in |
| \file{R_ext/Constants.h} (included by \file{R.h}) have been |
| removed. |
| [Scheduled for Apr 23.] |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item Hashed \code{environment}s with sizes less than 5 now can grow, |
| too. (Reported to R-devel by Duncan Garmonsway.) |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.2.0}{ |
| \subsection{SIGNIFICANT USER-VISIBLE CHANGES}{ |
| \itemize{ |
| \item The \code{formula} method of \code{aggregate()} now matches |
| the generic in naming its first argument \code{x} (resolving |
| \PR{18299} by Thomas Soeiro). |
| |
| This means that calling \code{aggregate()} with a formula as a |
| named first argument requires name \code{formula} in earlier |
| versions of \R and name \code{x} now, so portable code should not |
| name the argument (code in many packages did). |
| |
| \item Calling \code{&&} or \code{||} with either argument of |
| length greater than one now gives a warning (which it is intended |
| will become an error). |
| |
| \item Calling \code{if()} or \code{while()} with a condition of |
| length greater than one gives an error rather than a warning. |
| Consequently, environment variable |
| \env{_R_CHECK_LENGTH_1_CONDITION_} no longer has any effect. |
| |
| \item Windows users should consult the WINDOWS section below for |
| some profound changes including |
| \itemize{ |
| \item Support for 32-bit builds has been dropped. |
| \item UTF-8 locales are used where available. |
| \item The default locations for the \R installation and personal |
| library folder have been changed. |
| } |
| |
| Thanks to Tomas Kalibera for months of work on the Windows port |
| for this release. |
| } |
| } |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item \code{matrix(x, n, m)} now warns in more cases where |
| \code{length(x)} differs from \code{n * m}, as suggested by Abby |
| Spurdle and Wolfgang Huber in Feb 2021 on the R-devel mailing |
| list. |
| |
| This warning can be turned into an error by setting environment |
| variable \env{_R_CHECK_MATRIX_DATA_} to \samp{TRUE}: \command{R |
| CMD check --as-cran} does so unless it is already set. |
| |
| \item Function \code{file_test()} in package \pkg{utils} gains |
| tests for symlinks, readability and writability. |
| |
| |
| \item \code{capabilities("libxml")} is now false. |
| |
| The description of \code{capabilities("http/ftp")} now reflects |
| that it refers to the default method, no longer the internal one. |
| |
| \item \code{simplify2array()} gains an \code{except} argument for |
| controlling the exceptions used by \code{sapply()}. |
| |
| \item Environment variables \env{R_LIBS_USER} and |
| \env{R_LIBS_SITE} are both now set to the \R system default if |
| unset or empty, and can be set to \code{NULL} to indicate an empty |
| list of user or site library directories. |
| |
| \item The warning for \code{axis()}(-like) calls in cases of relatively |
| small ranges (typically in log-scale situations) is slightly improved |
| \emph{and} suppressed from explicit calls to \code{.axisPars()} as |
| has always been the intention. |
| |
| \item The \code{contrasts} setter function \code{`contrasts<-`} |
| gains an explicit default \code{how.many = NULL} rather than just |
| using \code{missing(how.many)}. |
| |
| \item \code{grid.pretty()} gains a new optional argument \code{n = 5}. |
| |
| \item There is a new function \code{.pretty()} with option |
| \code{bounds} as a technical-utility version of \code{pretty()}. It |
| and \code{pretty()} gain a new argument \code{f.min} with a better |
| than back-compatible default. |
| |
| \item Function \code{grDevices::axisTicks()} and related functions |
| such as \code{graphics::axis()} work better, notably for the log |
| scale; partly because of the \code{pretty()} improvements, but also |
| because care is taken e.g., when \code{ylim} is finite but |
| \code{diff(ylim)} is infinite. |
| |
| \item \code{nclass.FD()} gains a \code{digits} option. |
| |
| |
| \item The R Mathlib internal C function \code{bd0()} (called |
| indirectly from a dozen probability density and distribution |
| functions such as \code{dpois()}, \code{dbinom()}, |
| \code{dgamma()}, \code{pgamma()} \emph{etc}) has been complemented |
| by a more sophisticated and (mostly) more accurate C function |
| \code{ebd0()}, currently called only by internal |
| \code{dpois_raw()} improving accuracy for \R level \code{dpois()} |
| and potentially others calling it such as \code{dnbinom()}, |
| \code{dgamma()} or \code{pgamma()}. (Thanks to Morten Welinder's |
| \PR{15628}.) |
| |
| \item \code{write.ftable()} gains \code{sep = " "} argument as |
| suggested by Thomas Soeiro. |
| |
| \item The names of the locale categories supported by \R's |
| \code{Sys.getlocale()} and \code{Sys.setlocale()} are now provided |
| by variable \code{.LC.categories} in the \code{base} namespace. |
| |
| \item The \code{Date} and \code{POSIXt} methods for \code{hist()} |
| and the \code{histogram} method for \code{plot()} now also use the |
| new default \code{col = "lightgray"} in consistency with the |
| corresponding change to \code{hist()}'s default for \R 4.0.0. |
| |
| \item \code{hist.default()} gains new \code{fuzz} argument, and the |
| histogram \code{plot} method no longer uses fractional axis ticks |
| when displaying counts (\code{"Frequency"}). |
| |
| \item \code{mapply()} and hence \code{Map()} now also obey the |
| \dQuote{max-or-0-if-any} recycling rule, such that, e.g., |
| \code{Map(`+`, 1:3, 1[0])} is valid now. |
| |
| \item \code{as.character(<obj>)} for \code{"hexmode"} or |
| \code{"octmode"} objects now fulfils the important basic rule |
| \code{as.character(x)[j] === as.character(x[j])}. |
| |
| \item The set utility functions, notably \code{intersect()} have been |
| tweaked to be more consistent and symmetric in their two set |
| arguments, also preserving a common \code{mode}, see \code{?sets}. |
| |
| \item \code{substr(ch, start,end) <- new} now e.g., preserves |
| \code{names(ch)}; ditto for \code{substring()}, thanks to a patch |
| from Brodie Gaslam. |
| |
| \item \code{plot(<lm>)} gains a \code{extend.ylim.f} argument, in |
| partial response to \PR{15285}; further \PR{17784} is fixed thanks to |
| several contributors and a patch by Elin Waring. |
| The Cook's dist contours get customizable via \code{cook.col} and |
| \code{cook.lty} with a different default color and their legend is |
| nicer by default and customizable via \code{cook.legendChanges}. |
| |
| \item Attempting to subset an object that is not subsettable now |
| signals an error of class \code{notSubsettableError}. The |
| non-subsettable object is contained in the \code{object} field of |
| the error condition. |
| |
| \item Subscript-out-of-bounds errors are now signaled as errors of |
| class \code{subscriptOutOfBoundsError}. |
| |
| \item Stack-overflow errors are now signaled as errors inheriting |
| from class \code{stackOverflowError}. See |
| \code{?stackOverflowError} for more details. |
| |
| \item New partly experimental \code{Sys.setLanguage()} utility, |
| solving the main problem of \PR{18055}. |
| |
| \item \code{gettext()} and \code{gettextf()} get a new option |
| \code{trim = TRUE} which when set to false allows translations for |
| strings such as \code{"Execution halted\n"} typical for C code. |
| |
| \item An experimental implementation of hash tables is now |
| available. See \code{?hashtab} for more details. |
| |
| \item \code{identical()} gains a \code{extptr.as.ref} argument for |
| requesting that external pointer objects be compared as reference |
| objects. |
| |
| \item \code{reorder()} gets an argument \code{decreasing} which it |
| passes to \code{sort()} for level creation; based on the wish and |
| patch by Thomas Soeiro in \PR{18243}. |
| |
| \item \code{as.vector()} gains a \code{data.frame} method which |
| returns a simple named list, also clearing a long standing |
| \sQuote{FIXME} to enable \code{as.vector(<data.frame>, |
| mode="list")}. This breaks code relying on |
| \code{as.vector(<data.frame>)} to return the unchanged data frame. |
| |
| \item \code{legend()} is now vectorized for arguments \code{cex}, |
| \code{x.intersp}, and \code{text.width}. |
| The latter can now also be specified as a vector (one element for |
| each column of the legend) or as \code{NA} for computing a proper |
| column wise maximum value of \code{strwidth(legend)}. |
| The argument \code{y.intersp} can be specified as a vector with |
| one entry for each row of the legend. |
| |
| \code{legend()} also gains new arguments \code{title.cex} and |
| \code{title.font}. Thanks to Swetlana Herbrandt. |
| |
| \item Deparsing no longer remaps attribute names \code{dim}, |
| \code{dimnames}, \code{levels}, \code{names} and \code{tsp} to |
| historical S-compatible names (which \code{structure()} maps back). |
| |
| \item \code{sample()} and \code{sample.int()} have additional |
| sanity checks on their \code{size} and \code{n} arguments. |
| |
| \code{all.equal.numeric()} gains a sanity check on its |
| \code{tolerance} argument -- calling \code{all.equal(a, b, c)} for |
| three numeric vectors is a surprisingly common error. |
| |
| \code{mean(na.rm =)}, \code{rank(na.last =)}, |
| \code{barplot(legend.text =)}, \code{boxplot()}, |
| \code{contour(drawlabels =)}, \code{polygon(border =)} and |
| \code{methods::is(class2 =)} have more robust sanity checks on |
| their arguments. |
| |
| \command{R CMD Rd2pdf} (used by \command{R CMD check}) has a more |
| robust sanity check on the format of \code{\\alias{}} commands. |
| |
| \item \code{psigamma(x, deriv)} for negative \code{x} now also works |
| for \code{deriv = 4} and \code{5}; their underlying C level |
| \code{dpsifn()} is documented in \sQuote{Writing R Extensions}. |
| |
| \item The HTML help system now uses HTML5 (wish of \PR{18149}). |
| |
| \item \code{ks.test()} now provides exact p-values also with ties |
| and MC p-values in the two-sample (Smirnov) case. By Torsten |
| Hothorn. |
| |
| \item \code{ks.test()} gains a formula interface, with \code{y ~ 1} |
| for the one-sample (Kolmogorov) test and \code{y ~ group} for the |
| two-sample (Smirnov) test. Contributed by Torsten Hothorn. |
| |
| \item The return value from \code{ks.test()} now has class |
| \code{c("ks.test", "htest")} -- packages using \code{try()} need |
| to take care to use \code{inherits()} and not \code{==} on the class. |
| |
| \item New functions \code{psmirnov()}, \code{qsmirnov()} and |
| \code{rsmirnov()} in package \pkg{stats} implementing the |
| asymptotic and exact distributions of the two-sample Smirnov statistic. |
| |
| \item \code{iconv()} now allows \code{sub = "c99"} to use C99-style |
| escapes for UTF-8 inputs which cannot be converted to encoding \code{to}. |
| |
| \item In a forward pipe \code{|>} expression it is now possible to |
| use a named argument with the placeholder \code{_} in |
| the \code{rhs} call to specify where the \code{lhs} is to be |
| inserted. The placeholder can only appear once on the \code{rhs}. |
| |
| \item The included LAPACK sources have been updated to version 3.10.0, |
| except for the four Fortran 77 routines which 3.10.0 has |
| re-implemented in Fortran 90 (where the older versions have been |
| retained as the \R build process does not support Fortran 90). |
| |
| \item \code{path.expand()} and most other uses of tilde expansion now |
| warn if a path would be too long if expanded. (An exception is |
| \code{file.exists()}, which silently returns false.) |
| |
| \item \code{trunc(<Date>, *)} now supports \code{units = "months"} |
| or \code{"years"} for consistency with the \code{POSIXt} method, |
| thanks to Dirk Eddelbuettel's proposal in \PR{18099}. |
| |
| \item The HTML help system has several new features: LaTeX-like |
| math can be typeset using either \href{https://katex.org/}{KaTeX} |
| or \href{https://www.mathjax.org/}{MathJax}, usage and example |
| code is highlighted using \href{https://prismjs.com}{Prism}, and |
| for dynamic help the output of examples and demos can be shown |
| within the browser if the \CRANpkg{knitr} package is |
| installed. These features can be disabled by setting the |
| environment variable \code{_R_HELP_ENABLE_ENHANCED_HTML_} to a |
| false value. |
| |
| } |
| } |
| |
| \subsection{GRAPHICS}{ |
| \itemize{ |
| \item The graphics engine version, \code{R_GE_version}, has been |
| bumped to \code{15} and so packages that provide graphics devices |
| should be reinstalled. |
| |
| \item The \pkg{grid} package now allows the user to specify a |
| \dQuote{vector} of pattern fills. The \code{fill} argument |
| to \code{gpar()} accepts a list of gradients and/or patterns and |
| the functions \code{linearGradient()}, \code{radialGradient()}, |
| and \code{pattern()} have a new \code{group} argument. |
| |
| Points grobs (data symbols) can now also have a pattern fill. |
| |
| The \code{grobCoords()} function now returns a more informative |
| and complex result. |
| |
| \item The \pkg{grid} package has new functions for drawing |
| isolated groups: \code{grid.group()}, \code{grid.define()}, and |
| \code{grid.use()}. These functions add compositing operators and |
| affine transformations to R's graphics capabilities. |
| |
| The \pkg{grid} package also has new functions for stroking |
| and filling paths: \code{grid.stroke()}, \code{grid.fill()}, |
| and \code{grid.fillStroke()}. |
| |
| A new function \code{as.path()} allows the user to specify the |
| fill rule for a path that is to be used for clipping, stroking, or |
| filling; available options are \code{"winding"} and |
| \code{"evenodd"}. A new function \code{as.mask()} allows the user |
| to specify the type of a mask; available options are |
| \code{"alpha"} and \code{"luminance"}. |
| |
| These new features are only supported so far (at most) on the |
| Cairo-based graphics devices and on the \code{pdf()} device. |
| |
| \item \code{dev.capabilities()} reports on device support |
| for the new features. |
| |
| \item \code{par()} now warns about unnamed non-character arguments |
| to prevent misuse such as \code{{usr <- par("usr"); par(usr)}}. |
| } |
| } |
| |
| \subsection{WINDOWS}{ |
| \itemize{ |
| \item \R uses UTF-8 as the native encoding on recent Windows |
| systems (at least Windows 10 version 1903, Windows Server 2022 or |
| Windows Server 1903). As a part of this change, R uses UCRT as |
| the C runtime. UCRT should be installed manually on systems older |
| than Windows 10 or Windows Server 2016 before installing \R. |
| |
| \item The default personal library on Windows, folder |
| \file{R\\win-library\\x.y} where \file{x.y} stands for \R release |
| \file{x.y.z}, is now a subdirectory of Local Application Data |
| directory (usually a hidden directory |
| \file{C:\\Users\\username\\AppData\\Local}). Use |
| \code{shell.exec(.libPaths()[1])} from \R to open the personal |
| library in Explorer when it is first in the list (\PR{17842}). |
| |
| \item \R uses a new 64-bit Tcl/Tk bundle. The previous |
| 32-bit/64-bit bundle had a different layout and can no longer be |
| used. |
| |
| \item Make files and installer scripts for Windows have been |
| tailored to \file{Rtools42}, the newly recommended 64-bit |
| \command{gcc} 10.3 MinGW-W64 UCRT toolchain. |
| |
| \item \file{Rtools42} by default uses the Windows security |
| features ASLR and DEP; hence CRAN builds of \R and packages also |
| do. |
| |
| \item \R now supports files \file{Makevars.ucrt}, |
| \file{Makefile.ucrt}, \file{configure.ucrt} and |
| \file{cleanup.ucrt} in packages, which are used in preference to |
| the \file{.win} variants. This allows keeping the \file{.win} |
| files around to support older versions of \R. This feature will |
| be removed in the future once support for older versions of \R |
| would no longer be needed. |
| |
| \item \code{R.version} gains a new field \code{crt} (only on |
| Windows) to denote the C runtime. The value is \code{"ucrt"}. |
| |
| \item On Windows, \code{download.file(method = "auto")} and |
| \code{url(method = "default")} now follow Unix in using |
| \code{"libcurl"} for all except \samp{file://} URIs. |
| |
| \item \file{Rtools42} includes an unpatched Msys2 build of GNU |
| \command{tar}. Paths including drive letters can be made to work |
| by adding \option{--force-local} to environment variable |
| \env{TAR_OPTIONS}. (\file{Rtools40} and earlier included a |
| patched version which defaulted to this option.) |
| |
| \item Installer builds of \R automatically find the |
| \file{Rtools42} software collection as well as the compiler |
| toolchain. No \env{PATH} setting is required from the user. |
| |
| \item The default installation directory of R for a user-only |
| installation has been changed to the User Program Files directory |
| (usually a hidden directory |
| \file{C:\\Users\\username\\AppData\\Local\\Programs}) to follow |
| Windows conventions. Use \code{shell.exec(R.home())} from \R{} to |
| open the \R installation directory in Explorer (\PR{17842}). |
| |
| \item \R now supports installation-time patching of packages. |
| Patches may be installed from a supplied URL or a local directory |
| or disabled. Patches are included into the installed packages for |
| reference. This experimental feature may be removed in the |
| future. |
| |
| \item \code{libcurl} is now required for building from source. |
| |
| \item The clipboard connection now works also with text in other |
| than the current native encoding (\PR{18267}, with Hiroaki |
| Yutani). Text is always pasted to the clipboard in UTF16-LE and |
| the \code{encoding} argument is ignored. |
| |
| \item The internal case-changing functions are now used by default |
| on Windows -- this circumvents problems (for example with E acute) |
| of the UCRT Windows' runtime. |
| |
| \item \R on Windows now uses the system memory allocator. Doug |
| Lea's allocator was used since \R 1.2.0 to mitigate performance |
| limitations seen with system allocators on earlier versions of |
| Windows. |
| |
| \item \code{memory.limit()} and \code{memory.size()} are now stubs on |
| Windows (as on Unix-alikes). |
| |
| \item Applications embedding \R on Windows can now use additional |
| callbacks, which have so far only been available only on Unix |
| (\PR{18286}). |
| } |
| } |
| |
| |
| \subsection{INSTALLATION}{ |
| \itemize{ |
| \item Facilities for accessing \samp{ftp://} sites are no longer |
| tested (except \emph{pro tem} for \code{curlGetHeaders()}) as modern |
| browsers have removed support. |
| %% Chrome and Firefox did in early 2021: Safari and Edge never had it. |
| |
| \item \R can now be built with \samp{DEFS = -DSTRICT_R_HEADERS} . |
| } |
| } |
| |
| |
| \subsection{PACKAGE INSTALLATION}{ |
| \itemize{ |
| \item \command{R CMD INSTALL} no longer tangles vignettes. This |
| completes an \command{R CMD build} change in \R 3.0.0 and affects |
| packages built before \R 3.0.2. Such packages should be re-made |
| with \command{R CMD build} to have the tangled \R code of vignettes |
| shipped with the tarball. |
| |
| \item \code{USE_FC_LEN_T} will become the default: this uses the |
| correct prototypes for Fortran BLAS/LAPACK routines called from |
| C/C++, and requires adjustment of most such calls -- see |
| \sQuote{Writing R Extensions} §6.6.2. (This has been supported |
| since \R 3.6.2.) |
| |
| \item Package installation speed for packages installed with |
| \code{keep.source} has been improved. This resolve the issue |
| reported by Ofek Shilon in \PR{18236}. |
| } |
| } |
| |
| \subsection{UTILITIES}{ |
| \itemize{ |
| \item \command{R CMD check} can optionally report |
| files/directories left behind in home, \file{/tmp} (even though |
| \env{TMPDIR} is set) and other directories. See the \dQuote{R |
| Internals} manual for details. |
| |
| \item \command{R CMD check} now reports byte-compilation errors |
| during installation. These are not usually fatal but may result |
| in parts of the package not being byte-compiled. |
| |
| \item \env{_R_CHECK_DEPENDS_ONLY_} can be applied selectively to |
| examples, tests and/or vignettes in \command{R CMD check}: see the |
| \dQuote{R Internals} manual. |
| |
| \item \env{_R_CHECK_SRC_MINUS_W_IMPLICIT_} now defaults to true: |
| recent versions of Apple \command{clang} on macOS have made |
| implicit function declarations in C into a compilation error. |
| |
| \item \command{R CMD check --as-cran} makes use of the |
| environment variable \env{AUTORECONF}. See the |
| \dQuote{R Internals} manual §8 for further details. |
| |
| \item \command{R CMD check --use-valgrind} also uses |
| \command{valgrind} when re-building vignettes as some non-Sweave |
| vignettes unhelpfully comment out all their code when |
| \command{R CMD check} runs vignettes. |
| |
| \item Errors in re-building vignettes (unless there are LaTeX |
| errors) are reported by \command{R CMD check} as \samp{ERROR} rather |
| than \samp{WARNING} when running vignettes has been skipped (as it |
| frequently is in \acronym{CRAN} checks and by \option{--as-cran}). |
| |
| \item \command{R CMD Rd2pdf} gains a \option{--quiet} option that is |
| used by \command{R CMD build} when building the PDF package manual. |
| |
| \item \command{R CMD Rd2pdf} now always runs LaTeX in batch mode, |
| consistent with Texinfo \eqn{\ge}{>=} 6.7. The \option{--batch} |
| option is ignored. |
| |
| \item \command{R CMD build} and \command{R CMD check} now include |
| the Rd file name and line numbers in the error message of an |
| \verb{\Sexpr} evaluation failure. |
| |
| \item For packages using the \verb{\doi} Rd macro (now an |
| install-time \verb{\Sexpr}) but no other dynamic Rd content, |
| \command{R CMD build} now produces a smaller tarball and is |
| considerably faster -- skipping temporary package installation. |
| } |
| } |
| |
| \subsection{C-LEVEL FACILITIES}{ |
| \itemize{ |
| \item The non-API header \file{R_ext/R-ftp-http.h} is no longer |
| provided, as the entry points it covered are now all defunct. |
| |
| \item A number of non-API declarations and macro definitions have |
| been moved from the installed header \file{Rinternals.h} to the |
| internal header \file{Defn.h}. Packages that only use entry points |
| and definitions documented to be part of the API as specified in |
| \sQuote{Writing R Extensions} §6 should not be affected. |
| |
| \item The macro \code{USE_RINTERNALS} no longer has any effect |
| when compiling package code. Packages which also use |
| \code{R_NO_REMAP} will need to ensure that the remapped names are |
| used for calls to API functions that were formerly also made |
| available as macros. |
| |
| \item The deprecated legacy S-compatibility macros \code{PROBLEM}, |
| \code{MESSAGE}, \code{ERROR}, \code{WARN}, \code{WARNING}, |
| \code{RECOVER}, \dots{} are no longer defined in |
| \file{R_exts/RS.h} (included by \file{R.h}). Replace these by |
| calls to \code{Rf_error} and \code{Rf_warning} (defined in header |
| \file{R_ext/Error.h} included by \file{R.h}). |
| |
| Header \file{R_ext/RS.h} no longer includes \file{R_ext/Error.h}. |
| |
| \item Header \file{R_ext/Constants.h} (included by \file{R.h}) |
| when included from C++ now includes the C++ header \file{cfloat} |
| rather than the C header \file{float.h} (now possible as C++11 is |
| required). |
| |
| \item The legacy S-compatibility macros \code{DOUBLE_*} in |
| \file{R_ext/Constants.h} (included by \file{R.h}) are deprecated. |
| |
| \item The deprecated S-compatibility macros \code{SINGLE_*} in |
| \file{R_ext/Constants.h} (included by \file{R.h}) have been |
| removed. |
| |
| \item \code{R_Calloc}, \code{R_Free} and \code{R_Realloc} are |
| preferred to their unprefixed forms and error messages now use the |
| prefix. These forms were introduced in \R 3.4.0 and are available |
| even when \code{STRICT_R_HEADERS} is defined. |
| |
| \item \code{rmultinom} has been documented in \sQuote{Writing R |
| Extensions} §6 so is now part of the \R API. |
| |
| \item Similarly, \code{Rtanpi}, called from \R level \code{tanpi()} |
| is now part of the \R API. |
| |
| \item The long-deprecated, undocumented and non-API entry point |
| \code{call_R} is no longer declared in \file{R_ext/RS.h} (included |
| by \file{R.h}). |
| |
| \item The header \file{S.h} which has been unsupported since Jan |
| 2016 has been removed. Use \file{R.h} instead. |
| } |
| } |
| |
| \subsection{DEPRECATED AND DEFUNCT}{ |
| \itemize{ |
| \item The (non-default and deprecated) \code{method = "internal"} |
| for \code{download.file()} and \code{url()} no longer supports |
| \samp{http://} nor \samp{ftp://} URIs. (It is used only for |
| \samp{file://} URIs.) |
| |
| On Windows, \code{download.file(method = "wininet")} no longer |
| supports \samp{ftp://} URIs. (It is no longer the default method, |
| which is \code{"libcurl"} and does.) |
| |
| On Windows, the deprecated \code{method = "wininet"} now gives a |
| warning for \samp{http://} and \samp{https://} URIs for both |
| \code{download.file()} and \code{url()}. (It is no longer the default |
| method.) |
| |
| \item On Windows, the command-line option \option{--max-mem-size} |
| and environment variable \env{R_MAX_MEM_SIZE} are defunct. The |
| memory allocation limit was important for 32-bit builds, |
| but these are no longer supported. |
| |
| \item \code{default.stringsAsFactors()} is now formally deprecated, |
| where that was only mentioned on its regular help page, |
| previously. So it now gives a warning if called. |
| |
| \item \code{unix.time()} is defunct now; it had been deprecated since |
| \R 3.4.0. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item Setting \code{digits = 0} in \code{format()}, |
| \code{print.default()} (and hence typically \code{print()}) or |
| \code{options()} is again invalid. Its behaviour was |
| platform-dependent, and it is unclear what \dQuote{zero |
| significant digits} should mean (\PR{18098}). |
| |
| \item Messages from C code in the \file{cairo} section of package |
| \pkg{grDevices} are now also offered for translation, thanks to |
| Michael Chirico's \PR{18123}. |
| |
| \item \code{mean(x)} with finite \code{x} now is finite also without |
| "long.double" capability. |
| |
| \item \command{R CMD Rd2pdf} no longer leaves an empty build |
| directory behind when it aborts due to an already existing output |
| file. (Thanks to Sebastian Meyer's \PR{18141}.) |
| |
| \item \code{density(x, weights = w, na.rm = TRUE)} when \code{anyNA(x)} |
| is true, now removes weights \dQuote{in parallel} to \code{x}, fixing |
| \PR{18151}, reported by Matthias Gondan. |
| Additionally, it gets a \code{subdensity} option. |
| |
| \item Conversion of \verb{\Sexpr[]{<expR>}} to LaTeX or HTML no longer |
| produces long blocks of empty lines when \code{<expR>} itself |
| contains several lines all producing empty output. Thanks to a |
| report and patch by Ivan Krylov posted to R-devel. |
| |
| \item \command{R CMD build} no longer fails if a package vignette |
| uses child documents and \file{inst/doc} exists. (Thanks to |
| Sebastian Meyer's \PR{18156}.) |
| |
| \item When an R documentation (\sQuote{help} source) file |
| \file{man/foo.Rd} in a package has \verb{\donttest{..}} examples |
| with a syntax error, it is now signalled as ERROR and with correct |
| line numbers relating to the \file{*-Ex.R} file, thanks to Duncan |
| Murdoch and Sebastian Meyer's reports and patch proposals in |
| \PR{17501}. |
| |
| \item Improved determination of the correct translation domain in |
| non-base packages, addressing the combination of \PR{18092} and |
| \PR{17998} (\code{#c6}) with reports and \emph{augmented} patch |
| #2904 by Suharto Anggono. |
| |
| Note that \code{"R-base"} is no longer the default domain e.g., |
| for top-level calls to \code{gettext()}; rather translation needs |
| explicit \code{domain = *} specification in such cases. |
| |
| \item \code{identical(attrib.as.set=FALSE)} now works correctly with |
| data frames with default row names (Thanks to Charlie Gao's |
| \PR{18179}). |
| |
| \item \code{txtProgressBar()} now enforces a non-zero width for |
| argument \code{char}, without which no progress can be visible. |
| |
| \item \code{dimnames(table(d))} is more consistent in the case where |
| \code{d} is a list with a single component, thanks to Thomas Soeiro's |
| report to R-devel. |
| |
| Further, \code{table(d1, d2)} now gives an error when \code{d1} and |
| \code{d2} are data frames as suggested by Thomas in \PR{18224}. |
| |
| \item Fix for drawing semi-transparent lines and fills on the |
| native Windows graphics device (\PR{18219} and \PR{16694}). |
| Thanks to Nick Ray for helpful diagnosis on Bugzilla. |
| |
| \item The deparser now wraps sub-expressions such as \code{if(A) .. } |
| with parentheses when needed; thanks to Duncan Murdoch's \PR{18232} |
| and Lionel Henry's patches there. |
| |
| \item \code{remove.packages()} no longer tries to uninstall |
| \code{Priority: base} packages, thanks to a report and suggestions |
| by Colin Fay in \PR{18227}. |
| |
| \item \code{win.metafile()} now has \code{xpinch} and |
| \code{ypinch} arguments so that the user can override Windows' |
| (potentially wrong) guess at device dimensions. |
| |
| \item \code{x[i]} and \code{x[[i]]} for non-integer \code{i} |
| should now behave in all cases as always documented: the index used is |
| equivalent to \code{as.integer(i)} unless that would overflow where |
| \code{trunc(i)} is used instead; thanks to Suharto Anggono's report |
| and patch proposals in \PR{17977}. |
| |
| \item \code{asOneSidedFormula()} now associates the resulting |
| formula with the global environment rather than the evaluation |
| environment created for the call. |
| |
| \item \code{<bibentry>$name} now matches the field name |
| case-insensitively, consistent with \code{bibentry()} creation and |
| the replacement method. |
| |
| \item \code{cbind()} failed to detect some length mismatches with |
| a mixture of time-series and non-time-series inputs. |
| |
| \item The default LaTeX style file \file{Sweave.sty} used by the |
| \code{RweaveLatex} driver no longer loads the obsolete \samp{ae} |
| package; thanks to a report by Thomas Soeiro in \PR{18271}. |
| Furthermore, it now skips \samp{\\usepackage[T1]{fontenc}} for |
| engines other than pdfTeX (if detected) or if the new |
| \samp{[nofontenc]} option is used. |
| |
| \item \code{smooth.spline()} now stores its logical \code{cv} |
| argument more safely, fixing a rare bug when printing, and also |
| stores \code{n}. |
| |
| \item \code{smooth.spline(x,y,*)} now computes the \code{cv.crit} |
| statistic correctly, also when \code{is.unsorted(x)}, fixing |
| \PR{18294}. |
| |
| \item The \code{data.frame} method of \code{rbind()} now warns |
| when binding not-wholly-recycling vectors, by analogy to the default |
| method (for matrices). |
| |
| \item \code{setAs()} finds the correct class for name \code{to} |
| when multiple packages define a class with that name. Thanks to |
| Gabor Csardi for the report. |
| |
| \item Fix for detaching a package when two classes of the same name |
| are present in method signatures for the same generic. Thanks to |
| Gabor Csardi for the report. |
| |
| \item \code{match.arg("", c("", "a", "B"))} gives a better error |
| message, in part from \PR{17959}, thanks to Elin Waring. |
| |
| \item \command{R CMD Sweave --clean} no longer removes |
| pre-existing files or subdirectories (\PR{18242}). |
| |
| \item The \code{quartz()} device no longer splits polylines into |
| subpaths. That has caused narrowly-spaced lines with many points |
| to always look solid even when dashed line type was used due to |
| dash phase restarts. |
| |
| \item Deparsing constructs such as \code{quote(1 + `!`(2) + 3)} works |
| again as before R 3.5.0, thanks to the report and patch in \PR{18284} |
| by Suharto Anggono. |
| |
| \item \code{as.list(f)} for a \code{factor} \code{f} now keeps |
| \code{names(f)}, fixing \PR{18309}. |
| |
| \item \code{qbeta(.001, .9, .009)} and analogous \code{qf()} calls now |
| return a correct value instead of \code{NaN} or wrongly \code{1}, all |
| with a warning; thanks to the report by Ludger Goeminne in \PR{18302}. |
| |
| \item \code{plot.lm()} failed to produce the plot of residuals vs. |
| factor levels (i.e., \code{which=5} when leverages are constant) |
| for models with character predictors (\PR{17840}). |
| |
| \item \code{interaction.plot(..., xtick = TRUE)} misplaced the |
| x-axis line (\PR{18305}). |
| |
| \item Not strictly fixing a bug, \code{format()}ing and |
| \code{print()}ing of non-finite \code{Date} and \code{POSIXt} |
| values \code{NaN} and \eqn{\pm}{+/-}\code{Inf} no longer show as |
| \code{NA} but the respective string, e.g., \code{Inf}, for |
| consistency with numeric vector's behaviour, fulfilling the wish |
| of \PR{18308}. |
| |
| \item \command{R CMD check} no longer runs test scripts generated |
| from corresponding \file{.Rin} files twice and now signals an |
| ERROR if processing an \file{.Rin} script fails. |
| |
| \item \code{tools::Rd2txt()} used for plain-text help pages now renders |
| \verb{\href}s (if \code{tools::Rd2txt_options(showURLs = TRUE)}) |
| and \verb{\url}s with percent-encoding and standards-compliant |
| delimiting style (angle brackets and no \samp{URL: } prefix). |
| \verb{\email} is now rendered with a \samp{mailto:} prefix. |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.1.3}{ |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item The default version of Bioconductor has been changed to |
| 3.14. (This is used by \code{setRepositories} and the menus in |
| GUIs.) |
| } |
| } |
| |
| \subsection{UTILITIES}{ |
| \itemize{ |
| \item \command{R CMD check --as-cran} has a workaround for a bug |
| in versions of \command{file} up to at least 5.41 which |
| mis-identify DBF files last changed in 2022 as executables. |
| } |
| } |
| |
| \subsection{C-LEVEL FACILITIES}{ |
| \itemize{ |
| \item The legacy S-compatibility macros \code{SINGLE_*} in |
| \file{R_ext/Constants.h} (included by \file{R.h}) are deprecated |
| and will be removed in \R 4.2.0. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item Initialization of self-starting \code{nls()} models with |
| initialization functions following the pre-R-4.1.0 API |
| (without the \code{...} argument) works again for now, with a |
| deprecation warning. |
| |
| \item Fixed quoting of \code{~autodetect~} in Java setting defaults |
| to avoid inadvertent user lookup due to leading \code{~}, reported |
| in \PR{18231} by Harold Gutch. |
| |
| \item \code{substr(., start, stop) <- v} now treats \emph{negative} |
| \code{stop} values correctly. Reported with a patch in \PR{18228} by |
| Brodie Gaslam. |
| |
| \item Subscripting an array \code{x} without dimnames by a |
| \code{length(dim(x))}-column character matrix gave "random" |
| non-sense, now an error; reported in \PR{18244} by Mikael Jagan. |
| |
| \item \code{...names()} now matches \code{names(list(...))} closely, |
| fixing \PR{18247}. |
| |
| \item \code{all.equal(*, scale = s)} now works as intended when |
| \code{length(s) > 1}, partly thanks to Michael Chirico's \PR{18272}. |
| |
| \item \code{print(x)} for long vectors \code{x} now also works for |
| named atomic vectors or lists and prints the correct number when |
| reaching the \code{getOption("max.print")} limit; partly thanks to a |
| report and proposal by Hugh Parsonage to the R-devel list. |
| |
| \item \code{all.equal(<selfStart>, *)} no longer signals a deprecation |
| warning. |
| |
| \item \code{reformulate(*, response=r)} gives a helpful error message |
| now when \code{length(r) > 1}, thanks to Bill Dunlap's \PR{18281}. |
| |
| \item Modifying \code{globalCallingHandlers} inside |
| \code{withCallingHandlers()} now works or fails correctly, thanks to |
| Henrik Bengtsson's \PR{18257}. |
| |
| \item \code{hist(<Date>, breaks = "days")} and |
| \code{hist(<POSIXt>, breaks = "secs")} |
| no longer fail for inputs of length 1. |
| |
| \item \code{qbeta(.001, .9, .009)} and similar cases now converge |
| correctly thanks to Ben Bolker's report in \PR{17746}. |
| |
| \item \code{window(x, start, end)} no longer wrongly signals |
| \dQuote{'start' cannot be after 'end'}, fixing \PR{17527} and |
| \PR{18291}. |
| |
| \item \code{data()} now checks that its (rarely used) \code{list} |
| argument is a character vector -- a couple of packages passed other |
| types and gave incorrect results. |
| |
| \item \code{which()} now checks its \code{arr.ind} argument is |
| TRUE rather coercing to logical and taking the first element -- |
| which gave incorrect results in package code. |
| |
| \item \code{model.weights()} and \code{model.offset()} more carefully |
| extract their model components, thanks to Ben Bolker and Tim Taylor's |
| R-devel post. |
| |
| \item \code{list.files(recursive = TRUE)} now shows all broken |
| symlinks (previously, some of them may have been omitted, \PR{18296}). |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.1.2}{ |
| \subsection{C-LEVEL FACILITIES}{ |
| \itemize{ |
| \item The workaround in headers \file{R.h} and \file{Rmath.h} |
| (\code{using namespace std;}) for the Oracle Developer Studio |
| compiler is no longer needed now C++11 is required so has been |
| removed. A couple more usages of \code{log()} (which should have |
| been \code{std::log()}) with an \code{int} argument are reported on |
| Solaris. |
| |
| \item The undocumented limit of 4095 bytes on messages from the |
| S-compatibility macros \code{PROBLEM} and \code{MESSAGE} is now |
| documented and longer messages will be silently truncated rather |
| than potentially causing segfaults. |
| |
| \item If the \code{R_NO_SEGV_HANDLER} environment variable is |
| non-empty, the signal handler for SEGV/ILL/BUS signals (which |
| offers recovery user interface) is not set. This allows more |
| reliable debugging of crashes that involve the console. |
| } |
| } |
| |
| \subsection{DEPRECATED AND DEFUNCT}{ |
| \itemize{ |
| \item The legacy S-compatibility macros \code{PROBLEM}, |
| \code{MESSAGE}, \code{ERROR}, \code{WARN}, \code{WARNING}, |
| \code{RECOVER}, \dots{} are deprecated and will be hidden in \R |
| 4.2.0. \R{}'s native interface of \code{Rf_error} and |
| \code{Rf_warning} has long been preferred. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item \code{.mapply(F, dots, .)} no longer segfaults when |
| \code{dots} is not a \code{list} and uses \code{match.fun(F)} as |
| always documented; reported by Andrew Simmons in \PR{18164}. |
| |
| \item \code{hist(<Date>, ...)} and \code{hist(<POSIXt>, ...)} |
| no longer pass arguments for \code{rect()} (such as \code{col} and |
| \code{density}) to \code{axis()}. (Thanks to Sebastian Meyer's |
| \PR{18171}.) |
| |
| \item \verb{\Sexpr{ch}} now preserves \code{Encoding(ch)}. (Thanks to |
| report and patch by Jeroen Ooms in \PR{18152}.) |
| |
| \item Setting the RNG to \code{"Marsaglia-Multicarry"} e.g., by |
| \code{RNGkind()}, now warns in more places, thanks to |
| André Gillibert's report and patch in \PR{18168}. |
| |
| \item \code{gray(numeric(), alpha=1/2)} no longer segfaults, fixing |
| \PR{18183}, reported by Till Krenz. |
| |
| \item Fixed \code{dnbinom(x, size=<very_small>, .., log=TRUE)} |
| regression, reported by Martin Morgan. |
| |
| \item \code{as.Date.POSIXlt(x)} now keeps \code{names(x)}, thanks to |
| Davis Vaughan's report and patch in \PR{18188}. |
| |
| \item \code{model.response()} now strips an \code{"AsIs"} class typically, |
| thanks to Duncan Murdoch's report and other discussants in \PR{18190}. |
| |
| \item \code{try()} is considerably faster in case of an error and |
| long call, as e.g., from some \code{do.call()}. Thanks to |
| Alexander Kaever's suggestion posted to R-devel. |
| |
| \item \code{qqline(y = <object>)} such as \code{y=I(.)}, now works, |
| see also \PR{18190}. |
| |
| \item Non-integer \code{mgp} \code{par()} settings are now handled |
| correctly in \code{axis()} and \code{mtext()}, thanks to Mikael |
| Jagan and Duncan Murdoch's report and suggestion in \PR{18194}. |
| |
| \item \code{formatC(x)} returns length zero \code{character()} now, |
| rather than \code{""} when \code{x} is of length zero, as documented, |
| thanks to Davis Vaughan's post to R-devel. |
| |
| \item \code{removeSource(fn)} now retains (other) \code{attributes(fn)}. |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.1.1}{ |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item \code{require(\var{pkg}, quietly = TRUE)} is quieter and in |
| particular does not warn if the package is not found. |
| } |
| } |
| |
| \subsection{DEPRECATED AND DEFUNCT}{ |
| \itemize{ |
| \item Use of \samp{ftp://} URIs should be regarded as |
| deprecated, with on-going support confined to \code{method = |
| "libcurl"} and not routinely tested. (Nowadays no major browser |
| supports them.) |
| |
| \item The non-default \code{method = "internal"} is deprecated for |
| \samp{http://} and \samp{ftp://} URIs for both |
| \code{download.file} and \code{url}. |
| |
| \item On Windows, \code{method = "wininet"} is deprecated for |
| \samp{http://}, \samp{https://} and \samp{ftp://} URIs for both |
| \code{download.file} and \code{url}. (A warning is only given for |
| \samp{ftp://}.) |
| |
| For \samp{ftp://} URIs the default method is now \code{"libcurl"} |
| if available (which it is on \acronym{CRAN} builds). |
| |
| \code{method = "wininet"} remains the default for \samp{http://} |
| and \samp{https://} URIs but if \code{libcurl} is available, using |
| \code{method = "libcurl"} is preferred. |
| } |
| } |
| |
| \subsection{INSTALLATION}{ |
| \itemize{ |
| \item \command{make check} now works also without a LaTeX |
| installation. (Thanks to Sebastian Meyer's \PR{18103}.) |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item \command{make check-devel} works again in an \R build |
| configured with \option{--without-recommended-packages}. |
| |
| \item \code{qnbinom(p, size, mu)} for large \code{size/mu} is correct |
| now in a range of cases (\PR{18095}); similarly for the \code{(size, |
| prob)} parametrization of the negative binomial. Also \code{qpois()} |
| and \code{qbinom()} are better and or faster for extreme cases. The |
| underlying C code has been modularized and is common to all four cases |
| of discrete distributions. |
| |
| \item \code{gap.axis} is now part of the \code{axis()} arguments which |
| are passed from \code{bxp()}, and hence \code{boxplot()}. (Thanks to |
| Martin Smith's report and suggestions in \PR{18109}.) |
| |
| \item \code{.First} and \code{.Last} can again be set from the site |
| profile. |
| |
| \item \code{seq.int(from, to, *)} and \code{seq.default(..)} now work |
| better in large range cases where \code{from-to} is infinite where |
| the two boundaries are finite. |
| |
| \item \code{all.equal(x,y)} now returns \code{TRUE} correctly also |
| when several entries of \code{abs(x)} and \code{abs(y)} are close to |
| \code{.Machine$double.xmax}, the largest finite \code{numeric}. |
| |
| \item \code{model.frame()} now clears the object bit when removing the |
| \code{class} attribute of a value via \code{na.action} (\PR{18100}). |
| |
| \item \code{charClass()} now works with multi-character |
| strings on Windows (\PR{18104}, fixed by Bill Dunlap). |
| |
| \item \code{encodeString()} on Solaris now works again in Latin-1 |
| encoding on characters represented differently in UTF-8. Support for |
| surrogate pairs on Solaris has been improved. |
| |
| \item \code{file.show()} on Windows now works with non-ASCII path |
| names representable in the current native encoding (\PR{18132}). |
| |
| \item Embedded \R on Windows can now find \R home directory via the |
| registry even when installed only for the current user (\PR{18135}). |
| |
| \item \code{pretty(x)} with finite \code{x} now returns finite values |
| also in the case where the extreme \code{x} values are close in size |
| to the maximal representable number \code{.Machine$double.xmax}. |
| |
| Also, it's been tweaked for very small ranges and when a boundary is |
| close (or equal) to zero; e.g., \code{pretty(c(0,1e-317))} no longer |
| has negative numbers, currently still warning about a very small |
| range, and \code{pretty(2^-(1024 - 2^-1/(c(24,10))))} is more accurate. |
| |
| \item The error message for not finding vignette files when weaving |
| has correct file sizes now. (Thanks to Sebastian Meyer's \PR{18154}.) |
| |
| \item \code{dnbinom(20, <large>, 1)} now correctly gives 0, and |
| similar cases are more accurate with underflow precaution. |
| (Reported by Francisco Vera Alcivar in \PR{18072}.) |
| } |
| } |
| } |
| |
| |
| \section{\Rlogo CHANGES IN R 4.1.0}{ |
| \subsection{FUTURE DIRECTIONS}{ |
| \itemize{ |
| \item It is planned that the 4.1.x series will be the last to |
| support 32-bit Windows, with production of binary packages for |
| that series continuing until early 2023. |
| } |
| } |
| |
| \subsection{SIGNIFICANT USER-VISIBLE CHANGES}{ |
| \itemize{ |
| \item Data set \code{esoph} in package \pkg{datasets} now provides |
| the correct numbers of controls; previously it had the numbers of |
| cases added to these. (Reported by Alexander Fowler in \PR{17964}.) |
| } |
| } |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item \samp{www.omegahat.net} is no longer one of the repositories |
| known by default to \code{setRepositories()}. (Nowadays it only |
| provides source packages and is often unavailable.) |
| %% it had one Windows binary package for 4.0, none for 3.6. |
| |
| \item Function \code{package_dependencies()} (in package |
| \pkg{tools}) can now use different dependency types for direct and |
| recursive dependencies. |
| |
| \item The checking of the size of tarball in |
| \command{R CMD check --as-cran <pkg>} may be tweaked via the new |
| environment variable |
| \env{_R_CHECK_CRAN_INCOMING_TARBALL_THRESHOLD_}, as suggested in |
| \PR{17777} by Jan Gorecki. |
| |
| \item Using \code{c()} to combine a factor with other factors now |
| gives a factor, an ordered factor when combining ordered factors |
| with identical levels. |
| |
| \item \code{apply()} gains a \code{simplify} argument to allow |
| disabling of simplification of results. |
| |
| \item The \code{format()} method for class \code{"ftable"} gets a |
| new option \code{justify}. (Suggested by Thomas Soeiro.) |
| |
| \item New \code{...names()} utility. (Proposed by Neal Fultz in |
| \PR{17705}.) |
| |
| \item \code{type.convert()} now warns when its \code{as.is} argument |
| is not specified, as the help file always said it \emph{should}. In |
| that case, the default is changed to \code{TRUE} in line with its |
| change in \code{read.table()} (related to \code{stringsAsFactors}) in |
| \R 4.0.0. |
| |
| \item When printing list arrays, classed objects are now shown |
| \emph{via} their \code{format()} value if this is a short enough |
| character string, or by giving the first elements of their class |
| vector and their length. |
| |
| \item \code{capabilities()} gets new entry \code{"Rprof"} which is |
| \code{TRUE} when \R has been configured with the equivalent of |
| \command{--enable-R-profiling} (as it is by default). (Related to |
| Michael Orlitzky's report \PR{17836}.) |
| |
| \item \code{str(xS4)} now also shows extraneous attributes of an |
| S4 object \code{xS4}. |
| |
| \item Rudimentary support for vi-style tags in \code{rtags()} and |
| \code{R CMD rtags} has been added. (Based on a patch from Neal |
| Fultz in \PR{17214}.) |
| |
| \item \code{checkRdContents()} is now exported from \pkg{tools}; it |
| and also \code{checkDocFiles()} have a new option \code{chkInternal} |
| allowing to check Rd files marked with keyword \code{"internal"} as |
| well. The latter can be activated for \command{R CMD check} via |
| environment variable \env{_R_CHECK_RD_INTERNAL_TOO_}. |
| |
| \item New functions \code{numToBits()} and \code{numToInts()} |
| extend the \code{raw} conversion utilities to (double precision) |
| \code{numeric}. |
| |
| \item Functions \code{URLencode()} and \code{URLdecode()} in |
| package \pkg{utils} now work on vectors of URIs. |
| (Based on patch from Bob Rudis submitted with \PR{17873}.) |
| |
| \item \code{path.expand()} can expand \samp{~user} on most |
| Unix-alikes even when \code{readline} is not in use. It tries |
| harder to expand \samp{~}, for example should environment variable |
| \env{HOME} be unset. |
| |
| \item For HTML help (both dynamic and static), Rd file links to |
| help pages in external packages are now treated as references to |
| topics rather than file names, and fall back to a file link only |
| if the topic is not found in the target package. The earlier rule |
| which prioritized file names over topics can be restored by |
| setting the environment variable \env{_R_HELP_LINKS_TO_TOPICS_} to |
| a false value. |
| |
| \item \code{c()} now removes \code{NULL} arguments before |
| dispatching to methods, thus simplifying the implementation of |
| \code{c()} methods, \emph{but} for back compatibility keeps |
| \code{NULL} when it is the first argument. (From a report and |
| patch proposal by Lionel Henry in \PR{17900}.) |
| |
| \item \code{Vectorize()}'s result function's environment no longer |
| keeps unneeded objects. |
| |
| \item Function \code{...elt()} now propagates visibility |
| consistently with \code{..n}. (Thanks to Lionel Henry's |
| \PR{17905}.) |
| |
| \item \code{capture.output()} no longer uses non-standard |
| evaluation to evaluate its arguments. This makes evaluation of |
| functions like \code{parent.frame()} more consistent. (Thanks to |
| Lionel Henry's \PR{17907}.) |
| |
| \item \code{packBits(bits, type="double")} now works as inverse of |
| \code{numToBits()}. (Thanks to Bill Dunlap's proposal in |
| \PR{17914}.) |
| |
| \item \code{curlGetHeaders()} has two new arguments, |
| \code{timeout} to specify the timeout for that call (overriding |
| \code{getOption("timeout")}) and \code{TLS} to specify the minimum |
| TLS protocol version to be used for \code{https://} URIs |
| (\emph{inter alia} providing a means to check for sites using |
| deprecated TLS versions 1.0 and 1.1). |
| |
| \item For \code{nls()}, an optional constant \code{scaleOffset} |
| may be added to the denominator of the relative offset convergence |
| test for cases where the fit of a model is expected to be exact, |
| thanks to a proposal by John Nash. \code{nls(*, trace=TRUE)} now |
| also shows the convergence criterion. |
| |
| \item Numeric differentiation \emph{via} \code{numericDeriv()} |
| gets new optional arguments \code{eps} and \code{central}, the |
| latter for taking central divided differences. The latter can be |
| activated for \code{nls()} via \code{nls.control(nDcentral = |
| TRUE)}. |
| |
| \item \code{nls()} now passes the \code{trace} and \code{control} |
| arguments to \code{getInitial()}, notably for all self-starting models, |
| so these can also be fit in zero-noise situations via a |
| \code{scaleOffset}. For this reason, the \code{initial} function of a |
| \code{selfStart} model must now have \code{...} in its argument list. |
| |
| \item \code{bquote(splice = TRUE)} can now splice expression |
| vectors with attributes: this makes it possible to splice the |
| result of \code{parse(keep.source = TRUE)}. (Report and patch |
| provided by Lionel Henry in \PR{17869}.) |
| |
| \item \code{textConnection()} gets an optional \code{name} argument. |
| |
| \item \code{get()}, \code{exists()}, and \code{get0()} now signal |
| an error if the first argument has length greater than 1. |
| Previously additional elements were silently ignored. (Suggested |
| by Antoine Fabri on R-devel.) |
| |
| \item \R{} now provides a shorthand notation for creating functions, |
| e.g. \code{\(x) x + 1} is parsed as \code{function(x) x + 1}. |
| |
| \item \R{} now provides a simple native forward pipe syntax |
| \code{|>}. The simple form of the forward pipe inserts the |
| left-hand side as the first argument in the right-hand side call. |
| The pipe implementation as a syntax transformation was motivated |
| by suggestions from Jim Hester and Lionel Henry. |
| |
| \item \code{all.equal(f, g)} for \code{function}s now by default also |
| compares their \code{environment(.)}s, notably via new |
| \code{all.equal} method for class \code{function}. Comparison of |
| \code{nls()} fits, e.g., may now need \code{all.equal(m1, m2, |
| check.environment = FALSE)}. |
| |
| \item \code{.libPaths()} gets a new option \code{include.site}, |
| allowing to \emph{not} include the site library. (Thanks to Dario |
| Strbenac's suggestion and Gabe Becker's \PR{18016}.) |
| |
| \item Lithuanian translations are now available. (Thanks to |
| Rimantas Žakauskas.) |
| |
| \item \code{names()} now works for \code{DOTSXP} objects. On the |
| other hand, in \file{R-lang}, the R language manual, we now warn |
| against relying on the structure or even existence of such |
| dot-dot-dot objects. |
| |
| \item \code{all.equal()} no longer gives an error on \code{DOTSXP} |
| objects. |
| |
| %% The Homebrew arm64 libs have cairo but not cairo-xlib |
| \item \code{capabilities("cairo")} now applies only to the |
| file-based devices as it is now possible (if very unusual) to |
| build \R with Cairo support for those but not for \code{X11()}. |
| |
| \item There is optional support for tracing the progress of |
| \code{loadNamespace()} --- see its help. |
| |
| \item (Not Windows.) |
| \code{l10n_info()} reports an additional element, the name of the |
| encoding as reported by the OS (which may differ from the |
| encoding part (if any) of the result from |
| \code{Sys.getlocale("LC_CTYPE")}). |
| |
| \item New function \code{gregexec()} which generalizes \code{regexec()} |
| to find \emph{all} disjoint matches and all substrings |
| corresponding to parenthesized subexpressions of the given regular |
| expression. (Contributed by Brodie Gaslam.) |
| |
| \item New function \code{charClass()} in package \pkg{utils} to |
| query the wide-character classification functions in use (such as |
| \code{iswprint}). |
| |
| \item The names of \code{quantile()}'s result no longer depend on the |
| global \code{getOption("digits")}, but \code{quantile()} gets a new |
| optional argument \code{digits = 7} instead. |
| |
| \item \code{grep()}, \code{sub()}, \code{regexp} and variants work |
| considerably faster for long factors with few levels. (Thanks to |
| Michael Chirico's \PR{18063}.) |
| |
| \item Provide grouping of \code{x11()} graphics windows within |
| a window manager such as \code{Gnome} or \code{Unity}; thanks to a |
| patch by Ivan Krylov posted to R-devel. |
| |
| \item The \code{split()} method for class \code{data.frame} now |
| allows the \code{f} argument to be specified as a formula. |
| |
| \item \code{sprintf} now warns on arguments unused by the format |
| string. |
| |
| \item New palettes \code{"Rocket"} and \code{"Mako"} for |
| \code{hcl.colors()} (approximating palettes of the same name |
| from the \pkg{viridisLite} package). |
| |
| Contributed by Achim Zeileis. |
| |
| \item The base environment and its namespace are now locked (so |
| one can no longer add bindings to these or remove from these). |
| |
| \item \command{Rterm} handling of multi-byte characters has been |
| improved, allowing use of such characters when supported by the |
| current locale. |
| |
| \item \command{Rterm} now accepts \code{ALT+ +xxxxxxxx} sequences to |
| enter Unicode characters as hex digits. |
| |
| \item Environment variable \env{LC_ALL} on Windows now takes |
| precedence over \env{LC_CTYPE} and variables for other supported |
| categories, matching the POSIX behaviour. |
| |
| \item \code{duplicated()} and \code{anyDuplicated()} are now |
| optimized for integer and real vectors that are known to be sorted |
| via the ALTREP framework. Contributed by Gabriel Becker via \PR{17993}. |
| } |
| } |
| |
| \subsection{GRAPHICS}{ |
| \itemize{ |
| \item The graphics engine version, \code{R_GE_version}, has been |
| bumped to \code{14} and so packages that provide graphics devices |
| should be reinstalled. |
| |
| \item Graphics devices should now specify \code{deviceVersion} to |
| indicate what version of the graphics engine they support. |
| |
| \item Graphics devices can now specify \code{deviceClip}. If |
| \code{TRUE}, the graphics engine will never perform any clipping |
| of output itself. |
| |
| The clipping that the graphics engine does perform (for both |
| \code{canClip = TRUE} and \code{canClip = FALSE}) has been |
| improved to avoid producing unnecessary artifacts in clipped |
| output. |
| |
| \item The \pkg{grid} package now allows \code{gpar(fill)} to be |
| a \code{linearGradient()}, a \code{radialGradient()}, or a |
| \code{pattern()}. The \code{viewport(clip)} can now also be |
| a grob, which defines a clipping path, and there is a new |
| \code{viewport(mask)} that can also be a grob, which defines |
| a mask. |
| |
| These new features are only supported so far on the Cairo-based |
| graphics devices and on the \code{pdf()} device. |
| |
| \item (Not Windows.) |
| A warning is given when a Cairo-based type is specified for a |
| \code{png()}, \code{jpeg()}, \code{tiff()} or \code{bmp()} |
| device but Cairo is unsupported (so \code{type = "Xlib"} |
| is tried instead). |
| |
| \item \code{grSoftVersion()} now reports the versions of FreeType |
| and FontConfig if they are used directly (not \emph{via} Pango), |
| as is most commonly done on macOS. |
| } |
| } |
| |
| \subsection{C-LEVEL FACILITIES}{ |
| \itemize{ |
| \item The \emph{standalone} \file{libRmath} math library and \R's C |
| API now provide \code{log1pexp()} again as documented, and gain |
| \code{log1mexp()}. |
| } |
| } |
| |
| \subsection{INSTALLATION on a UNIX-ALIKE}{ |
| \itemize{ |
| \item \command{configure} checks for a program \command{pkgconf} |
| if program \command{pkg-config} is not found. These are now only |
| looked for on the path (like almost all other programs) so if needed |
| specify a full path to the command in \code{PKG_CONFIG}, for example |
| in file \file{config.site}. |
| |
| \item C99 function \code{iswblank} is required -- it was last seen |
| missing ca 2003 so the workaround has been removed. |
| |
| \item There are new \command{configure} options |
| \option{--with-internal-iswxxxxx}, |
| \option{--with-internal-towlower} and |
| \option{--with-internal-wcwidth} which allows the system functions |
| for wide-character classification, case-switching and width |
| (\code{wcwidth} and \code{wcswidth}) to be replaced by internal |
| ones. The first has long been used on macOS, AIX (and Windows) |
| but this enables it to be unselected there and selected for other |
| platforms (it is the new default on Solaris). The second is new |
| in this version of \R and is selected by default on macOS and |
| Solaris. The third has long been the default and remains so as it |
| contains customizations for East Asian languages. |
| |
| System versions of these functions are often minimally implemented |
| (sometimes only for ASCII characters) and may not cover the full |
| range of Unicode points: for example Solaris (and Windows) only |
| cover the Basic Multilingual Plane. |
| |
| \item Cairo installations without X11 are more likely to be |
| detected by \command{configure}, when the file-based Cairo |
| graphics devices will be available but not \code{X11(type = |
| "cairo")}. |
| |
| \item There is a new \command{configure} option |
| \option{--with-static-cairo} which is the default on macOS. This |
| should be used when only static cairo (and where relevant, Pango) |
| libraries are available. |
| |
| \item Cairo-based graphics devices on platforms without Pango but |
| with FreeType/FontConfig will make use of the latter for font selection. |
| } |
| } |
| |
| |
| \subsection{LINK-TIME OPTIMIZATION on a UNIX-ALIKE}{ |
| \itemize{ |
| \item Configuring with flag \option{--enable-lto=R} now also uses |
| LTO when installing the recommended packages. |
| |
| \item \command{R CMD INSTALL} and \command{R CMD SHLIB} have a new |
| flag \option{--use-LTO} to use LTO when compiling code, for use |
| with \R configured with \option{--enable-lto=R}. For \R |
| configured with \option{--enable-lto}, they have the new flag |
| \option{--no-use-LTO}. |
| |
| Packages can opt in or out of LTO compilation \emph{via} a |
| \samp{UseLTO} field in the \file{DESCRIPTION} file. (As usual this |
| can be overridden by the command-line flags.) |
| } |
| } |
| |
| \subsection{BUILDING R on Windows}{ |
| \itemize{ |
| \item for GCC \eqn{\ge}{>=} 8, \code{FC_LEN_T} is defined in |
| \file{config.h} and hence character lengths are passed from C to |
| Fortran in \emph{inter alia} BLAS and LAPACK calls. |
| |
| \item There is a new text file |
| \file{src/gnuwin32/README.compilation}, which outlines how C/Fortran |
| code compilation is organized and documents new features: |
| \itemize{ |
| \item \R can be built with Link-Time Optimization with a |
| suitable compiler -- doing so with GCC 9.2 showed several |
| inconsistencies which have been corrected. |
| |
| \item There is support for cross-compiling the C and Fortran |
| code in \R and standard packages on suitable (Linux) platforms. |
| This is mainly intended to allow developers to test later |
| versions of compilers -- for example using GCC 9.2 or 10.x has |
| detected issues that GCC 8.3 in Rtools40 does not. |
| |
| \item There is experimental support for cross-building \R |
| packages with C, C++ and/or Fortran code. |
| } |
| |
| \item The R installer can now be optionally built to support a single |
| architecture (only 64-bit or only 32-bit). |
| } |
| } |
| |
| \subsection{PACKAGE INSTALLATION}{ |
| \itemize{ |
| \item The default C++ standard has been changed to C++14 where |
| available (which it is on all currently checked platforms): if not |
| (as before) C++11 is used if available otherwise C++ is not |
| supported. |
| |
| Packages which specify C++11 will still be installed using C++11. |
| |
| C++14 compilers may give deprecation warnings, most often for |
| \code{std::random_shuffle} (deprecated in C++14 and removed in |
| C++17). Either specify C++11 (see \sQuote{Writing R Extensions}) |
| or modernize the code and if needed specify C++14. The latter has |
| been supported since \R 3.4.0 so the package's \file{DESCRIPTION} |
| would need to include something like |
| \preformatted{ |
| Depends: R (>= 3.4) |
| } |
| } |
| } |
| |
| \subsection{PACKAGE INSTALLATION on Windows}{ |
| \itemize{ |
| \item \command{R CMD INSTALL} and \command{R CMD SHLIB} make use |
| of their flag \option{--use-LTO} when the \samp{LTO_OPT} make |
| macro is set in file \file{etc/$\{R_ARCH\}/Makeconf} or in a |
| personal/site \file{Makevars} file. (For details see |
| \sQuote{Writing R Extensions} §4.5.) |
| |
| This provides a valuable check on code consistency. It does work |
| with GCC 8.3 as in Rtools40, but that does not detect everything |
| the \acronym{CRAN} checks with current GCC do. |
| } |
| } |
| |
| \subsection{PACKAGE INSTALLATION on macOS}{ |
| \itemize{ |
| \item The default personal library directory on builds with |
| \option{--enable-aqua} (including \acronym{CRAN} builds) now |
| differs by CPU type, one of |
| \preformatted{ |
| ~/Library/R/x86_64/x.y/library |
| ~/Library/R/arm64/x.y/library |
| } |
| This uses the CPU type \R (and hence the packages) were built for, |
| so when a \samp{x86_64} build of R is run under Rosetta emulation on |
| an \samp{arm64} Mac, the first is used. |
| } |
| } |
| |
| \subsection{UTILITIES}{ |
| \itemize{ |
| \item \command{R CMD check} can now scan package functions for |
| bogus \code{return} statements, which were possibly intended as |
| \code{return()} calls (wish of \PR{17180}, patch by Sebastian |
| Meyer). This check can be activated via the new environment |
| variable \env{_R_CHECK_BOGUS_RETURN_}, true for \code{--as-cran}. |
| |
| \item \command{R CMD build} omits tarballs and binaries of |
| previous builds from the top-level package directory. |
| (\PR{17828}, patch by Sebastian Meyer.) |
| |
| \item \command{R CMD check} now runs sanity checks on the use of |
| \samp{LazyData}, for example that a \file{data} directory is |
| present and that \samp{LazyDataCompression} is not specified |
| without \samp{LazyData} and has a documented value. For packages |
| with large LazyData databases without specifying |
| \samp{LazyDataCompression}, there is a reference to the code given |
| in \sQuote{Writing R Extensions} §1.1.6 to test the choice of |
| compression (as in all the \acronym{CRAN} packages tested a |
| non-default method was preferred). |
| |
| \item \command{R CMD build} removes \samp{LazyData} and |
| \samp{LazyDataCompression} fields from the \file{DESCRIPTION} file |
| of packages without a \file{data} directory. |
| } |
| } |
| |
| \subsection{ENCODING-RELATED CHANGES}{ |
| \itemize{ |
| \item The parser now treats \samp{\\Unnnnnnnn} escapes larger than |
| the upper limit for Unicode points (\samp{\\U10FFFF}) as an error |
| as they cannot be represented by valid UTF-8. |
| |
| Where such escapes are used for outputting non-printable |
| (including unassigned) characters, 6 hex digits are used (rather |
| than 8 with leading zeros). For clarity, braces are used, for |
| example \samp{\\U\{0effff\}}. |
| |
| \item The parser now looks for non-ASCII spaces on Solaris (as |
| previously on most other OSes). |
| |
| \item There are warnings (including from the parser) on the use of |
| unpaired surrogate Unicode points such as \samp{\\uD834}. (These |
| cannot be converted to valid UTF-8.) |
| |
| \item Functions \code{nchar()}, \code{tolower()}, \code{toupper()} |
| and \code{chartr()} and those using regular expressions have more |
| support for inputs with a marked Latin-1 encoding. |
| |
| \item The character-classification functions used (by default) to |
| replace the system \code{iswxxxxx} functions on Windows, macOS and |
| AIX have been updated to Unicode 13.0.0. |
| |
| The character-width tables have been updated to include new |
| assignments in Unicode 13.0.0. This included treating all control |
| characters as having zero width. |
| |
| \item The code for evaluating default (extended) regular |
| expressions now uses the same character-classification functions |
| as the rest of \R (previously they differed on Windows, macOS and |
| AIX). |
| |
| \item There is a build-time option to replace the system's |
| wide-character \code{wctrans} C function by tables shipped with |
| \R: use \command{configure} option |
| \option{--with-internal-towlower} or (on Windows) |
| \samp{-DUSE_RI18N_CASE} in \samp{CFLAGS} when building \R. This |
| may be needed to allow \code{tolower()} and \code{toupper()} to |
| work with Unicode characters beyond the Basic Multilingual Plane |
| where not supported by system functions (e.g. on Solaris where it |
| is the new default). |
| |
| \item R is more careful when truncating UTF-8 and other multi-byte |
| strings that are too long to be printed, passed to the system or |
| libraries or placed into an internal buffer. Truncation will no |
| longer produce incomplete multibyte characters. |
| } |
| } |
| |
| \subsection{DEPRECATED AND DEFUNCT}{ |
| \itemize{ |
| \item Function \code{plclust()} from the package \pkg{stats} and |
| \code{package.dependencies()}, \code{pkgDepends()}, |
| \code{getDepList()}, \code{installFoundDepends()}, and |
| \code{vignetteDepends()} from package \pkg{tools} are defunct. |
| |
| \item Defunct functions \code{checkNEWS()} and \code{readNEWS()} from |
| package \pkg{tools} and \code{CRAN.packages()} from \pkg{utils} have |
| been removed. |
| |
| \item \command{R CMD config CXXCPP} is defunct (it was deprecated |
| in \R{} 3.6.2). |
| |
| \item \code{parallel::detectCores()} drops support for Irix |
| (retired in 2013). |
| |
| \item The \code{LINPACK} argument to \code{chol.default()}, |
| \code{chol2inv()}, \code{solve.default()} and \code{svd()} has |
| been defunct since \R 3.1.0. It was silently ignored up to \R |
| 4.0.3 but now gives an error. |
| |
| \item Subsetting/indexing, such as \code{ddd[*]} or \code{ddd$x} |
| on a \code{DOTSXP} (dot-dot-dot) object \code{ddd} has been |
| disabled; it worked by accident only and was undocumented. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item Many more C-level allocations (mainly by \code{malloc} and |
| \code{strdup}) are checked for success with suitable alternative |
| actions. |
| |
| \item Bug fix for \code{replayPlot()}; this was turning off |
| graphics engine display list recording if a recorded plot was |
| replayed in the same session. The impact of the bug became |
| visible if resize the device after replay OR if attempted another |
| \code{savePlot()} after replay (empty display list means empty |
| screen on resize or empty saved plot). |
| |
| \item \command{R CMD check} etc now warn when a package exports |
| non-existing S4 classes or methods, also in case of no |
| \dQuote{methods} presence. (Reported by Alex Bertram; |
| reproducible example and patch by Sebastian Meyer in \PR{16662}.) |
| |
| \item \code{boxplot()} now also accepts \code{call}s for labels such |
| as \code{ylab}, the same as \code{plot()}. (Reported by Marius Hofert.) |
| |
| \item The help page for \code{xtabs()} now correctly states that |
| \code{addNA} is setting \code{na.action = na.pass} among others. |
| (Reported as \PR{17770} by Thomas Soeiro.) |
| |
| \item The \command{R CMD check <pkg>} gives a longer and more |
| comprehensible message when \file{DESCRIPTION} misses dependencies, |
| e.g., in \code{Imports:}. (Thanks to the contributors of \PR{17179}.) |
| |
| \item \code{update.default()} now calls the generic \code{update()} |
| on the formula to work correctly for models with extended formulas. |
| (As reported and suggested by Neal Fultz in \PR{17865}.) |
| |
| \item The horizontal position of leaves in a dendrogram is now |
| correct also with \code{center = FALSE}. (\PR{14938}, patch from |
| Sebastian Meyer.) |
| |
| \item \code{all.equal.POSIXt()} no longer warns about and |
| subsequently ignores inconsistent \code{"tzone"} attributes, but |
| describes the difference in its return value (\PR{17277}). |
| This check can be disabled \emph{via} the new argument |
| \code{check.tzone = FALSE} as suggested by Sebastian Meyer. |
| |
| \item \code{as.POSIXct()} now populates the \code{"tzone"} |
| attribute from its \code{tz} argument when \code{x} is a logical |
| vector consisting entirely of \code{NA} values. |
| |
| \item \code{x[[2^31]] <- v} now works. (Thanks to the report and |
| patch by Suharto Anggono in \PR{17330}.) |
| |
| \item In log-scale graphics, \code{axis()} ticks and label positions |
| are now computed more carefully and symmetrically in their range, |
| typically providing \emph{more} ticks, fulfilling wishes |
| in \PR{17936}. The change really corresponds to an improved |
| \code{axisTicks()} (package \pkg{grDevices}), potentially influencing |
| \pkg{grid} and \pkg{lattice}, for example. |
| |
| \item \code{qnorm(<very large negative>, log.p=TRUE)} is now correct |
| to at least five digits where it was catastrophically wrong, |
| previously. |
| |
| \item \code{sum(df)} and similar \code{"Summary"}- and |
| \code{"Math"}-group member functions now work for data frames |
| \code{df} with \code{\link{logical}} columns, notably also of zero |
| rows. (Reported to R-devel by Martin \dQuote{b706}.) |
| |
| \item \code{unsplit()} had trouble with tibbles due to unsound use of |
| \code{rep(NA, len)}-indexing, which should use \code{NA_integer_} |
| (Reported to R-devel by Mario Annau.) |
| |
| \item \code{pnorm(x, log.p = TRUE)} underflows to \code{-Inf} slightly |
| later. |
| |
| \item \code{show(<hidden S4 generic>)} prints better and without |
| quotes for non-hidden S4 generics. |
| |
| \item \code{read.table()} and relatives treated an "NA" column name as |
| missing when \code{check.names = FALSE} \PR{18007}. |
| |
| \item Parsing strings containing UTF-16 surrogate pairs such as |
| \code{"\uD834\uDD1E"} works better on some (uncommon) platforms. |
| \code{sprintf("\%X", utf8ToInt("\uD834\uDD1E"))} should now give |
| \code{"1D11E"} on all platforms. |
| %% failed on Solaris |
| |
| \item \code{identical(x,y)} is no longer true for differing |
| \code{DOTSXP} objects, fixing \PR{18032}. |
| |
| \item \code{str()} now works correctly for \code{DOTSXP} and related |
| exotics, even when these are doomed. |
| |
| Additionally, it no longer fails for \code{list}s with a \code{class} and |
| \dQuote{irregular} method definitions such that e.g. \code{lapply(*)} will |
| necessarily fail, as currently for different \CRANpkg{igraph} objects. |
| |
| \item Message translation domains, e.g., for errors and warnings, are |
| now correctly determined also when e.g., a \pkg{base} function is |
| called from \dQuote{top-level} function (i.e., defined in \code{globalenv()}), |
| thanks to a patch from Joris Goosen fixing \PR{17998}. |
| |
| \item Too long lines in environment files (e.g., \file{Renviron}) no |
| longer crash \R. This limit has been increased to 100,000 bytes. |
| (\PR{18001}.) |
| |
| \item There is a further workaround for FreeType giving |
| incorrect italic font faces with cairo-based graphics devices on |
| macOS. |
| |
| \item \code{add_datalist(*, force = TRUE)} (from package |
| \pkg{tools}) now actually updates an existing \file{data/datalist} |
| file for new content. (Thanks to a report and patch by Sebastian |
| Meyer in \PR{18048}.) |
| |
| \item \code{cut.Date()} and \code{cut.POSIXt()} could produce an |
| empty last interval for \code{breaks = "months"} or \code{breaks = |
| "years"}. (Reported as \PR{18053} by Christopher Carbone.) |
| |
| \item Detection of the encoding of \sQuote{regular} macOS locales |
| such as \samp{en_US} (which is UTF-8) had been broken by a macOS |
| change: fortunately these are now rarely used with |
| \samp{en_US.UTF-8} being preferred. |
| |
| \item \code{sub()} and \code{gsub(pattern, repl, x, *)} now keep |
| attributes of \code{x} such as \code{names()} also when |
| \code{pattern} is \code{NA} (\PR{18079}). |
| |
| \item Time differences (\code{"difftime"} objects) get a replacement |
| and a \code{rep()} method to keep \code{"units"} consistent. |
| (Thanks to a report and patch by Nicolas Bennett in \PR{18066}.) |
| |
| \item The \verb{\RdOpts} macro, setting defaults for \verb{\Sexpr} |
| options in an Rd file, had been ineffective since \R 2.12.0: it |
| now works again. |
| (Thanks to a report and patch by Sebastian Meyer in \PR{18073}.) |
| |
| \item \code{mclapply} and \code{pvec} no longer accidentally terminate |
| parallel processes started before by \code{mcparallel} or related |
| calls in package \pkg{parallel} (\PR{18078}). |
| |
| \item \code{grep} and other functions for evaluating (extended) |
| regular expressions handle in Unicode also strings not explicitly |
| flagged UTF-8, but flagged native when running in UTF-8 locale. |
| |
| \item Fixed a crash in \code{fifo} implementation on Windows |
| (\PR{18031}). |
| |
| \item Binary mode in \code{fifo} on Windows is now properly detected |
| from argument \code{open} (\PR{15600}, \PR{18031}). |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.0.5}{ |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item The change to the internal table in \R 4.0.4 for |
| \code{iswprint} has been reverted: it contained some errors in |
| printability of \sQuote{East Asian} characters. |
| |
| \item For packages using \samp{LazyData}, \command{R CMD build} |
| ignored the \option{--resave-data} option and the |
| \samp{BuildResaveData} field of the \file{DESCRIPTION} file (in \R |
| versions 4.0.0 to 4.0.4). |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.0.4}{ |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item File \file{share/texmf/tex/latex/jss.cls} has been updated |
| to work with LaTeX versions since Oct 2020. |
| |
| \item Unicode character width tables (as used by |
| \code{nchar(, type = "w")}) have been updated to Unicode 12.1 |
| by Brodie Gaslam (\PR{17781}), including many emoji. |
| |
| \item The internal table for \code{iswprint} (used on Windows, |
| macOS and AIX) has been updated to include many recent Unicode |
| characters. |
| } |
| } |
| |
| \subsection{INSTALLATION on a UNIX-ALIKE}{ |
| \itemize{ |
| \item If an external BLAS is specified by \option{--with-blas=foo} |
| or \emph{via} environment variable \env{BLAS_LIBS} is not found, |
| this is now a configuration error. The previous behaviour was not |
| clear from the documentation: it was to continue the search as if |
| \option{--with-blas=yes} was specified. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item \code{all.equal(x,y)} now \dQuote{sees} the two different |
| \code{NA}s in factors, thanks to Bill Dunlap and others in |
| \PR{17897}. |
| |
| \item \code{(~ NULL)[1]} and similar formula subsetting now works, |
| thanks to a report and patch by Henrik Bengtsson in \PR{17935}. |
| Additionally, subsetting leaving an empty formula now works too, |
| thanks to suggestions by Suharto Anggono. |
| |
| \item \code{.traceback(n)} keeps source references again, as before |
| \R 4.0.0, fixing a regression; introduced by the \PR{17580}, reported |
| including two patch proposals by Brodie Gaslam. |
| |
| \item \code{unlist(plst, recursive=FALSE)} no longer drops content |
| for pairlists with list components, thanks to the report and patch |
| by Suharto Anggono in \PR{17950}. |
| |
| \item \code{iconvlist()} now also works on MUSL based (Linux) |
| systems, from a report and patch suggestion by Wesley Chan in |
| \PR{17970}. |
| |
| \item \code{round()} and \code{signif()} no longer tolerate wrong |
| argument names, notably in 1-argument calls; reported by Shane |
| Mueller on R-devel (mailing list); later reported as \PR{17976}. |
| |
| \item \code{.Machine} has \code{longdouble.*} elements only if |
| \code{capabilities("long.double")} is true, as documented. |
| (Previously they were included if the platform had \code{long |
| double} identical to \code{double}, as ARM does.) |
| |
| \item \code{p.adjust(numeric(), n=0)} now works, fixing \PR{18002}. |
| |
| \item \code{identical(x,y)} no longer prints "Unknown Type .." for |
| \code{typeof(x) == "..."} objects. |
| |
| \item Fix (auto-)\code{print()}ing of named complex vectors, see |
| \PR{17868} and \PR{18019}. |
| |
| \item \code{all.equal(<language>, <...>)} now works, fixing \PR{18029}. |
| |
| \item \code{as.data.frame.list(L, row.names=NULL)} now behaves in line |
| with \code{data.frame()}, disregarding names of components of |
| \code{L}, fixing \PR{18034}, reported by Kevin Tappe. |
| |
| \item \code{checkRdaFiles(ff)$version} is now correct also when |
| \code{ff} contains files of different versions, thanks to a report |
| and patch from Sebastian Meyer in \PR{18041}. |
| |
| \item macOS: Quartz device live drawing could fail (no plot is shown) |
| if the system changes the drawing context after view update (often |
| the case since macOS Big Sur). System log may show |
| "CGContextDelegateCreateForContext: invalid context" error. |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.0.3}{ |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item On platforms using \command{configure} option |
| \option{--with-internal-tzcode}, additional values |
| \code{"internal"} and (on macOS only) \code{"macOS"} are accepted |
| for the environment variable \env{TZDIR}. (See \code{?TZDIR}.) |
| |
| On macOS, \code{"macOS"} is used by default if the system timezone |
| database is a newer version than that in the \R installation. |
| |
| \item When \code{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. |
| |
| \item The default value for \code{options("timeout")} can be set |
| from environment variable \env{R_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. |
| } |
| } |
| |
| \subsection{LINK-TIME OPTIMIZATION on a UNIX-ALIKE}{ |
| \itemize{ |
| \item There is now support for parallelized Link-Time Optimization |
| (LTO) with GCC and for \sQuote{thin} LTO with |
| \command{clang} \emph{via} setting the \samp{LTO} macro. |
| |
| \item There is support for setting a different LTO flag for the |
| Fortran compiler, including to empty when mixing \command{clang} |
| and \command{gfortran} (as on macOS). See file \file{config.site}. |
| |
| \item There is a new \samp{LTO_LD} macro to set linker options for |
| LTO compilation, for example to select an alternative linker or |
| to parallelize thin LTO. |
| } |
| } |
| |
| \subsection{DEPRECATED AND DEFUNCT}{ |
| \itemize{ |
| |
| \item The \code{LINPACK} argument to \code{chol.default()}, |
| \code{chol2inv()}, \code{solve.default()} and \code{svd()} has been |
| defunct since \R 3.1.0. Using it now gives a warning which will |
| become an error in \R 4.1.0. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item 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. |
| %% Ubuntu 16.04LTS has PCRE2 10.21 |
| |
| \item Fix to correctly show the group labels in \code{dotchart()} |
| (which where lost in the \code{ylab} improvement for \R 4.0.0). |
| |
| \item \code{addmargins(*, ..)} now also works when \code{fn()} is a |
| local function, thanks to bug report and patch \PR{17124} from Alex |
| Bertram. |
| |
| \item \code{rank(x)} and hence \code{sort(x)} now work when \code{x} |
| is an object (as per \code{is.object(x)}) of type \code{"raw"} |
| \emph{and} provides a valid \code{`[`} method, e.g., for |
| \code{gmp::as.bigz(.)} numbers. |
| |
| \item \code{chisq.test(*, simulate.p.value=TRUE)} and |
| \code{r2dtable()} now work correctly for large table entries (in the |
| millions). Reported by Sebastian Meyer and investigated by more |
| helpers in \PR{16184}. |
| |
| \item 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}. |
| |
| \item \code{quantile(x, pr)} works more consistently for \code{pr} |
| values slightly outside [0,1], thanks to Suharto Anggono's \PR{17891}. |
| |
| Further, \code{quantile(x, prN, names=FALSE)} now works even when |
| \code{prN} contains \code{NA}s, thanks to Anggono's \PR{17892}. |
| Ditto for ordered factors or \code{Date} objects |
| when \code{type = 1} or \code{3}, thanks to \PR{17899}. |
| |
| \item Libcurl-based internet access, including |
| \code{curlGetHeaders()}, was not respecting the \code{"timeout"} |
| option. If this causes unanticipated timeouts, consider |
| increasing the default by setting \env{R_DEFAULT_INTERNET_TIMEOUT}. |
| |
| \item \code{as.Date(<char>)} now also works with an initial |
| \code{""}, thanks to Michael Chirico's \PR{17909}. |
| |
| \item \code{isS3stdGeneric(f)} now detects an S3 generic also when it |
| it is \code{trace()}d, thanks to Gabe Becker's \PR{17917}. |
| |
| \item \code{R_allocLD()} has been fixed to return memory aligned for |
| long double type \PR{16534}. |
| |
| \item \code{fisher.test()} no longer segfaults when called again after |
| its internal stack has been exceeded \PR{17904}. |
| |
| \item Accessing a long vector represented by a compact integer |
| sequence no longer segfaults (reported and debugged by Hugh |
| Parsonage). |
| |
| \item \code{duplicated()} now works also for strings with multiple |
| encodings inside a single vector \PR{17809}. |
| |
| \item \code{phyper(11, 15, 0, 12, log.p=TRUE)} no longer gives |
| \code{NaN}; reported as \PR{17271} by Alexey Stukalov. |
| |
| \item Fix incorrect calculation in \code{logLik.nls()} \PR{16100}, patch |
| from Sebastian Meyer. |
| |
| \item A very old bug could cause a segfault in \code{model.matrix()} |
| when terms involved logical variables. Part of \PR{17879}. |
| |
| \item \code{model.frame.default()} allowed \code{data = 1}, leading to |
| involuntary variable capture (rest of \PR{17879}). |
| |
| \item \code{tar()} no longer skips non-directory files, thanks to a |
| patch by Sebastian Meyer, fixing the remaining part of \PR{16716}. |
| } |
| } |
| } |
| |
| |
| \section{\Rlogo CHANGES IN R 4.0.2}{ |
| |
| \subsection{UTILITIES}{ |
| \itemize{ |
| \item \command{R CMD check} skips vignette re-building (with a |
| warning) if the \samp{VignetteBuilder} package(s) are not available. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item Paths with non-ASCII characters caused problems for |
| package loading on Windows \PR{17833}. |
| |
| \item Using \pkg{tcltk} widgets no longer crashes R on |
| Windows. |
| |
| \item \code{source(*, echo=TRUE)} no longer fails in some cases with |
| empty lines; reported by Bill Dunlap in \PR{17769}. |
| |
| \item \code{on.exit()} now correctly matches named arguments, thanks |
| to \PR{17815} (including patch) by Brodie Gaslam. |
| |
| \item \code{regexpr(*, perl=TRUE)} no longer returns incorrect |
| positions into text containing characters outside of the Unicode |
| Basic Multilingual Plane on Windows. |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.0.1}{ |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item \code{paste()} and \code{paste0()} gain a new optional |
| argument \code{recycle0}. When set to true, zero-length |
| arguments are recycled leading to \code{character(0)} after the |
| \code{sep}-concatenation, i.e., to the empty string \code{""} if |
| \code{collapse} is a string and to the zero-length value |
| \code{character(0)} when \code{collapse = NULL}. |
| |
| A package whose code uses this should depend on \samp{R (>= 4.0.1)}. |
| |
| \item The \code{summary(<warnings>)} method now maps the counts |
| correctly to the warning messages. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item \code{aov(frml, ...)} now also works where the \code{formula} |
| deparses to more than 500 characters, thanks to a report and patch |
| proposal by Jan Hauffa. |
| |
| \item Fix a dozen places (code, examples) as \code{Sys.setlocale()} |
| returns the new rather than the previous setting. |
| |
| \item Fix for adding two complex \pkg{grid} units via \code{sum()}. |
| Thanks to Gu Zuguang for the report and Thomas Lin Pedersen for |
| the patch. |
| |
| \item Fix \code{parallel::mclapply(..., mc.preschedule=FALSE)} |
| to handle raw vector results correctly. \PR{17779} |
| |
| \item Computing the \code{base} value, i.e., 2, \dQuote{everywhere}, |
| now uses \code{FLT_RADIX}, as the original \file{machar} code looped |
| indefinitely on the ppc64 architecture for the \code{longdouble} case. |
| |
| \item In \R 4.0.0, \code{sort.list(x)} when \code{is.object(x)} was |
| true, e.g., for \code{x <- I(letters)}, was accidentally using |
| \code{method = "radix"}. Consequently, e.g., \code{merge(<data.frame>)} |
| was much slower than previously; reported in \PR{17794}. |
| |
| \item \code{plot(y ~ x, ylab = quote(y[i]))} now works, as e.g., for |
| \code{xlab}; related to \PR{10525}. |
| |
| \item \code{parallel::detect.cores(all.tests = TRUE)} tries a |
| matching OS name before the other tests (which were intended only |
| for unknown OSes). |
| |
| \item Parse data for raw strings is now recorded correctly. Reported |
| by Gabor Csardi. |
| } |
| } |
| } |
| |
| \section{\Rlogo CHANGES IN R 4.0.0}{ |
| |
| \subsection{SIGNIFICANT USER-VISIBLE CHANGES}{ |
| \itemize{ |
| \item Packages need to be (re-)installed under this version |
| (4.0.0) of \R. |
| |
| \item \code{matrix} objects now also inherit from class |
| \code{"array"}, so e.g., \code{class(diag(1))} is \code{c("matrix", |
| "array")}. This invalidates code incorrectly assuming that |
| \code{class(matrix_obj))} has length one. |
| |
| S3 methods for class \code{"array"} are now dispatched for |
| \code{matrix} objects. |
| |
| \item There is a new syntax for specifying \emph{raw} character |
| constants similar to the one used in C++: \code{r"(...)"} with |
| \code{...} any character sequence not containing the sequence |
| \samp{)"}. %}) \samp{*}: Rd-parser bug for \code{*}" |
| This makes it easier to write strings that contain backslashes or |
| both single and double quotes. For more details see \code{?Quotes}. |
| |
| \item \R now uses a \samp{stringsAsFactors = FALSE} default, and |
| hence by default no longer converts strings to factors in calls |
| to \code{data.frame()} and \code{read.table()}. |
| |
| A large number of packages relied on the previous behaviour and |
| so have needed/will need updating. |
| |
| \item The \code{plot()} S3 generic function is now in package |
| \pkg{base} rather than package \pkg{graphics}, as it is |
| reasonable to have methods that do not use the \pkg{graphics} |
| package. The generic is currently re-exported from the |
| \pkg{graphics} namespace to allow packages importing it from |
| there to continue working, but this may change in future. |
| |
| Packages which define S4 generics for \code{plot()} should be |
| re-installed and package code using such generics from other |
| packages needs to ensure that they are imported rather than rely |
| on their being looked for on the search path (as in a namespace, |
| the base namespace has precedence over the search path). |
| } |
| } |
| |
| \subsection{REFERENCE COUNTING}{ |
| \itemize{ |
| \item Reference counting is now used instead of the \code{NAMED} |
| mechanism for determining when objects can be safely mutated in |
| base C code. This reduces the need for copying in some cases and |
| should allow further optimizations in the future. It should |
| help make the internal code easier to maintain. |
| |
| This change is expected to have almost no impact on packages |
| using supported coding practices in their C/C++ code. |
| } |
| } |
| |
| \subsection{MIGRATION TO PCRE2}{ |
| \itemize{ |
| \item This version of \R is built against the PCRE2 library for |
| Perl-like regular expressions, if available. (On non-Windows |
| platforms PCRE1 can optionally be used if PCRE2 is not available |
| at build time.) The version of PCRE in use can be obtained |
| \emph{via} \code{extSoftVersion()}: PCRE1 (formerly known as |
| \sQuote{PCRE}) has versions <= 8, PCRE2 versions >= 10. |
| |
| \item Making PCRE2 available when building \R from source is |
| strongly recommended (preferably version 10.30 or later) as PCRE1 |
| is no longer developed: version 8.44 is |
| \sQuote{likely to be the final release}. |
| % https://lists.exim.org/lurker/message/20200212.174850.6edd8277.en.html |
| |
| \item PCRE2 reports errors for some regular expressions that were |
| accepted by PCRE1. A hyphen now has to be escaped in a character |
| class to be interpreted as a literal (unless first or last in the |
| class definition). \samp{\\R}, \samp{\\B} and \samp{\\X} are no |
| longer allowed in character classes (PCRE1 treated these as |
| literals). |
| |
| \item Option \code{PCRE_study} is no longer used with PCRE2, and is |
| reported as \code{FALSE} when that is in use. |
| } |
| } |
| |
| \subsection{NEW FEATURES}{ |
| \itemize{ |
| \item \code{assertError()} and \code{assertWarning()} (in package |
| \pkg{tools}) can now check for \emph{specific} error or warning |
| classes \emph{via} the new optional second argument \code{classes} |
| (which is not back compatible with previous use of an unnamed second |
| argument). |
| |
| \item \code{DF2formula()}, the utility for the data frame method of |
| \code{formula()}, now works without parsing and explicit evaluation, |
| starting from Suharto Anggono's suggestion in \PR{17555}. |
| |
| \item \code{approxfun()} and \code{approx()} gain a new argument |
| \code{na.rm} defaulting to true. If set to false, missing |
| \code{y} values now propagate into the interpolated values. |
| |
| \item Long vectors are now supported as the \code{seq} argument of |
| a \code{for()} loop. |
| |
| \item \code{str(x)} gets a new \code{deparse.lines} option with a |
| default to speed it up when \code{x} is a large \code{call} object. |
| |
| \item The internal traceback object produced when an error is |
| signalled (\code{.Traceback}), now contains the \code{call}s |
| rather than the \emph{\code{deparse()}d} calls, deferring the |
| deparsing to the user-level functions \code{.traceback()} and |
| \code{traceback()}. This fulfils the wish of \PR{17580}, reported |
| including two patch proposals by Brodie Gaslam. |
| |
| \item \code{data.matrix()} now converts character columns to |
| factors and from this to integers. |
| |
| \item \code{package.skeleton()} now explicitly lists all exports |
| in the \file{NAMESPACE} file. |
| |
| \item New function \code{.S3method()} to register S3 methods in R |
| scripts. |
| |
| \item \code{file.path()} has some support for file paths not in |
| the session encoding, e.g.\sspace{}with UTF-8 inputs in a |
| non-UTF-8 locale the output is marked as UTF-8. |
| |
| \item Most functions with file-path inputs will give an explicit |
| error if a file-path input in a marked encoding cannot be |
| translated (to the native encoding or in some cases on Windows to |
| UTF-8), rather than translate to a different file path using |
| escapes. Some (such as \code{dir.exists()}, \code{file.exists()}, |
| \code{file.access()}, \code{file.info()}, \code{list.files()}, |
| \code{normalizePath()} and \code{path.expand()}) treat this like |
| any other non-existent file, often with a warning. |
| |
| \item There is a new help document accessed by |
| \code{help("file path encoding")} detailing how file paths with |
| marked encodings are handled. |
| |
| \item New function \code{list2DF()} for creating data frames from |
| lists of variables. |
| |
| \item \code{iconv()} has a new option \code{sub = "Unicode"} to |
| translate UTF-8 input invalid in the \samp{to} encoding using |
| \samp{<U+xxxx>} escapes. |
| |
| \item There is a new function \code{infoRDS()} providing information |
| about the serialization format of a serialized object. |
| |
| \item S3 method lookup now by default skips the elements of the |
| search path between the global and base environments. |
| |
| \item Added an argument \code{add_datalist(*, small.size = 0)} to |
| allow the creation of a \file{data/datalist} file even when the |
| total size of the data sets is small. |
| |
| \item The backquote function \code{bquote()} has a new argument |
| \code{splice} to enable splicing a computed list of values into an |
| expression, like \code{,@} in LISP's backquote. |
| |
| \item The formula interface to \code{t.test()} and |
| \code{wilcox.test()} has been extended to handle one-sample and |
| paired tests. |
| |
| \item The \code{palette()} function has a new default set of |
| colours (which are less saturated and have better accessibility |
| properties). There are also some new built-in palettes, which |
| are listed by the new \code{palette.pals()} function. These |
| include the old default palette under the name \code{"R3"}. Finally, |
| the new \code{palette.colors()} function allows a subset of |
| colours to be selected from any of the built-in palettes. |
| |
| \item \code{n2mfrow()} gains an option \code{asp = 1} to specify the |
| aspect ratio, fulfilling the wish and extending the proposal of |
| Michael Chirico in \PR{17648}. |
| |
| \item For \code{head(x, n)} and \code{tail()} the default and |
| other S3 methods notably for \emph{vector} \code{n}, e.g. to get a |
| \dQuote{corner} of a matrix, has been extended to \code{array}'s |
| of higher dimension thanks to the patch proposal by Gabe Becker in |
| \PR{17652}. Consequently, optional argument \code{addrownums} is |
| deprecated and replaced by the (more general) argument |
| \code{keepnums}. An invalid second argument \code{n} now leads |
| to typically more easily readable error messages. |
| |
| \item New function \code{.class2()} provides the full character |
| vector of class names used for S3 method dispatch. |
| |
| \item Printing \code{methods(..)} now uses a new \code{format()} method. |
| |
| \item \code{sort.list(x)} now works for non-atomic objects |
| \code{x} and \code{method = "auto"} (the default) or |
| \code{"radix"} in cases \code{order(x)} works, typically via a |
| \code{xtfrm()} method. |
| |
| \item Where they are available, \code{writeBin()} allows |
| long vectors.% (those of length \eqn{\ge 2^{31}}{>= 2^31}). |
| |
| \item New function \code{deparse1()} produces one string, wrapping |
| \code{deparse()}, to be used typically in |
| \code{deparse1(substitute(*))}, e.g., to fix \PR{17671}. |
| |
| \item \code{wilcox.test()} enhancements: In the (non-paired) |
| two-sample case, \code{Inf} values are treated as very large for |
| robustness consistency. If exact computations are used, the |
| result now has \code{"exact"} in the \code{method} element of its |
| return value. New arguments \code{tol.root} and |
| \code{digits.rank} where the latter may be used for stability to |
| treat very close numbers as ties. |
| |
| \item \code{readBin()} and \code{writeBin()} now report an error |
| for an invalid \code{endian} value. The affected code needs to be |
| fixed with care as the old undocumented behavior was to swap |
| endian-ness in such cases. |
| |
| \item \code{sequence()} is now an S3 generic with an internally |
| implemented default method, and gains arguments to generate more |
| complex sequences. Based on code from the \pkg{S4Vectors} |
| Bioconductor package and the advice of Hervé Pagès. |
| |
| \item \code{print()}'s default method and many other methods (by |
| calling the default eventually and passing \code{...}) now make |
| use of a new optional \code{width} argument, avoiding the need for |
| the user to set and reset \code{options("width")}. |
| |
| \item \code{memDecompress()} supports the RFC 1952 format |
| (e.g.\sspace{}in-memory copies of \command{gzip}-compressed files) |
| as well as RFC 1950. |
| |
| \item \code{memCompress()} and \code{memDecompress()} support long |
| raw vectors for types \code{"gzip"} and \code{"zx"}. |
| |
| \item \code{sweep()} and \code{slice.index()} can now use names |
| of dimnames for their \code{MARGIN} argument (\code{apply} has |
| had this for almost a decade). |
| |
| \item New function \code{proportions()} and |
| \code{marginSums()}. These should replace the unfortunately named |
| \code{prop.table()} and \code{margin.table()}. They are drop-in |
| replacements, but also add named-margin functionality. The old |
| function names are retained as aliases for back-compatibility. |
| |
| \item Functions \code{rbinom()}, \code{rgeom()}, \code{rhyper()}, |
| \code{rpois()}, \code{rnbinom(),} \code{rsignrank()} and |
| \code{rwilcox()} which have returned integer since \R 3.0.0 and hence |
| \code{NA} when the numbers would have been outside the integer range, |
| now return double vectors (without NAs, typically) in these cases. |
| |
| \item \code{matplot(x,y)} (and hence \code{matlines()} and |
| \code{matpoints()}) now call the corresponding methods of |
| \code{plot()} and \code{lines()}, e.g, when \code{x} is a |
| \code{"Date"} or \code{"POSIXct"} object; prompted by Spencer Graves' |
| suggestion. |
| |
| \item \code{stopifnot()} now allows customizing error messages via |
| argument names, thanks to a patch proposal by Neal Fultz in \PR{17688}. |
| |
| \item \code{unlink()} gains a new argument \code{expand} to disable |
| wildcard and tilde expansion. Elements of \code{x} of value |
| \code{"~"} are now ignored. |
| |
| \item \code{mle()} in the \code{stats4} package has had its |
| interface extended so that arguments to the negative |
| log-likelihood function can be one or more vectors, with similar |
| conventions applying to bounds, start values, and parameter values |
| to be kept fixed. This required a minor extension to class |
| \code{"mle"}, so saved objects from earlier versions may need to |
| be recomputed. |
| |
| \item The default for \code{pdf()} is now |
| \code{useDingbats = FALSE}. |
| |
| \item The default fill colour for \code{hist()} and |
| \code{boxplot()} is now \code{col = "lightgray"}. |
| |
| \item The default order of the levels on the y-axis for |
| \code{spineplot()} and \code{cdplot()} has been reversed. |
| |
| \item If the \env{R_ALWAYS_INSTALL_TESTS} environment variable is |
| set to a true value, \command{R CMD INSTALL} behaves as if |
| the \option{--install-tests} option is always specified. Thanks to |
| Reinhold Koch for the suggestion. |
| |
| \item New function \code{R_user_dir()} in package \pkg{tools} |
| suggests paths appropriate for storing \R-related user-specific |
| data, configuration and cache files. |
| |
| \item \code{capabilities()} gains a new logical option \code{Xchk} |
| to avoid warnings about X11-related capabilities. |
| |
| \item The internal implementation of \pkg{grid} units has changed, |
| but the only visible effects at user-level should be |
| \itemize{ |
| \item a slightly different print format for some units |
| (especially unit arithmetic), |
| \item faster performance (for unit operations) and |
| \item two new functions \code{unitType()} and \code{unit.psum()}. |
| } |
| Based on code contributed by Thomas Lin Pedersen. |
| |
| \item When internal dispatch for \code{rep.int()} |
| and \code{rep_len()} fails, there is an attempt to dispatch on the |
| equivalent call to \code{rep()}. |
| |
| \item Object \code{.Machine} now contains new \code{longdouble.*} |
| entries (when \R uses long doubles internally). |
| |
| \item \code{news()} has been enhanced to cover the news on \R 3.x |
| and 2.x. |
| |
| \item For consistency, \code{N <- NULL; N[[1]] <- val} now turns |
| \code{N} into a \code{list} also when \code{val)} has length one. |
| This enables \code{dimnames(r1)[[1]] <- "R1"} for a 1-row matrix |
| \code{r1}, fixing \PR{17719} reported by Serguei Sokol. |
| |
| \item \code{deparse(..)}, \code{dump(..)}, and \code{dput(x, |
| control = "all")} now include control option \code{"digits17"} |
| which typically ensures 1:1 invertibility. New option |
| \code{control = "exact"} ensures numeric exact invertibility |
| via \code{"hexNumeric"}. |
| |
| \item When loading data sets via \code{read.table()}, |
| \code{data()} now uses \samp{LC_COLLATE=C} to ensure |
| locale-independent results for possible string-to-factor |
| conversions. |
| |
| \item A server socket connection, a new connection type |
| representing a listening server socket, is created via |
| \code{serverSocket()} and can accept multiple socket connections |
| via \code{socketAccept()}. |
| |
| \item New function \code{socketTimeout()} changes the connection |
| timeout of a socket connection. |
| |
| \item The time needed to start a homogeneous \samp{PSOCK} cluster on |
| \samp{localhost} with many nodes has been significantly reduced |
| (package \pkg{parallel}). |
| |
| \item New \code{globalCallingHandlers()} function to establish |
| global condition handlers. This allows registering default |
| handlers for specific condition classes. Developed in |
| collaboration with Lionel Henry. |
| |
| \item New function \code{tryInvokeRestart()} to invoke a specified |
| restart if one is available and return without signaling an error |
| if no such restart is found. Contributed by Lionel Henry in |
| \PR{17598}. |
| |
| \item \code{str(x)} now shows the length of \code{attributes} in some |
| cases for a data frame \code{x}. |
| |
| \item \code{Rprof()} gains a new argument \code{filter.callframes} |
| to request that intervening call frames due to lazy evaluation or |
| explicit \code{eval()} calls be omitted from the recorded profile |
| data. Contributed by Lionel Henry in \PR{17595}. |
| |
| \item The handling of \code{$\{FOO-bar\}} and \code{$\{FOO:-bar\}} |
| in \file{Renviron} files now follows POSIX shells (at least on a |
| Unix-alike), so the first treats empty environment variables as |
| set and the second does not. Previously both ignored empty |
| variables. There are several uses of the first form in |
| \file{etc/Renviron}. |
| |
| \item New \code{classes} argument for \code{suppressWarnings()} |
| and \code{suppressMessages()} to selectively suppress only |
| warnings or messages that inherit from particular classes. |
| Based on patch from Lionel Henry submitted with \PR{17619}. |
| |
| \item New function \code{activeBindingFunction()} retrieves the |
| function of an active binding. |
| |
| \item New \code{"cairoFT"} and \code{"pango"} components in the |
| output of \code{grSoftVersion()}. |
| |
| \item New argument \code{symbolfamily} in cairo-based graphics |
| devices and new function \code{cairoSymbolFont()} that can be used |
| to provide the value for that argument. |
| } |
| }% end{ NEW FEATURES } |
| |
| \subsection{Windows}{ |
| \itemize{ |
| \item \command{Rterm} now works also when invoked from MSYS2 |
| terminals. Line editing is possible when command \command{winpty} is |
| installed. |
| |
| \item \code{normalizePath()} now resolves symbolic links and |
| normalizes case of long names of path elements in case-insensitive |
| folders (\PR{17165}). |
| |
| \item \code{md5sum()} supports UTF-8 file names with characters |
| that cannot be translated to the native encoding (\PR{17633}). |
| |
| \item \command{Rterm} gains a new option \option{--workspace} to |
| specify the workspace to be restored. This allows equals to be |
| part of the name when opening \emph{via} Windows file associations |
| (reported by Christian Asseburg). |
| |
| \item \command{Rterm} now accepts \code{ALT+xxx} sequences also |
| with NumLock on. Tilde can be pasted with an Italian keyboard |
| (\PR{17679}). |
| |
| \item \R falls back to copying when junction creation fails during |
| package checking (patch from Duncan Murdoch). |
| } |
| } |
| |
| \subsection{DEPRECATED AND DEFUNCT}{ |
| \itemize{ |
| \item Make macro \samp{F77_VISIBILITY} has been removed |
| and replaced by \samp{F_VISIBILITY}. |
| |
| \item Make macros \samp{F77}, \samp{FCPIFCPLAGS} and |
| \samp{SHLIB_OPENMP_FCFLAGS} have been removed and replaced by |
| \samp{FC}, \samp{FPICFLAGS} and \samp{SHLIB_OPENMP_FFLAGS} |
| respectively. (Most \command{make} programs will set \samp{F77} |
| to the value of \samp{FC}, which is set for package compilation. |
| But portable code should not rely on this.) |
| |
| \item The deprecated support for specifying C++98 for package |
| installation has been removed. |
| |
| \item \command{R CMD config} no longer knows about the |
| unused settings \samp{F77} and \samp{FCPIFCPLAGS}, nor |
| \samp{CXX98} and similar. |
| |
| \item Either PCRE2 or PCRE1 >= 8.32 (Nov 2012) is required: the |
| deprecated provision for 8.20--8.31 has been removed. |
| |
| \item Defunct functions \code{mem.limits()}, \code{.readRDS()}, |
| \code{.saveRDS()}, \code{.find.package()}, and \code{.path.package()} |
| from package \pkg{base} |
| and \code{allGenerics()}, \code{getAccess()}, \code{getAllMethods()}, |
| \code{getClassName()}, \code{getClassPackage()}, \code{getExtends()}, |
| \code{getProperties()}, \code{getPrototype()}, |
| \code{getSubclasses()}, \code{getVirtual()}, \code{mlistMetaName()}, |
| \code{removeMethodsObject()}, \code{seemsS4Object()}, |
| \code{traceOff()}, and \code{traceOn()} from \pkg{methods} have been |
| removed. |
| } |
| } |
| |
| \subsection{C-LEVEL FACILITIES}{ |
| \itemize{ |
| \item \code{installChar} is now remapped in \file{Rinternals.h} to |
| \code{installTrChar}, of which it has been a wrapper since |
| \R\sspace{}3.6.0. Neither are part of the API, but packages using |
| \code{installChar} can replace it if they depend on \samp{R >= 3.6.2}. |
| |
| \item Header \file{R_ext/Print.h} defines \samp{R_USE_C99_IN_CXX} |
| and hence exposes \code{Rvprintf} and \code{REvprintf} if used |
| with a C++11 (or later) compiler. |
| |
| \item There are new Fortran subroutines \code{dblepr1}, |
| \code{realpr1} and \code{intpr1} to print a scalar variable |
| (\command{gfortran} 10 enforces the distinction between scalars |
| and length-one arrays). Also \code{labelpr} to print just a label. |
| |
| \item \code{R_withCallingErrorHandler} is now available for |
| establishing a calling handler in C code for conditions inheriting |
| from class \code{error}. |
| } |
| } |
| |
| \subsection{INSTALLATION on a UNIX-ALIKE}{ |
| \itemize{ |
| \item User-set \samp{DEFS} (e.g., in \file{config.site}) is now |
| used for compiling packages (including base packages). |
| |
| \item There is a new variant option \option{--enable-lto=check} |
| for checking consistency of BLAS/LAPACK/LINPACK calls --- see |
| \sQuote{Writing R Extensions}. |
| |
| \item A C++ compiler default is set only if the C++11 standard is |
| supported: it no longer falls back to C++98. |
| |
| \item PCRE2 is used if available. To make use of PCRE1 if PCRE2 |
| is unavailable, configure with option \option{--with-pcre1}. |
| |
| \item The minimum required version of \code{libcurl} is now 7.28.0 |
| (Oct 2012). |
| |
| \item New make target \command{distcheck} checks |
| \itemize{ |
| \item \R can be rebuilt from the tarball created by |
| \command{make dist}, |
| \item the build from the tarball passes \command{make check-all}, |
| \item the build installs and uninstalls, |
| \item the source files are properly cleaned by \command{make distclean}. |
| } |
| } |
| } |
| |
| \subsection{UTILITIES}{ |
| \itemize{ |
| \item \command{R --help} now mentions the option \command{--no-echo} |
| (renamed from \command{--slave}) and its previously undocumented |
| short form \command{-s}. |
| |
| \item \command{R CMD check} now optionally checks |
| \command{configure} and \command{cleanup} scripts for |
| non-Bourne-shell code (\sQuote{bashisms}). |
| |
| \item \command{R CMD check --as-cran} now runs \code{\\donttest} |
| examples (which are run by \code{example()}) instead of |
| instructing the tester to do so. This can be temporarily |
| circumvented during development by setting environment variable |
| \env{_R_CHECK_DONTTEST_EXAMPLES_} to a false value. |
| } |
| } |
| |
| \subsection{PACKAGE INSTALLATION}{ |
| \itemize{ |
| \item There is the beginnings of support for the recently approved |
| C++20 standard, specified analogously to C++14 and C++17. There is |
| currently only limited support for this in compilers, with flags |
| such as \option{-std=c++20} and \option{-std=c++2a}. For the time |
| being the \command{configure} test is of accepting one of these |
| flags and compiling C++17 code. |
| } |
| } |
| |
| \subsection{BUG FIXES}{ |
| \itemize{ |
| \item \code{formula(x)} with \code{length(x) > 1} character vectors, |
| is deprecated now. Such use has been rare, and has \sQuote{worked} |
| as expected in some cases only. In other cases, wrong \code{x} have |
| silently been truncated, not detecting previous errors. |
| |
| \item Long-standing issue where the X11 device could lose events |
| shortly after startup has been addressed (\PR{16702}). |
| |
| \item The \code{data.frame} method for \code{rbind()} no longer |
| drops \code{<NA>} levels from factor columns by default |
| (\PR{17562}). |
| |
| \item \code{available.packages()} and hence \code{install.packages()} |
| now pass their \code{...} argument to \code{download.file()}, |
| fulfilling the wish of \PR{17532}; subsequently, |
| \code{available.packages()} gets new argument \code{quiet}, solving |
| \PR{17573}. |
| |
| \item \code{stopifnot()} gets new argument \code{exprObject} to allow |
| an \R object of class \code{expression} (or other \sQuote{language}) |
| to work more consistently, thanks to suggestions by Suharto Anggono. |
| |
| \item \code{conformMethod()} now works correctly in cases containing |
| a \dQuote{\code{&&} logic} bug, reported by Henrik Bengtsson. It now |
| creates methods with \code{"missing"} entries in the signature. |
| Consequently, \code{rematchDefinition()} is amended to use |
| appropriate \code{.local()} calls with named arguments where needed. |
| |
| \item \code{format.default(*, scientific = FALSE)} now corresponds to |
| a practically most extreme \code{options(scipen = n)} setting rather |
| than arbitrary \code{n = 100}. |
| |
| \item \code{format(as.symbol("foo"))} now works (returning \code{"foo"}). |
| |
| \item \code{postscript(.., title = *)} now signals an error when |
| the title string contains a character which would produce corrupt |
| PostScript, thanks to \PR{17607} by Daisuko Ogawa. |
| |
| \item Certain \code{Ops} (notably comparison such as \code{==}) now |
| also work for 0-length data frames, after reports by Hilmar Berger. |
| |
| \item \code{methods(class = class(glm(..)))} now warns more usefully |
| and only once. |
| |
| \item \code{write.dcf()} no longer mangles field names (\PR{17589}). |
| |
| \item Primitive replacement functions no longer mutate a |
| referenced first argument when used outside of a complex |
| assignment context. |
| |
| \item A better error message for \code{contour(*, levels = Inf)}. |
| |
| \item The return value of \code{contourLines()} is no longer |
| \code{invisible()}. |
| |
| \item The Fortran code for calculating the \code{coefficients} |
| component in \code{lm.influence()} was very inefficient. It has |
| (for now) been replaced with much faster \R{} code (\PR{17624}). |
| |
| \item \code{cm.colors(n)} \emph{etc} no longer append the code for |
| \code{alpha = 1}, \code{"FF"}, to all colors. Hence all eight |
| \code{*.colors()} functions and \code{rainbow()} behave |
| consistently and have the same non-explicit default (\PR{17659}). |
| |
| \item \code{dnorm} had a problematic corner case with \code{sd == |
| -Inf} or negative \code{sd} which was not flagged as an error in |
| all cases. Thanks to Stephen D. Weigand for reporting and Wang |
| Jiefei for analyzing this; similar change has been made in |
| \code{dlnorm()}. |
| |
| \item The optional \code{iter.smooth} argument of |
| \code{plot.lm()}, (the \code{plot()} method for \code{lm} and |
| \code{glm} fits) now defaults to \code{0} for all \code{glm} fits. |
| Especially for binary observations with high or low fitted |
| probabilities, this effectively deleted all observations of 1 or |
| 0. Also, the type of residuals used in the \code{glm} case has |
| been switched to \code{"pearson"} since deviance residuals do not |
| in general have approximately zero mean. |
| |
| \item In \code{plot.lm}, Cook's distance was computed from unweighted |
| residuals, leading to inconsistencies. Replaced with usual weighted |
| version. (\PR{16056}) |
| |
| \item Time-series \code{ts(*, start, end, frequency)} with |
| fractional \code{frequency} are supported more consistently; |
| thanks to a report from Johann Kleinbub and analysis and patch by |
| Duncan Murdoch in \PR{17669}. |
| |
| \item In case of errors \code{mcmapply()} now preserves attributes |
| of returned \code{"try-error"} objects and avoids simplification, |
| overriding \code{SIMPLIFY} to \code{FALSE}. (\PR{17653}) |
| |
| \item \code{as.difftime()} gets new optional \code{tz = "UTC"} |
| argument which should fix behaviour during |
| daylight-savings-changeover days, fixing \PR{16764}, thanks to |
| proposals and analysis by Johannes Ranke and Kirill Müller. |
| |
| \item \code{round()} does a better job of rounding |
| \emph{\dQuote{to nearest}} by \emph{measuring} and |
| \emph{\dQuote{to even}}; thanks to a careful algorithm originally |
| prompted by the report from Adam Wheeler and then others, in |
| \PR{17668}. \cr \code{round(x, dig)} for \emph{negative} digits |
| is much more rational now, notably for large \eqn{|dig|}. |
| |
| \item Inheritance information on S4 classes is maintained more |
| consistently, particularly in the case of class unions (in part |
| due to \PR{17596} and a report from Ezra Tucker). |
| |
| \item \code{is()} behaves more robustly when its argument |
| \code{class2} is a \code{classRepresentation} object. |
| |
| \item The warning message when attempting to export an nonexistent |
| class is now more readable; thanks to Thierry Onkelinx for |
| recognizing the problem. |
| |
| \item \code{choose()} misbehaved in corner cases where it switched |
| \code{n - k} for \code{k} and \code{n} was only \emph{nearly} integer |
| (report from Erik Scott Wright). |
| |
| \item \code{mle()} in the \code{stats4} package had problems |
| combining use of box constraints and fixed starting values (in |
| particular, confidence intervals were affected). |
| |
| \item Operator \code{?} now has lower precedence than \code{=} to |
| work as documented, so \code{=} behaves like \code{<-} in help |
| expressions (\PR{16710}). |
| |
| \item \code{smoothEnds(x)} now returns \code{integer} type in |
| \emph{both} cases when \code{x} is \code{integer}, thanks to a |
| report and proposal by Bill Dunlap \PR{17693}. |
| |
| \item The \pkg{methods} package does a better job of tracking |
| inheritance relationships across packages. |
| |
| \item \code{norm(diag(c(1, NA)), "2")} now works. |
| |
| \item \code{subset()} had problems with 0-col dataframes (reported |
| by Bill Dunlap, \PR{17721}). |
| |
| \item Several cases of integer overflow detected by the |
| \sQuote{undefined behaviour sanitizer} of \command{clang} 10 have |
| been circumvented. One in \code{rhyper()} may change the |
| generated value for large input values. |
| |
| \item \code{dotchart()} now places the y-axis label (\code{ylab}) |
| much better, not overplotting labels, thanks to a report and |
| suggestion by Alexey Shipunov. |
| |
| %% detected by clang-ASAN in examples/tests of adehabitatHR. |
| \item A rare C-level array overflow in \code{chull()} has been |
| worked around. |
| |
| \item Some invalid specifications of the day-of-the-year |
| (\emph{via} \code{\%j}, e.g.\sspace{}day 366 in 2017) or week |
| plus day-of-the-week are now detected by \code{strptime()}. |
| They now return \code{NA} but give a warning as they may have |
| given random results or corrupted memory in earlier versions of \R. |
| |
| \item \code{socketConnection(server = FALSE)} now respects the |
| connection timeout also on Linux. |
| |
| \item \code{socketConnection(server = FALSE)} no longer leaks a |
| connection that is available right away without waiting (e.g. on |
| \samp{localhost}). |
| |
| \item Socket connections are now robust against spurious readability |
| and spurious availability of an incoming connection. |
| |
| \item \code{blocking = FALSE} is now respected also on the server side |
| of a socket connection, allowing non-blocking read operations. |
| |
| \item \code{anova.glm()} and \code{anova.glmlist()} computed |
| incorrect score (Rao) tests in no-intercept cases. (André |
| Gillibert, \PR{17735}) |
| |
| \item \code{summaryRprof()} now should work correctly for the |
| \code{Rprof(*, memory.profiling=TRUE)} case with small chunk size (and |
| \code{"tseries"} or similar) thanks to a patch proposal by Benjamin |
| Tyner, in \PR{15886}. |
| |
| \item \code{xgettext()} ignores strings passed to |
| \code{ngettext()}, since the latter is handled by |
| \code{xngettext()}. Thanks to Daniele Medri for the report and all |
| the recent work he has done on the Italian translations. |
| |
| \item \code{data(package = "P")} for \code{P} in \pkg{base} and |
| \pkg{stats} no longer reports the data sets from package |
| \pkg{datasets} (which it did for back compatibility for 16 years), |
| fixing \PR{17730}. |
| |
| \item \code{x[[Inf]]} (returning \code{NULL}) no longer leads to |
| undefined behavior, thanks to a report by Kirill Müller in |
| \PR{17756}. Further, \code{x[[-Inf]]} and \code{x[[-n]]} now give |
| more helpful error messages. |
| |
| \item \code{Gamma()} family sometimes had trouble storing |
| link name \PR{15891} |
| } |
| } |
| |
| \subsection{BUG FIXES (Windows)}{ |
| \itemize{ |
| \item \code{Sys.glob()} now supports all characters |
| from the Unicode Basic Multilingual Plane, no longer corrupting |
| some (less commonly used) characters (\PR{17638}). |
| |
| \item \command{Rterm} now correctly displays |
| multi-byte-coded characters representable in the current native |
| encoding (at least on Windows 10 they were sometimes omitted, |
| \PR{17632}). |
| |
| \item \code{scan()} issues with UTF-8 data when running in a DBCS |
| locale have been resolved (\PR{16520}, \PR{16584}). |
| |
| \item \command{Rterm} now accepts enhanced/arrow keys also with |
| ConPTY. |
| |
| \item \R can can now be started \emph{via} the launcher icon in a |
| user documents directory whose path is not representable in the |
| system encoding. |
| |
| \item \code{socketConnection(server = FALSE)} now returns instantly |
| also on Windows when connection failure is signalled. |
| |
| \item Problems with UTF-16 surrogate pairs have been fixed in |
| several functions, including \command{tolower()} and |
| \command{toupper()} (\PR{17645}). |
| } |
| } |
| } |
| |
| \section{CHANGES in previous versions}{ |
| \itemize{ |
| \item Older news can be found in text format in files |
| \ifelse{html}{\href{../NEWS.0}{NEWS.0}, \href{../NEWS.1}{NEWS.1}, |
| \href{../NEWS.2}{NEWS.2} and |
| and \href{../NEWS.3}{NEWS.3}}{\file{NEWS.0}, \file{NEWS.1}, |
| \file{NEWS.2} and \file{NEWS.3}} |
| in the \file{doc} directory. News in HTML format for |
| \R versions 3.x and from 2.10.0 to 2.15.3 is available at |
| \ifelse{html}{\url{NEWS.3.html}}{\file{doc/html/NEWS.3.html}} |
| and |
| \ifelse{html}{\url{NEWS.2.html}}{\file{doc/html/NEWS.2.html}}. |
| } |
| } |