| R News |
| |
| LATER NEWS: |
| |
| • News for R 4.x.y can be found in HTML format at doc/html/NEWS.html, |
| and in text format in file NEWS in the doc directory. |
| |
| CHANGES IN R 3.6.3: |
| |
| NEW FEATURES: |
| |
| • The included LAPACK has been updated to version 3.9.0 (for the |
| included routines, just bug fixes). |
| |
| BUG FIXES: |
| |
| • Fixed a C level integer overflow in rhyper(); reported by |
| Benjamin Tyner in PR#17694. |
| |
| • Uses of url(gzcon(.)) needing to extend buffer size have failed |
| (with HTTP/2 servers), reported by Gábor Csárdi. |
| |
| • predict(loess(..), se=TRUE) now errors out (instead of |
| seg.faulting etc) for large sample sizes, thanks to a report and |
| patch by Benjamin Tyner in PR#17121. |
| |
| • tools:assertCondition(., "error") and hence assertError() no |
| longer return errors twice (invisibly). |
| |
| • update(form, new) in the case of a long new formula sometimes |
| wrongly eliminated the intercept from form, or (more rarely) |
| added a garbage term (or seg.faulted !); the fix happened by |
| simplifying the C-level logic of terms.formula(). Reported by |
| Mathias Ambühl in PR#16326. |
| |
| • The error message from stopifnot(.., <error producing call>) |
| again contains the full "stopifnot(.......)" call: Its attempted |
| suppression did not work consistently. |
| |
| • On Windows, download.file(., , "wininet", headers=character()) |
| would fail; reported with patch proposal by Kevin Ushey in |
| PR#17710. |
| |
| CHANGES IN R 3.6.2: |
| |
| NEW FEATURES: |
| |
| • runmed(x, *) gains a new option na.action determining _how_ to |
| handle NaN or NA in x. |
| |
| • dotchart() gains new options ann, xaxt, frame.plot and log. |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • Detection of the C stack direction has been moved from run-time |
| to configure: this is safer with LTO builds and allows the |
| detection to be overridden - see file config.site. |
| |
| • Source-code changes enable installation on platforms using gcc |
| -fno-common (the expected default for gcc 10.x). |
| |
| C-LEVEL FACILITIES: |
| |
| • installTrChar (which is nowadays is wrapped by installChar) is |
| defined in Rinternals.h. (Neither are part of the API.) |
| |
| PACKAGE INSTALLATION: |
| |
| • Header Rconfig.h contains the value of FC_LEN_T deduced at |
| installation which is used by the prototypes in headers |
| R_ext/BLAS.h and R_ext/Lapack.h but to avoid extensive breakage |
| this is only exposed when USE_FC_LEN_T is defined. |
| |
| If a package's C/C++ calls to BLAS/LAPACK allow for the ‘hidden’ |
| arguments used by most Fortran compilers to pass the lengths of |
| Fortran character arguments, define USE_FC_LEN_T and include |
| Rconfig.h (possibly _via_ R.h) before including R_ext/BLAS.h or |
| R_ext/Lapack.h. |
| |
| • A package with Fortran source code and perhaps C (but not C++) |
| sources can request for its shared object/DLL to be linked by the |
| Fortran compiler by including a line USE_FC_TO_LINK= in |
| src/Makevars[.win] and using $(SHLIB_OPENMP_FFLAGS) as part of |
| PKG_LIBS. |
| |
| The known reason for doing so is a package which uses Fortran |
| (only) OpenMP on a platform where the Fortran OpenMP runtime is |
| incompatible with the C one (e.g. gfortran 9.x with clang). |
| |
| UTILITIES: |
| |
| • R CMD check has a new option to mitigate checks leaving |
| files/directories in /tmp. See the ‘R Internals’ manual - this |
| is part of --as-cran. |
| |
| Windows: |
| |
| • The default standard for C++ in package installation is C++11 (as |
| it has been on other platforms where available since R 3.6.0: the |
| default toolchain on Windows was defaulting to C++98). |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • Support for specifying C++98 in package installation is |
| deprecated. |
| |
| • Support in R CMD config for F77, FCPIFCPLAGS, CPP, CXXCPP and |
| CXX98 and similar is deprecated. (CPP is found from the system |
| make and may well not be set.) |
| |
| Use $CC -E and $CXX -E instead of CPP and CXXCPP. |
| |
| BUG FIXES: |
| |
| • runmed(x, *) when x contains missing values now works |
| consistently for both algorithm="Stuetzle" and "Turlach", and no |
| longer segfaults for "Turlach", as reported by Hilmar Berger. |
| |
| • apply(diag(3), 2:3, mean) now gives a helpful error message. |
| |
| • dgamma(x, shape, log=TRUE) now longer overflows to Inf for shape |
| < 1 and very small x, fixing PR#17577, reported by Jonathan |
| Rougier. |
| |
| • Buffer overflow in building error messages fixed. Reported by |
| Benjamin Tremblay. |
| |
| • options(str = .) is correctly initialized at package utils load |
| time, now. A consequence is that str() in scripts now is more |
| consistent to interactive use, e.g., when displaying function(**) |
| argument lists. |
| |
| • as.numeric(<call>) now gives correct error message. |
| |
| • Printing ls.str() no longer wrongly shows "<missing>" in rare |
| cases. |
| |
| • Auto-printing S4 objects no longer duplicates the object, for |
| faster speed and reduced memory consumption. Reported by Aaron |
| Lun. |
| |
| • pchisq(<LRG>, <LRG>, ncp=100) no longer takes practically forever |
| in some cases. Hence ditto for corresponding qchisq() calls. |
| |
| • x %% L for finite x no longer returns NaN when L is infinite, nor |
| suffers from cancellation for large finite L, thanks to Long Qu's |
| PR#17611. |
| |
| Analogously, x %/% L and L %/% x suffer less from cancellation |
| and return values corresponding to limits for large L. |
| |
| • grepl(NA, *) now returns logical as documented. |
| |
| • options(warn=1e11) is an error now, instead of later leading to C |
| stack overflow because of infinite recursion. |
| |
| • R_tryCatch no longer transfers control for all conditions. |
| Reported and patch provided by Lionel Henry in PR#17617. |
| |
| • format(object.size(.), digits=NULL) now works, fixing PR#17628 |
| reported by Jonathan Carroll. |
| |
| • get_all_vars(f, d) now also works for cases, e.g. where d |
| contains a matrix. Reported by Simon Wood in 2009 and patch |
| provided by Ben Bolker in PR#13624. |
| |
| Additionally, it now also works when some variables are data |
| frames, fixing PR#14905, reported by Patrick Breheny. |
| |
| • barplot() could get spacings wrong if there were exactly two bars |
| PR#15522. Patch by Michael Chirico. |
| |
| • power.t.test() works in more cases when returning values of n |
| smaller than 2. |
| |
| • dotchart(*, pch=., groups=.) now works better. Reported by |
| Robert and confirmed by Nic Rochette in PR#16953. |
| |
| • canCoerce(obj, cl) no longer assumes length(class(obj)) == 1. |
| |
| • plot.formula(*, subset = *) now also works in a boundary case |
| reported by Robert Schlicht (TU Dresden). |
| |
| • readBin() and writeBin() of a rawConnection() now also work in |
| large cases, thanks to a report and proposal by Taeke Harkema in |
| PR#17665. |
| |
| CHANGES IN R 3.6.1: |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • The default detection of the shell variable libNN is overridden |
| for derivatives of Debian Linux, some of which have started to |
| have a /usr/lib64 directory. (E.g. Ubuntu 19.04.) As before, it |
| can be specified in config.site. |
| |
| UTILITIES: |
| |
| • R CMD config knows the values of AR and RANLIB, often set for LTO |
| builds. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • The use of a character vector with .Fortran() is formally |
| deprecated and gives a non-portability warning. (It has long |
| been strongly discouraged in ‘Writing R Extensions’.) |
| |
| BUG FIXES: |
| |
| • On Windows, GUI package installation via menuInstallPkgs() works |
| again, thanks to Len Weil's and Duncan Murdoch's PR#17556. |
| |
| • R CMD check on data() fixing PR#17558 thanks to Duncan Murdoch. |
| |
| • quasi(*, variance = list(..)) now works more efficiently, and |
| should work in all cases fixing PR#17560. Further, quasi(var = |
| mu(1-mu)) and quasi(var = "mu ^ 3") now work, and quasi(variance |
| = "log(mu)") now gives a correct error message. |
| |
| • Creation of lazy loading database during package installation is |
| again robust to Rprofile changing the current working directory |
| (PR#17559). |
| |
| • boxplot(y ~ f, horizontal=TRUE) now produces correct x- and |
| y-labels. |
| |
| • rbind.data.frame() allows to keep <NA> levels from factor columns |
| (PR#17562) via new option factor.exclude. |
| |
| Additionally, it works in one more case with matrix-columns which |
| had been reported on 2017-01-16 by Krzysztof Banas. |
| |
| • Correct messaging in C++ pragma checks in tools code for R CMD |
| check, fixing PR#17566 thanks to Xavier Robin. |
| |
| • print()ing and auto-printing no longer differs for functions with |
| a user defined print.function, thanks to Bill Dunlap's report. |
| |
| • On Windows, writeClipboard(.., format = <n>) now does correctly |
| pass format to the underlying C code, thanks to a bug report |
| (with patch) by Jenny Bryan. |
| |
| • as.data.frame() treats 1D arrays the same as vectors, PR#17570. |
| |
| • Improvements in smoothEnds(x, *) working with NAs (towards |
| runmed() working in that case, in the next version of R). |
| |
| • vcov(glm(<quasi>), dispersion = *) works correctly again, fixing |
| PR#17571 thanks to Pavel Krivitsky. |
| |
| • R CMD INSTALL of binary packages on Windows now works also with |
| per-directory locking. |
| |
| • R CMD INSTALL and install.packages() on Windows are now more |
| robust against a locked file in an earlier installation of the |
| package to be installed. The default value of option |
| install.lock on Windows has been changed to TRUE. |
| |
| • On Unix alikes (when readline is active), only expand tilde (~) |
| file names starting with a tilde, instead of almost all tildes. |
| |
| • In R documentation (*.Rd) files, \item [..] is no longer treated |
| specially when rendered in LaTeX and hence pdf, but rather shows |
| the brackets in all cases. |
| |
| CHANGES IN R 3.6.0: |
| |
| SIGNIFICANT USER-VISIBLE CHANGES: |
| |
| • Serialization format version 3 becomes the default for |
| serialization and saving of the workspace (save(), serialize(), |
| saveRDS(), compiler::cmpfile()). Serialized data in format 3 |
| cannot be read by versions of R prior to version 3.5.0. |
| Serialization format version 2 is still supported and can be |
| selected by version = 2 in the save/serialization functions. The |
| default can be changed back for the whole R session by setting |
| environment variables R_DEFAULT_SAVE_VERSION and |
| R_DEFAULT_SERIALIZE_VERSION to 2. For maximal |
| back-compatibility, files vignette.rds and partial.rdb generated |
| by R CMD build are in serialization format version 2, and resave |
| by default produces files in serialization format version 2 |
| (unless the original is already in format version 3). |
| |
| • The default method for generating from a discrete uniform |
| distribution (used in sample(), for instance) has been changed. |
| This addresses the fact, pointed out by Ottoboni and Stark, that |
| the previous method made sample() noticeably non-uniform on large |
| populations. See PR#17494 for a discussion. The previous method |
| can be requested using RNGkind() or RNGversion() if necessary for |
| reproduction of old results. Thanks to Duncan Murdoch for |
| contributing the patch and Gabe Becker for further assistance. |
| |
| The output of RNGkind() has been changed to also return the |
| ‘kind’ used by sample(). |
| |
| NEW FEATURES: |
| |
| • Sys.setFileTime() has been vectorized so arguments path and time |
| of length greater than one are now supported. |
| |
| • axis() gets new option gap.axis = NA for specifying a |
| multiplication factor for the minimal “gap” (distance) between |
| axis labels drawn. Its default is 1 for labels _parallel_ to the |
| axis, and 0.25 for perpendicular ones. |
| |
| Perpendicular labels no longer overlap, fixing bug PR#17384. |
| |
| • The default method of plot() gains new arguments xgap.axis = NA |
| and ygap.axis = NA to be passed to the x- and y- axis(.., |
| gap.axis=*) calls. |
| |
| • removeSource() now works not only for functions but also for some |
| language objects. |
| |
| • as.call(), rep.int(), rep_len() and nchar() dispatch internally. |
| |
| • is(object, class2) looks for class2 in the calling namespace |
| after looking in the namespace of class(object). |
| |
| • extendrange(.., f) with a length-2 f now extends separately to |
| the left and the right. |
| |
| • lengths() dispatches internally to S4 methods. |
| |
| • download.file() on Windows now uses URLdecode() to determine the |
| file extension, and uses binary transfer (mode = "wb") also for |
| file extension .rds. |
| |
| The help page for download.file() now contains the same |
| information on all platforms. |
| |
| • Setting C locale for collation _via_ environment variables LC_ALL |
| and LC_COLLATE and _via_ a call to Sys.setlocale() now takes |
| precedence over environment variable R_ICU_LOCALE. |
| |
| • There is a new function, nullfile(), to give the file name of the |
| null system device (e.g., /dev/null) on the current platform. |
| |
| • There are two new options, keep.parse.data and |
| keep.parse.data.pkgs, which control whether parse data are |
| included into sources when keep.source or keep.source.pkgs is |
| TRUE. By default, keep.parse.data.pkgs is now FALSE, which |
| changes previous behavior and significantly reduces space and |
| time overhead when sources are kept when installing packages. |
| |
| • In rapply(x, ..), x can also be “list-like” and of length >= |
| 2^{31}. |
| |
| • trimws() gets new optional whitespace argument, allowing more |
| extensive definitions of “space”, such as including Unicode |
| spaces (as wished in PR#17431). |
| |
| • weighted.mean() no longer coerces the weights to a double/numeric |
| vector, since sum() now handles integer overflow. This makes |
| weighted.mean() more polymorphic and endomorphic, but be aware |
| that the results are no longer guaranteed to be a vector of type |
| double. |
| |
| • When loading namespaces, S3 method registrations which overwrite |
| previous registrations are now noted by default (using |
| packageStartupMessage()). |
| |
| • compiler::cmpfile() gains a version argument, for use when the |
| output file should be saved in serialization format 2. |
| |
| • The axis labeling in the default method of pairs() may now be |
| toggled by new options horOdd and verOdd. |
| |
| • (Not Windows nor macOS.) Package tcltk now supports an |
| environment variable R_DONT_USE_TK which if set disables Tk |
| initialization. This is intended for use to circumvent errors in |
| loading the package, e.g. with recent Linux running under an |
| address sanitizer. |
| |
| • The numeric method of all.equal() gets optional arguments countEQ |
| and formatFUN. If countEQ is true, the mean error is more |
| sensible when many entries are *eq*ual. |
| |
| • outer(x,y, FUN = "*") is more efficient using tcrossprod(u,v) |
| instead of u %*% t(v). |
| |
| • vcov(<mlm>) is more efficient via new optional arguments in |
| summary.mlm(). |
| |
| • The default method of summary() gets an option to choose the |
| _kind_ of quantile()s to use; wish of PR#17438. |
| |
| • Fitting multiple linear models _via_ lm() does work with _matrix_ |
| offsets, as suggested in PR#17407. |
| |
| • The new functions mem.maxVSize() and mem.maxMSize() allow the |
| maximal size of the vector heap and the maximal number of nodes |
| allowed in the current R process to be queried and set. |
| |
| • news() gains support for NEWS.md files. |
| |
| • An effort has been started to have our reference manuals, i.e., |
| all help pages. show platform-independent information (rather |
| than Windows or Unix-alike specifics visible only on that |
| platform). Consequently, the Windows version of X11() / x11() |
| got identical formal arguments to the Unix one. |
| |
| • sessionInfo()$running has been factored out in a new variable |
| osVersion. |
| |
| • slice.index() now also works for multi-dimensional margins. |
| |
| • untar() used with an external tar command assumes this supports |
| decompression including xz and automagically detecting the |
| compression type. This has been true of all mainstream |
| implementations since 2009 (for GNU tar, since version 1.22): |
| older implementations are still supported _via_ the new argument |
| support_old_tars whose default is controlled by environment |
| variable R_SUPPORT_OLD_TARS. (It looks like NetBSD and OpenBSD |
| have ‘older’ tar commands for this purpose.) |
| |
| • The new function asplit() allow splitting an array or matrix by |
| its margins. |
| |
| • New functions errorCondition() and warningCondition() provide a |
| convenient way to create structured error and warning objects. |
| |
| .Deprecated() now signals a warning of class "deprecatedWarning", |
| and .Defunct() now signals an error of class "defunctError". |
| |
| • Many ‘package not found’ errors are now signaled as errors of |
| class "packageNotFoundError". |
| |
| • As an experimental feature, when loadNamespace() fails because |
| the requested package is not available the error is initially |
| signaled with a retry_loadNamespace restart available. This |
| allows a calling handler to try to install the package and |
| continue. |
| |
| • S3method() directives in NAMESPACE can now also be used to |
| perform _delayed_ S3 method registration. |
| |
| • Experimentally, setting environment variable |
| _R_CHECK_LENGTH_1_LOGIC2_ will lead to warnings (or errors if the |
| variable is set to a ‘true’ value) when && or || encounter and |
| use arguments of length more than one. |
| |
| • Added "lines" and "chars" coordinate systems to grconvertX() and |
| grconvertY(). |
| |
| • getOption() is more efficient notably for the rare case when |
| called with two arguments, from several contributors in PR#17394. |
| |
| • In .col(dim) and .row(dim), dim now may also be an integer-valued |
| "double". |
| |
| • sQuote() and dQuote() get an explicit q argument with obvious |
| default instead of using getOption("fancyQuotes") implicitly and |
| unconditionally. |
| |
| • unzip() can list archives with comments and with spaces in file |
| names even using an external unzip command. |
| |
| • Command line completion has a new setting rc.settings(dots = |
| FALSE) to remove ... from the list of possible function |
| arguments. |
| |
| • library() no longer checks packages with compiled code match |
| R.version$platform. loadNamespace() never has, and increasingly |
| the ‘canonical name’ does not reflect the important |
| characteristics of compiled code. |
| |
| • The primitive functions drop() and unclass() now avoid |
| duplicating their data for atomic vectors that are large enough, |
| by returning ALTREP wrapper objects with adjusted attributes. |
| R-level assignments to change attributes will also use wrapper |
| objects to avoid duplicating data for larger atomic vectors. R |
| functions like structure() and unname() will therefore not |
| duplicate data in these settings. Generic vectors as produced by |
| list() are not yet covered by this optimization but may be in due |
| course. |
| |
| • In formals(), envir becomes an optional argument instead of being |
| hardwired. |
| |
| • Instead of signalling an error for an invalid S4 object x, str(x) |
| now gives a warning and subsequently still shows most parts of x, |
| e.g., when slots are missing. |
| |
| • gamma(x) and lgamma(x) no longer warn when correctly returning |
| Inf or underflowing to zero. This helps maximum likelihood and |
| similar computations. |
| |
| • convertColor() is now vectorized, so a lot faster for converting |
| many colours at once. The new argument vectorized to |
| colorConverter() ensures that non-vectorized colour converters |
| still work. (Thanks to Brodie Gaslam.) |
| |
| • download.file() and url() get new argument headers for custom |
| HTTP headers, e.g., allowing to perform basic http |
| authentication, thanks to a patch contributed by Gábor Csárdi. |
| |
| • File-based connection functions file(), gzfile(), bzfile() and |
| xzfile() now signal an error when used on a directory. |
| |
| • For approx(), splinefun() _etc_, a new setting ties = |
| c("ordered", <fun>) allows skipping the sorting and still treat |
| ties. |
| |
| • format(x) gives a more user friendly error message in the case |
| where no method is defined. A minimal method is provided in |
| format.default(x) when isS4(x) is true. |
| |
| • which(x) now also works when x is a long vector, thanks to |
| Suharto Anggono's PR#17201. *NB*: this may return a double |
| result, breaking the previous guarantee of an integer result. |
| |
| • seq.default() is more careful to return an integer (as opposed to |
| double) result when its arguments are large and/or classed |
| objects; see comment #9 of Suharto Anggono's PR#17497. |
| |
| • The plot() method for lm and glm fits, plot.lm(), gains a new |
| option iter.smooth with a default of 0 for binomial fits, no |
| longer down-weighting when smoothing the residuals. |
| |
| • zip() passes its list of files _via_ standard input to the |
| external command when too long for the command line (on some |
| platforms). |
| |
| • data() gains an overwrite argument. |
| |
| • t.test() now also returns the standard error (in list component |
| stderr). |
| |
| • model.matrix(*, contrasts.arg = CC) now warns about invalid |
| contrasts.args. |
| |
| • Performance of substr() and substring() has been improved. |
| |
| • stopifnot() has been simplified thanks to Suharto Anggono's |
| proposals to become considerably faster for cheap expressions. |
| |
| • The default ‘user agent’ has been changed when accessing http:// |
| and https:// sites using libcurl. (A site was found which caused |
| libcurl to infinite-loop with the previous default.) |
| |
| • sessionInfo() now also contains RNGkind() and prints it when it |
| differs from the default; based on a proposal and patch by Gabe |
| Becker in PR#17535. Also, RNGversion(getRversion()) works |
| directly. |
| |
| • library() and require() now allow more control over handling |
| search path conflicts when packages are attached. The policy is |
| controlled by the new conflicts.policy option. |
| |
| • barplot() gets a formula method, thanks to a patch proposal by |
| Arni Magnusson in PR#17521. |
| |
| • pmax() and pmin(x) now also work for long vectors, thanks to |
| Suharto Anggono's PR#17533. |
| |
| • bxp() now warns when omitting duplicated arguments. |
| |
| • New hcl.colors() function to provide wide range of HCL-based |
| colour palettes with much better perceptual properties than the |
| existing RGB/HSV-based palettes like rainbow(). |
| |
| Also a new hcl.pals() function to list available palette names |
| for hcl.colors(). |
| |
| Contributed by Achim Zeileis. |
| |
| • The default colours for image() and filled.contour() are now |
| based on hcl.colors(). |
| |
| • The palette-generating functions rainbow(), gray.colors(), etc. |
| get a new rev argument to facilitate reversing the order of |
| colors. |
| |
| • New str2lang() and str2expression() as streamlined versions of |
| parse(text=., keep.source=FALSE) allow to abstract typical call |
| constructions, e.g., in formula manipulations. (Somewhat |
| experimental) |
| |
| • Add update_PACKAGES() for incrementally updating a package |
| repository index, instead of rebuilding the index from scratch. |
| Thanks to Gabe Becker in PR#17544 for the patch, based on part of |
| his switchr package. |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • The options selected for the C++ compiler default to the C++11 |
| standard if supported, otherwise to the C++98 standard. |
| |
| • Visibility macros such as C_VISIBILITY can now be user-set |
| (including to empty), e.g. in config.site. |
| |
| • Macro FCLIBS, which has sometimes been needed on Solaris, has |
| been renamed to FCLIBS_XTRA. |
| |
| • Macro F77 is always set to the value of FC, so the latter should |
| be set to user-select the Fortran compiler for both fixed-form |
| and free-form Fortran. In particular, gfortran is now the first |
| choice for F77, not f95. |
| |
| Macros FFLAGS and FCFLAGS remain distinct to allow for a compiler |
| which needs a flag to select free- or fixed-form Fortran (most |
| use the source-file extension to choose: .f is fixed-form and |
| .f90 and .f95 are free-form). |
| |
| If only one of them is set, its value is used for both. |
| |
| • The special-casing of CFLAGS, CXXFLAGS and FFLAGS for Intel |
| compilers on Linux has been removed: we do not have recent |
| experience but the generic defaults now chosen are the same as |
| those previously special-cased for x86_64. |
| |
| If necessary, override the defaults on the configure command line |
| or in file config.site. |
| |
| • Long-untested configure support for HP-UX and very old versions |
| of Linux has been removed. |
| |
| • configure --with-blas (without specifying a value) includes |
| OpenBLAS in its search (before ATLAS and a generic BLAS). This |
| follows recent versions of the ax_blas autoconf macro. |
| |
| • The configure macro MAKEINFO has been updated to TEXI2ANY. |
| |
| • Support for make install-strip has been enhanced. |
| |
| PACKAGE INSTALLATION: |
| |
| • Source package installation is by default ‘staged’: the package |
| is installed into a temporary location under the final library |
| directory and moved into place once the installation is complete. |
| The benefit is that partially-installed packages are hidden from |
| other R sessions. |
| |
| The overall default is set by environment variable |
| R_INSTALL_STAGED. R CMD INSTALL has new options --staged-install |
| and --no-staged-install, and packages can use the StagedInstall |
| field in their DESCRIPTION file to opt out. (That opt-out is a |
| temporary measure which may be withdrawn in future.) |
| |
| Staged installation requires either --pkglock or --lock, one of |
| which is used by default. |
| |
| • The interpretation of source code with extension .f is changing. |
| Previously this denoted FORTRAN 77 code, but current compilers no |
| longer have a FORTRAN 77 mode and interpret it as ‘fixed-form’ |
| Fortran 90 (or later where supported) code. Extensions .f90 and |
| .f95 continue to indicate ‘free-form’ Fortran code. |
| |
| Legal FORTRAN 77 code is also legal fixed-form Fortran 9x; |
| however this change legitimizes the use of later features, in |
| particular to replace features marked ‘obsolescent’ in Fortran 90 |
| and ‘deleted’ in Fortran 2018 which gfortran 8.x and later warn |
| about. |
| |
| • Packages containing files in the src directory with extensions |
| .f90 or .f95 are now linked using the C or C++ compiler rather |
| than the Fortran 9x compiler. This is consistent with fixed-form |
| Fortran code and allows mixing of C++ and free-form Fortran on |
| most platforms. |
| |
| Consequentially, a package which includes free-form Fortran 9x |
| code which uses OpenMP should include SHLIB_OPENMP_CFLAGS (or the |
| CXXFLAGS version if they also include C++ code) in PKG_LIBS |
| rather than SHLIB_OPENMP_FCFLAGS - fortunately on almost all |
| current platforms they are the same flag. |
| |
| • Macro PKG_FFLAGS will be used for the compilation of both |
| fixed-form and free-form Fortran code unless PKG_FCFLAGS is also |
| set (in src/Makevars or src/Makevars.win). |
| |
| • The make macro F_VISIBILITY is now preferred for both fixed-form |
| and free-form Fortran, for use in src/Makevars and similar. |
| |
| • R CMD INSTALL gains a new option --strip which (where supported) |
| strips installed shared object(s): this can also be achieved by |
| setting the environment variable _R_SHLIB_STRIP_ to a true value. |
| |
| The new option --strip-lib attempts stripping of static and |
| shared libraries installed under lib. |
| |
| These are most useful on platforms using GNU binutils (such as |
| Linux) and compiling with -g flags. |
| |
| • There is more support for installing UTF-8-encoded packages in a |
| strict Latin-1 locale (and probably for other Latin locales): |
| non-ASCII comments in R code (and NAMESPACE files) are worked |
| around better. |
| |
| UTILITIES: |
| |
| • R CMD check now optionally checks makefiles for correct and |
| portable use of the SHLIB_OPENMP_*FLAGS macros. |
| |
| • R CMD check now evaluates \Sexpr{} expressions (including those |
| in macros) before checking the contents of Rd files and so |
| detects issues both in evaluating the expressions and in the |
| expanded contents. |
| |
| • R CMD check now lists missing packages separated by commas and |
| with regular quotes such as to be useful as argument in calling |
| install.packages(c(..)); from a suggestion by Marcel Ramos. |
| |
| • tools::Rd2latex() now uses UTF-8 as its default output encoding. |
| |
| • R CMD check now checks line endings of files with extension .hpp |
| and those under inst/include. The check now includes that a |
| non-empty file is terminated with a newline. |
| |
| R CMD build will correct line endings in such files. |
| |
| • R CMD check now tries re-building all vignettes rather than |
| stopping at the first error: whilst doing so it adds ‘bookmarks’ |
| to the log. By default (see the ‘R Internals’ manual) it |
| re-builds each vignette in a separate process. |
| |
| It now checks for duplicated vignette titles (also known as |
| ‘index entries’): they are used as hyperlinks on CRAN package |
| pages and so do need to be unique. |
| |
| • R CMD check has more comprehensive checks on the data directory |
| and the functioning of data() in a package. |
| |
| • R CMD check now checks autoconf-generated configure files have |
| their corresponding source files, including optionally attempting |
| to regenerate them on platforms with autoreconf. |
| |
| • R CMD build has a new option --compression to select the |
| compression used for the tarball. |
| |
| • R CMD build now removes src/*.mod files on all platforms. |
| |
| C-LEVEL FACILITIES: |
| |
| • New pointer protection C functions R_PreserveInMSet and |
| R_ReleaseFromMSet have been introduced to replace UNPROTECT_PTR, |
| which is not safe to mix with UNPROTECT (and with |
| PROTECT_WITH_INDEX). Intended for use in parsers only. |
| |
| • NAMEDMAX has been raised to 7 to allow further protection of |
| intermediate results from (usually ill-advised) assignments in |
| arguments to BUILTIN functions. Properly written package code |
| should not be affected. |
| |
| • R_unif_index is now considered to be part of the C API. |
| |
| • R_GetCurrentEnv() allows C code to retrieve the current |
| environment. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • Argument compressed of untar() is deprecated - it is only used |
| for external tar commands which increasingly for extraction |
| auto-detect compression and ignore their zjJ flags. |
| |
| • var(f) and hence sd(f) now give an error for factor arguments; |
| they gave a deprecation warning since R 3.2.3, PR#16564. |
| |
| • Package tools' vignetteDepends() has been deprecated (it called a |
| function deprecated since Feb 2016), being partly replaced by |
| newly exported vignetteInfo(). |
| |
| • The f77_f2c script has been removed: it no longer sufficed to |
| compile the .f files in R. |
| |
| • The deprecated legacy support of make macros such as CXX1X has |
| been removed: use the CXX11 forms instead. |
| |
| • Make macro F77_VISIBILITY is deprecated in favour of |
| F_VISIBILITY. |
| |
| • Make macros F77, FCPIFCPLAGS and SHLIB_OPENMP_FCFLAGS are |
| deprecated in favour of FC, FPICFLAGS and SHLIB_OPENMP_FFLAGS |
| respectively. |
| |
| • $.data.frame had become an expensive version of the default |
| method, so has been removed. (Thanks to Radford Neal for picking |
| this up and to Duncan Murdoch for providing a patch.) |
| |
| BUG FIXES: |
| |
| • replayPlot(r) now also works in the same R session when r has |
| been “reproduced” from serialization, typically after saving to |
| and reading from an RDS file. |
| |
| • substr() and substring() now signal an error when the input is |
| invalid UTF-8. |
| |
| • file.copy() now works also when its argument to is of length |
| greater than one. |
| |
| • mantelhaen.test() no longer suffers from integer overflow in |
| largish cases, thanks to Ben Bolker's PR#17383. |
| |
| • Calling setGeneric("foo") in a package no longer fails when the |
| enclosing environment of the implicit generic foo() is |
| .GlobalEnv. |
| |
| • untar(file("<some>.tar.gz"), *) now gives a better error message, |
| suggesting to use gzfile() instead. |
| |
| • Method dispatch uses more relevant environments when looking up |
| class definitions. |
| |
| • The documentation for identify() incorrectly claimed that the |
| indices of identified points were returned in the order that the |
| points were selected. identify() now has a new argument order to |
| allow the return value to include the order in which points were |
| identified; the documentation has been updated. Reported by |
| Richard Rowe and Samuel Granjeaud. |
| |
| • order(...., decreasing=c(TRUE, FALSE)) could fail in some cases. |
| Reported from StackOverflow via Karl Nordström. |
| |
| • User macros in Rd files now accept empty and multi-line |
| arguments. |
| |
| • Changes in print.*(), thanks to Lionel Henry's patches in |
| PR#17398: |
| |
| • Printing lists, pairlists or attributes containing calls with |
| S3 class no longer evaluate those. |
| |
| • Printing S4 objects within lists and pairlists dispatches |
| with show() rather than print(), as with auto-printing. |
| |
| • The indexing tags (names or [[<n>]]) of recursive data |
| structures are now printed correctly in complex cases. |
| |
| • Arguments supplied to print() are now properly forwarded to |
| methods when printing lists, pairlists or attributes |
| containing S3 objects. |
| |
| • The print parameters are now preserved when printing S3 |
| objects or deparsing symbols and calls. Previously, printing |
| lists containing S3 objects or expressions would reset these |
| parameters. |
| |
| • Printing lists, pairlists or attributes containing functions |
| now uses srcref attributes if present. |
| |
| • Calling install.packages() with a length zero pkgs argument now |
| is a no-op (PR#17422). |
| |
| • unlist(x) now returns a correct factor when x is a nested list |
| with factor leaves, fixing PR#12572 and PR#17419. |
| |
| • The documentation help(family) gives more details about the aic |
| component, thanks to Ben Bolker's prompting. |
| |
| • The documentation for attributes and `attributes<-` now gives x |
| as name of the first and main argument which the implementation |
| has been requiring, fixing PR#17434. For consistency, the first |
| argument name is also changed from obj to x for |
| `mostattributes<-`. |
| |
| • strwidth() now uses par("font") as default font face (PR#17352). |
| |
| • plot(<table>, log="x") no longer warns about log. |
| |
| • The print() method for "htest" objects now formats the test |
| statistic and parameter directly and hence no longer rounds to |
| units _before_ the decimal point. Consequently, printing of |
| t.test() results with a small number of digits now shows |
| non-large df's to the full precision (PR#17444). |
| |
| • kruskal.test() and fligner.test() no longer erroneously insist on |
| numeric g group arguments (PR#16719). |
| |
| • Printing a news db via the browser now does a much better job |
| (PR#17433). |
| |
| • print.aov() missed column names in the multivariate case due to |
| misspelling (reported by Chris Andrews). |
| |
| • axis() now creates valid at locations also for small subnormal |
| number ranges in log scale plots. |
| |
| • format.POSIXlt() now also recycles the zone and gmtoff list |
| components to full length when needed, and its internal C code |
| detects have_zone in more cases. In some cases, this changes its |
| output to become compatible with format.POSIXct(). |
| |
| • On Windows, detectCores() in package parallel now detects |
| processors in all processor groups, not just the group R is |
| running in (impacts particularly systems with more than 64 |
| logical processors). Reported by Arunkumar Srinivasan. |
| |
| • On Windows, socketSelect() would hang with more than 64 sockets, |
| and hence parallel::clusterApplyLB() would hang with more than 64 |
| workers. Reported by Arunkumar Srinivasan. |
| |
| • as(1L, "double") now does coerce (PR#17457). |
| |
| • lm.influence(), influence.measures(), rstudent() etc now work |
| (more) correctly for multivariate models ("mlm"), thanks to |
| (anonymous) stackoverflow remarks. |
| |
| • sample.int(2.9, *, replace=TRUE) again behaves as documented and |
| as in R < 3.0.0, namely identically to sample.int(2, ..). |
| |
| • Fixes to convertColor() for chromatic adaptation; thanks to |
| Brodie Gaslam PR#17473. |
| |
| • Using \Sexpr[stage=install]{..} to create an Rd section no longer |
| gives a warning in R CMD check; problem originally posted by |
| Gábor Csárdi, then reported as PR#17479 with a partial patch by |
| Duncan Murdoch. |
| |
| • Parse data now include a special node for equal assignment. |
| |
| • split.default() no longer relies on [[<-(), so it behaves as |
| expected when splitting an object by a factor with the empty |
| string as one of its levels. Thanks to Brad Friedman for the |
| report. |
| |
| • Line numbers in messages about .Rd files are now more reliable, |
| thanks to a patch from Duncan Murdoch. |
| |
| • In the numeric method for all.equal(), a numeric scale argument |
| is now checked to be positive and allowed to be of length > 1. |
| (The latter worked originally and with a warning in recent |
| years). |
| |
| • Deferred string conversions now record the OutDec option setting |
| when not equal to the default. Reported by Michael Sannella. |
| |
| • When y is numeric and f a factor, plot(y ~ f) nicely uses "y" and |
| "f" as y- and x-labels. The more direct boxplot(y ~ f) now does |
| too. The new argument ann = FALSE may be used to suppress these. |
| |
| • Subassignment to no/empty rows of a data frame is more consistent |
| and typically a no-op in all cases instead of sometimes an error; |
| part of Emil Bode's PR#17483. |
| |
| • Calls like formatC(*, zero.print = "< 0.001") no longer give an |
| error and are further improved via new optional argument |
| replace.zero. Reported by David Hugh-Jones. |
| |
| • methods::formalArgs("<fn>") now finds the same function as |
| formals("<fn>"), fixing Emil Bode's PR#17499. |
| |
| • The methods package better handles duplicated class names across |
| packages. |
| |
| • The default method of seq() now avoids integer overflow, thanks |
| to the report and "cumsum" patch of Suharto Anggono's PR#17497. |
| |
| • sub() no longer loses encodings for non-ASCII replacements |
| (PR#17509). |
| |
| • Fix for rotated raster image on X11 device. (Partial fix for |
| PR#17148; thanks to Mikko Korpela). |
| |
| • formula(model.frame(frml, ..)) now returns frml in all cases, |
| thanks to Bill Dunlap. The previous behavior is available as |
| DF2formula(<model.frame>). |
| |
| • ar.ols() also returns scalar var.pred in univariate case |
| (PR#17517). |
| |
| • normalizePath() now treats NA path as non-existent and normalizes |
| it to NA. file.access() treats NA file name as non-existent. |
| file.edit() and connection functions such as file() now treat NA |
| file names as errors. |
| |
| • The internal regularize.values() auxiliary of approx(), |
| splinefun() etc now warns again when there are ties and the |
| caller did not specify ties. Further, it no longer duplicates x |
| and y unnecessarily when x is already sorted (PR#17515). |
| |
| • strtoi("", base) now gives NA on all platforms, following its |
| documentation. Reported by Michael Chirico. |
| |
| • In the definition of an S4 class, prototype elements are checked |
| against the slots of the class, with giving a prototype for an |
| undefined slot now being an error. (Reported by Bill Dunlap.) |
| |
| • From setClassUnion(), if environment variable |
| _R_METHODS_SHOW_CHECKSUBCLASSES is set to true, the internal |
| .checkSubclasses() utility prints debugging info to see where it |
| is used. |
| |
| • max.col(m) with an m of zero columns now returns integer NA |
| (instead of 1). |
| |
| • axTicks() no longer returns small “almost zero” numbers (in |
| exponential format) instead of zero, fixing Ilario Gelmetti's |
| PR#17534. |
| |
| • isSymmetric(matrix(0, dimnames=list("A","b"))) is FALSE again, as |
| always documented. |
| |
| • The cairo_pdf graphics device (and other Cairo-based devices) now |
| clip correctly to the right and bottom border. |
| |
| There was an off-by-one-pixel bug, reported by Lee Kelvin. |
| |
| • as.roman(3) <= 2:4 and all other comparisons now work, as do |
| group "Summary" function calls such as max(as.roman(sample(20))) |
| and as.roman(NA). (Partly reported by Bill Dunlap in PR#17542.) |
| |
| • reformulate("x", response = "sin(y)") no longer produces extra |
| back quotes, PR#17359, and gains new optional argument env. |
| |
| • When reading console input from stdin with re-encoding (R |
| --encoding=enc < input) the code on a Unix-alike now ensures that |
| each converted input line is terminated with a newline even if |
| re-encoding fails. |
| |
| • as.matrix.data.frame() now produces better strings from logicals, |
| thanks to PR#17548 from Gabe Becker. |
| |
| • The S4 generic signature of rowSums(), rowMeans(), colSums() and |
| colMeans() is restricted to "x". |
| |
| • match(x, tab) now works for long _character_ vectors x, thanks to |
| PR#17552 by Andreas Kersting. |
| |
| • Class unions are unloaded when their namespace is unloaded |
| (PR#17531, adapted from a patch by Brodie Gaslam). |
| |
| • selectMethod() is robust to ANY-truncation of method signatures |
| (thanks to Herve Pages for the report). |
| |
| CHANGES IN R 3.5.3: |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • Detection of flags for C++98/11/14/17 has been improved: in |
| particular if CXX??STD is set, it is tried first with no |
| additional flags. |
| |
| PACKAGE INSTALLATION: |
| |
| • New macro F_VISIBILITY as an alternative to F77_VISIBILITY. This |
| will become the preferred form in R 3.6.0. |
| |
| BUG FIXES: |
| |
| • writeLines(readLines(fnam), fnam) now works as expected, thanks |
| to Peter Meissner's PR#17528. |
| |
| • setClassUnion() no longer warns, but uses message() for now, when |
| encountering “non local” subclasses of class members. |
| |
| • stopifnot(exprs = T) no longer fails. |
| |
| CHANGES IN R 3.5.2: |
| |
| PACKAGE INSTALLATION: |
| |
| • New macro CXX_VISIBILITY analogous to C_VISIBILITY (which several |
| packages have been misusing for C++ code) for the default C++ |
| compiler (but not necessarily one used for non-default C++ |
| dialects like C++14). |
| |
| TESTING: |
| |
| • The random number generator tests in tests/p-r-random-tests.R no |
| longer fail occasionally as they now randomly sample from |
| “certified” random seeds. |
| |
| BUG FIXES: |
| |
| • The "glm" method of drop1() miscalculated the score test |
| (test="Rao") when the model contained an offset. |
| |
| • Linear multiple empty models such as lm(y ~ 0) now have a |
| correctly dimensioned empty coefficient matrix; reported by Brett |
| Presnell. |
| |
| • vcov(<empty mlm>) and hence confint() now work (via a consistency |
| change in summary.lm()). |
| |
| • confint(<multiple lm()>) now works correctly; reported on R-devel |
| by Steven Pav. |
| |
| • quade.test() now also works correctly when its arguments are not |
| yet sorted along groups, fixing PR#15842. |
| |
| • Installation on a Unix-alike tries harder to link to the pthread |
| library where required (rather than relying on OpenMP to provide |
| it: configuring with --disable-openmp was failing on some Linux |
| systems). |
| |
| • The data.frame method for print(x) is fast now also for large |
| data frames x and got an optional argument max, thanks to |
| suggestions by Juan Telleria. |
| |
| • hist() no longer integer overflows in very rare cases, fixing |
| PR#17450. |
| |
| • untar() ignored a character compressed argument: however many |
| external tar programs ignore the flags which should have been set |
| and automagically choose the compression type, and if appropriate |
| gzip or bzip2 compression would have been chosen from the magic |
| header of the tarball. |
| |
| • zapsmall(x) now works for more “number-like” objects. |
| |
| • The tools-internal function called from R CMD INSTALL now gets a |
| warnOption = 1 argument and only sets options(warn = warnOption) |
| when that increases the warning level (PR#17453). |
| |
| • Analogously, the tools-internal function called from R CMD check |
| gets a warnOption = 1 argument and uses the larger of that and |
| getOption("warn"), also allowing to be run with increased warning |
| level. |
| |
| • Parse data now have deterministic parent nodes (PR#16041). |
| |
| • Calling match() with length one x and POSIXlt table gave a |
| segfault (PR#17459). |
| |
| • Fork clusters could hang due to a race condition in cluster |
| initialization (makeCluster()). |
| |
| • nextn(n) now also works for larger n and no longer loops |
| infinitely for e.g, n <- 214e7. |
| |
| • cooks.distance() and rstandard() now work correctly for multiple |
| linear models ("mlm"). |
| |
| • polym() and corresponding lm() prediction now also work for a |
| boundary "vector" case fixing PR#17474, reported by Alexandre |
| Courtiol. |
| |
| • With a very large number of variables terms() could segfault |
| (PR#17480). |
| |
| • cut(rep(0, 7)) now works, thanks to Joey Reid and Benjamin Tyner |
| (PR#16802). |
| |
| • download.file(*, method = "curl", cacheOK = FALSE) should work |
| now on Windows, thanks to Kevin Ushey's patch in PR#17323. |
| |
| • duplicated(<dataframe with 'f'>) now works, too, thanks to |
| Andreas Kersting's PR#17485; ditto for anyDuplicated(). |
| |
| • legend(*, cex = 1:2) now works less badly. |
| |
| • The print() method for POSIXct and POSIXlt now correctly obeys |
| getOption("max.print"), fixing a long-standing typo, and it also |
| gets a corresponding optional max argument. |
| |
| • Unserialization of raw vectors serialized in ASCII representation |
| now works correctly. |
| |
| • <data frame>[TRUE, <new>] <- list(c1, c2) now works correctly, |
| thanks to Suharto Anggono's PR#15362 and Emil Bode's patch in |
| PR#17504. |
| |
| • seq.int(*, by=by, length=n) no longer wrongly “drops fractional |
| parts” when by is integer, thanks to Suharto Anggono's report |
| PR#17506. |
| |
| • Buffering is disabled for file() connections to non-regular files |
| (like sockets), as well as fifo() and pipe() connections. Fixes |
| PR#17470, reported by Chris Culnane. |
| |
| CHANGES IN R 3.5.1: |
| |
| BUG FIXES: |
| |
| • file("stdin") is no longer considered seekable. |
| |
| • dput() and dump() are no longer truncating when |
| options(deparse.max.lines = *) is set. |
| |
| • Calls with an S3 class are no longer evaluated when printed, |
| fixing part of PR#17398, thanks to a patch from Lionel Henry. |
| |
| • Allow file argument of Rscript to include space even when it is |
| first on the command line. |
| |
| • callNextMethod() uses the generic from the environment of the |
| calling method. Reported by Hervé Pagès with well documented |
| examples. |
| |
| • Compressed file connections are marked as blocking. |
| |
| • optim(*, lower = c(-Inf, -Inf)) no longer warns (and switches the |
| method), thanks to a suggestion by John Nash. |
| |
| • predict(fm, newdata) is now correct also for models where the |
| formula has terms such as splines::ns(..) or stats::poly(..), |
| fixing PR#17414, based on a patch from Duncan Murdoch. |
| |
| • simulate.lm(glm(*, gaussian(link = <non-default>))) has been |
| corrected, fixing PR#17415 thanks to Alex Courtiol. |
| |
| • unlist(x) no longer fails in some cases of nested empty lists. |
| Reported by Steven Nydick. |
| |
| • qr.coef(qr(<all 0, w/ colnames>)) now works. Reported by Kun |
| Ren. |
| |
| • The radix sort is robust to vectors with >1 billion elements (but |
| long vectors are still unsupported). Thanks to Matt Dowle for the |
| fix. |
| |
| • Terminal connections (e.g., stdin) are no longer buffered. Fixes |
| PR#17432. |
| |
| • deparse(x), dput(x) and dump() now respect c()'s argument names |
| recursive and use.names, e.g., for x <- setNames(0, "recursive"), |
| thanks to Suharto Anggono's PR#17427. |
| |
| • Unbuffered connections now work with encoding conversion. |
| Reported by Stephen Berman. |
| |
| • .Renviron on Windows with Rgui is again by default searched for |
| in user documents directory when invoked _via_ the launcher icon. |
| Reported by Jeroen Ooms. |
| |
| • printCoefmat() now also works with explicit right=TRUE. |
| |
| • print.noquote() now also works with explicit quote=FALSE. |
| |
| • The default method for pairs(.., horInd=*, verInd=*) now gets the |
| correct order, thanks to reports by Chris Andrews and Gerrit |
| Eichner. Additionally, when horInd or verInd contain only a |
| subset of variables, all the axes are labeled correctly now. |
| |
| • agrep("..|..", .., fixed=FALSE) now matches when it should, |
| thanks to a reminder by Andreas Kolter. |
| |
| • str(ch) now works for more invalid multibyte strings. |
| |
| CHANGES IN R 3.5.0: |
| |
| SIGNIFICANT USER-VISIBLE CHANGES: |
| |
| • All packages are by default byte-compiled on installation. This |
| makes the installed packages larger (usually marginally so) and |
| may affect the format of messages and tracebacks (which often |
| exclude .Call and similar). |
| |
| NEW FEATURES: |
| |
| • factor() now uses order() to sort its levels, rather than |
| sort.list(). This allows factor() to support custom vector-like |
| objects if methods for the appropriate generics are defined. It |
| has the side effect of making factor() succeed on empty or |
| length-one non-atomic vector(-like) types (e.g., "list"), where |
| it failed before. |
| |
| • diag() gets an optional names argument: this may require updates |
| to packages defining S4 methods for it. |
| |
| • chooseCRANmirror() and chooseBioCmirror() no longer have a |
| useHTTPS argument, not needed now all R builds support https:// |
| downloads. |
| |
| • New summary() method for warnings() with a (somewhat |
| experimental) print() method. |
| |
| • (methods package.) .self is now automatically registered as a |
| global variable when registering a reference class method. |
| |
| • tempdir(check = TRUE) recreates the tempdir() directory if it is |
| no longer valid (e.g. because some other process has cleaned up |
| the /tmp directory). |
| |
| • New askYesNo() function and "askYesNo" option to ask the user |
| binary response questions in a customizable but consistent way. |
| (Suggestion of PR#17242.) |
| |
| • New low level utilities ...elt(n) and ...length() for working |
| with ... parts inside a function. |
| |
| • isTRUE() is more tolerant and now true in |
| |
| x <- rlnorm(99) |
| isTRUE(median(x) == quantile(x)["50%"]) |
| |
| New function isFALSE() defined analogously to isTRUE(). |
| |
| • The default symbol table size has been increased from 4119 to |
| 49157; this may improve the performance of symbol resolution when |
| many packages are loaded. (Suggested by Jim Hester.) |
| |
| • line() gets a new option iter = 1. |
| |
| • Reading from connections in text mode is buffered, significantly |
| improving the performance of readLines(), as well as scan() and |
| read.table(), at least when specifying colClasses. |
| |
| • order() is smarter about picking a default sort method when its |
| arguments are objects. |
| |
| • available.packages() has two new arguments which control if the |
| values from the per-session repository cache are used (default |
| true, as before) and if so how old cached values can be used |
| (default one hour). |
| |
| These arguments can be passed from install.packages(), |
| update.packages() and functions calling that: to enable this |
| available.packages(), packageStatus() and download.file() gain a |
| ... argument. |
| |
| • packageStatus()'s upgrade() method no longer ignores its ... |
| argument but passes it to install.packages(). |
| |
| • installed.packages() gains a ... argument to allow arguments |
| (including noCache) to be passed from new.packages(), |
| old.packages(), update.packages() and packageStatus(). |
| |
| • factor(x, levels, labels) now allows duplicated labels (not |
| duplicated levels!). Hence you can map different values of x to |
| the same level directly. |
| |
| • Attempting to use names<-() on an S4 derivative of a basic type |
| no longer emits a warning. |
| |
| • The list method of within() gains an option keepAttrs = FALSE for |
| some speed-up. |
| |
| • system() and system2() now allow the specification of a maximum |
| elapsed time (‘timeout’). |
| |
| • debug() supports debugging of methods on any object of S4 class |
| "genericFunction", including group generics. |
| |
| • Attempting to increase the length of a variable containing NULL |
| using length()<- still has no effect on the target variable, but |
| now triggers a warning. |
| |
| • type.convert() becomes a generic function, with additional |
| methods that operate recursively over list and data.frame |
| objects. Courtesy of Arni Magnusson (PR#17269). |
| |
| • lower.tri(x) and upper.tri(x) only needing dim(x) now work via |
| new functions .row() and .col(), so no longer call as.matrix() by |
| default in order to work efficiently for all kind of matrix-like |
| objects. |
| |
| • print() methods for "xgettext" and "xngettext" now use |
| encodeString() which keeps, e.g. "\n", visible. (Wish of |
| PR#17298.) |
| |
| • package.skeleton() gains an optional encoding argument. |
| |
| • approx(), spline(), splinefun() and approxfun() also work for |
| long vectors. |
| |
| • deparse() and dump() are more useful for S4 objects, dput() now |
| using the same internal C code instead of its previous imperfect |
| workaround R code. S4 objects now typically deparse perfectly, |
| i.e., can be recreated identically from deparsed code. |
| |
| dput(), deparse() and dump() now print the names() information |
| only once, using the more readable (tag = value) syntax, notably |
| for list()s, i.e., including data frames. |
| |
| These functions gain a new control option "niceNames" (see |
| .deparseOpts()), which when set (as by default) also uses the |
| (tag = value) syntax for atomic vectors. On the other hand, |
| without deparse options "showAttributes" and "niceNames", names |
| are no longer shown also for lists. as.character(list( c (one = |
| 1))) now includes the name, as as.character(list(list(one = 1))) |
| has always done. |
| |
| m:n now also deparses nicely when m > n. |
| |
| The "quoteExpressions" option, also part of "all", no longer |
| quote()s formulas as that may not re-parse identically. |
| (PR#17378) |
| |
| • If the option setWidthOnResize is set and TRUE, R run in a |
| terminal using a recent readline library will set the width |
| option when the terminal is resized. Suggested by Ralf Goertz. |
| |
| • If multiple on.exit() expressions are set using add = TRUE then |
| all expressions will now be run even if one signals an error. |
| |
| • mclapply() gets an option affinity.list which allows more |
| efficient execution with heterogeneous processors, thanks to |
| Helena Kotthaus. |
| |
| • The character methods for as.Date() and as.POSIXlt() are more |
| flexible _via_ new arguments tryFormats and optional: see their |
| help pages. |
| |
| • on.exit() gains an optional argument after with default TRUE. |
| Using after = FALSE with add = TRUE adds an exit expression |
| before any existing ones. This way the expressions are run in a |
| first-in last-out fashion. (From Lionel Henry.) |
| |
| • On Windows, file.rename() internally retries the operation in |
| case of error to attempt to recover from possible anti-virus |
| interference. |
| |
| • Command line completion on :: now also includes lazy-loaded data. |
| |
| • If the TZ environment variable is set when date-time functions |
| are first used, it is recorded as the session default and so will |
| be used rather than the default deduced from the OS if TZ is |
| subsequently unset. |
| |
| • There is now a [ method for class "DLLInfoList". |
| |
| • glm() and glm.fit get the same singular.ok = TRUE argument that |
| lm() has had forever. As a consequence, in glm(*, method = |
| <your_own>), user specified methods need to accept a singular.ok |
| argument as well. |
| |
| • aspell() gains a filter for Markdown (.md and .Rmd) files. |
| |
| • intToUtf8(multiple = FALSE) gains an argument to allow surrogate |
| pairs to be interpreted. |
| |
| • The maximum number of DLLs that can be loaded into R e.g. _via_ |
| dyn.load() has been increased up to 614 when the OS limit on the |
| number of open files allows. |
| |
| • Sys.timezone() on a Unix-alike caches the value at first use in a |
| session: _inter alia_ this means that setting TZ later in the |
| session affects only the _current_ time zone and not the _system_ |
| one. |
| |
| Sys.timezone() is now used to find the system timezone to pass to |
| the code used when R is configured with --with-internal-tzcode. |
| |
| • When tar() is used with an external command which is detected to |
| be GNU tar or libarchive tar (aka bsdtar), a different |
| command-line is generated to circumvent line-length limits in the |
| shell. |
| |
| • system(*, intern = FALSE), system2() (when not capturing output), |
| file.edit() and file.show() now issue a warning when the external |
| command cannot be executed. |
| |
| • The “default” ("lm" etc) methods of vcov() have gained new |
| optional argument complete = TRUE which makes the vcov() methods |
| more consistent with the coef() methods in the case of singular |
| designs. The former (back-compatible) behavior is given by |
| vcov(*, complete = FALSE). |
| |
| • coef() methods (for lm etc) also gain a complete = TRUE optional |
| argument for consistency with vcov(). |
| For "aov", both coef() and vcov() methods remain back-compatibly |
| consistent, using the _other_ default, complete = FALSE. |
| |
| • attach(*, pos = 1) is now an error instead of a warning. |
| |
| • New function getDefaultCluster() in package parallel to get the |
| default cluster set via setDefaultCluster(). |
| |
| • str(x) for atomic objects x now treats both cases of is.vector(x) |
| similarly, and hence much less often prints "atomic". This is a |
| slight non-back-compatible change producing typically both more |
| informative and shorter output. |
| |
| • gc() gets new argument full. |
| |
| • write.dcf() gets optional argument useBytes. |
| |
| • New, partly experimental packageDate() which tries to get a valid |
| "Date" object from a package DESCRIPTION file, thanks to |
| suggestions in PR#17324. |
| |
| • tools::resaveRdaFiles() gains a version argument, for use when |
| packages should remain compatible with earlier versions of R. |
| |
| • ar.yw(x) and hence by default ar(x) now work when x has NAs, |
| mostly thanks to a patch by Pavel Krivitsky in PR#17366. The |
| ar.yw.default()'s AIC computations have become more efficient by |
| using determinant(). |
| |
| • New warnErrList() utility (from package nlme, improved). |
| |
| • By default the (arbitrary) signs of the loadings from princomp() |
| are chosen so the first element is non-negative. |
| |
| • If --default-packages is not used, then Rscript now checks the |
| environment variable R_SCRIPT_DEFAULT_PACKAGES. If this is set, |
| then it takes precedence over R_DEFAULT_PACKAGES. If default |
| packages are not specified on the command line or by one of these |
| environment variables, then Rscript now uses the same default |
| packages as R. For now, the previous behavior of not including |
| methods can be restored by setting the environment variable |
| R_SCRIPT_LEGACY to yes. |
| |
| • When a package is found more than once, the warning from |
| find.package(*, verbose=TRUE) lists all library locations. |
| |
| • POSIXt objects can now also be rounded or truncated to month or |
| year. |
| |
| • stopifnot() can be used alternatively via new argument exprs |
| which is nicer and useful when testing several expressions in one |
| call. |
| |
| • The environment variable R_MAX_VSIZE can now be used to specify |
| the maximal vector heap size. On macOS, unless specified by this |
| environment variable, the maximal vector heap size is set to the |
| maximum of 16GB and the available physical memory. This is to |
| avoid having the R process killed when macOS over-commits memory. |
| |
| • sum(x) and sum(x1, x2, .., x<N>) with many or long logical or |
| integer vectors no longer overflows (and returns NA with a |
| warning), but returns double numbers in such cases. |
| |
| • Single components of "POSIXlt" objects can now be extracted and |
| replaced via [ indexing with 2 indices. |
| |
| • S3 method lookup now searches the namespace registry after the |
| top level environment of the calling environment. |
| |
| • Arithmetic sequences created by 1:n, seq_along, and the like now |
| use compact internal representations via the ALTREP framework. |
| Coercing integer and numeric vectors to character also now uses |
| the ALTREP framework to defer the actual conversion until first |
| use. |
| |
| • Finalizers are now run with interrupts suspended. |
| |
| • merge() gains new option no.dups and by default suffixes the |
| second of two duplicated column names, thanks to a proposal by |
| Scott Ritchie (and Gabe Becker). |
| |
| • scale.default(x, center, scale) now also allows center or scale |
| to be “numeric-alike”, i.e., such that as.numeric(.) coerces them |
| correctly. This also eliminates a wrong error message in such |
| cases. |
| |
| • par*apply and par*applyLB gain an optional argument chunk.size |
| which allows to specify the granularity of scheduling. |
| |
| • Some as.data.frame() methods, notably the matrix one, are now |
| more careful in not accepting duplicated or NA row names, and by |
| default produce unique non-NA row names. This is based on new |
| function .rowNamesDF(x, make.names = *) <- rNms where the logical |
| argument make.names allows to specify _how_ invalid row names |
| rNms are handled. .rowNamesDF() is a “workaround” compatible |
| default. |
| |
| • R has new serialization format (version 3) which supports custom |
| serialization of ALTREP framework objects. These objects can |
| still be serialized in format 2, but less efficiently. |
| Serialization format 3 also records the current native encoding |
| of unflagged strings and converts them when de-serialized in R |
| running under different native encoding. Format 3 comes with new |
| serialization magic numbers (RDA3, RDB3, RDX3). Format 3 can be |
| selected by version = 3 in save(), serialize() and saveRDS(), but |
| format 2 remains the default for all serialization and saving of |
| the workspace. Serialized data in format 3 cannot be read by |
| versions of R prior to version 3.5.0. |
| |
| • The "Date" and “date-time” classes "POSIXlt" and "POSIXct" now |
| have a working length<-() method, as wished in PR#17387. |
| |
| • optim(*, control = list(warn.1d.NelderMead = FALSE)) allows to |
| turn off the warning when applying the default "Nelder-Mead" |
| method to 1-dimensional problems. |
| |
| • matplot(.., panel.first = .) etc now work, as log becomes |
| explicit argument and ... is passed to plot() unevaluated, as |
| suggested by Sebastian Meyer in PR#17386. |
| |
| • Interrupts can be suspended while evaluating an expression using |
| suspendInterrupts. Subexpression can be evaluated with |
| interrupts enabled using allowInterrupts. These functions can be |
| used to make sure cleanup handlers cannot be interrupted. |
| |
| • R 3.5.0 includes a framework that allows packages to provide |
| alternate representations of basic R objects (ALTREP). The |
| framework is still experimental and may undergo changes in future |
| R releases as more experience is gained. For now, documentation |
| is provided in <URL: |
| https://svn.r-project.org/R/branches/ALTREP/ALTREP.html>. |
| |
| UTILITIES: |
| |
| • install.packages() for source packages now has the possibility to |
| set a ‘timeout’ (elapsed-time limit). For serial installs this |
| uses the timeout argument of system2(): for parallel installs it |
| requires the timeout utility command from GNU coreutils. |
| |
| • It is now possible to set ‘timeouts’ (elapsed-time limits) for |
| most parts of R CMD check _via_ environment variables documented |
| in the ‘R Internals’ manual. |
| |
| • The ‘BioC extra’ repository which was dropped from Bioconductor |
| 3.6 and later has been removed from setRepositories(). This |
| changes the mapping for 6-8 used by setRepositories(ind=). |
| |
| • R CMD check now also applies the settings of environment |
| variables _R_CHECK_SUGGESTS_ONLY_ and _R_CHECK_DEPENDS_ONLY_ to |
| the re-building of vignettes. |
| |
| • R CMD check with environment variable _R_CHECK_DEPENDS_ONLY_ set |
| to a true value makes test-suite-management packages available |
| and (for the time being) works around a common omission of |
| rmarkdown from the VignetteBuilder field. |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • Support for a system Java on macOS has been removed - install a |
| fairly recent Oracle Java (see ‘R Installation and |
| Administration’ §C.3.2). |
| |
| • configure works harder to set additional flags in SAFE_FFLAGS |
| only where necessary, and to use flags which have little or no |
| effect on performance. |
| |
| In rare circumstances it may be necessary to override the setting |
| of SAFE_FFLAGS. |
| |
| • C99 functions expm1, hypot, log1p and nearbyint are now required. |
| |
| • configure sets a -std flag for the C++ compiler for all supported |
| C++ standards (e.g., -std=gnu++11 for the C++11 compiler). |
| Previously this was not done in a few cases where the default |
| standard passed the tests made (e.g. clang 6.0.0 for C++11). |
| |
| C-LEVEL FACILITIES: |
| |
| • ‘Writing R Extensions’ documents macros MAYBE_REFERENCED, |
| MAYBE_SHARED and MARK_NOT_MUTABLE that should be used by package |
| C code instead NAMED or SET_NAMED. |
| |
| • The object header layout has been changed to support merging the |
| ALTREP branch. This requires re-installing packages that use |
| compiled code. |
| |
| • ‘Writing R Extensions’ now documents the R_tryCatch, |
| R_tryCatchError, and R_UnwindProtect functions. |
| |
| • NAMEDMAX has been raised to 3 to allow protection of intermediate |
| results from (usually ill-advised) assignments in arguments to |
| BUILTIN functions. Package C code using SET_NAMED may need to be |
| revised. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • Sys.timezone(location = FALSE) is defunct, and is ignored (with a |
| warning). |
| |
| • methods:::bind_activation() is defunct now; it typically has been |
| unneeded for years. |
| |
| The undocumented ‘hidden’ objects .__H__.cbind and .__H__.rbind |
| in package base are deprecated (in favour of cbind and rbind). |
| |
| • The declaration of pythag() in Rmath.h has been removed - the |
| entry point has not been provided since R 2.14.0. |
| |
| BUG FIXES: |
| |
| • printCoefmat() now also works without column names. |
| |
| • The S4 methods on Ops() for the "structure" class no longer cause |
| infinite recursion when the structure is not an S4 object. |
| |
| • nlm(f, ..) for the case where f() has a "hessian" attribute now |
| computes LL' = H + µI correctly. (PR#17249). |
| |
| • An S4 method that “rematches” to its generic and overrides the |
| default value of a generic formal argument to NULL no longer |
| drops the argument from its formals. |
| |
| • Rscript can now accept more than one argument given on the #! |
| line of a script. Previously, one could only pass a single |
| argument on the #! line in Linux. |
| |
| • Connections are now written correctly with encoding "UTF-16LE". |
| (PR#16737). |
| |
| • Evaluation of ..0 now signals an error. When ..1 is used and ... |
| is empty, the error message is more appropriate. |
| |
| • (Windows mainly.) Unicode code points which require surrogate |
| pairs in UTF-16 are now handled. All systems should properly |
| handle surrogate pairs, even those systems that do not need to |
| make use of them. (PR#16098) |
| |
| • stopifnot(e, e2, ...) now evaluates the expressions sequentially |
| and in case of an error or warning shows the relevant expression |
| instead of the full stopifnot(..) call. |
| |
| • path.expand() on Windows now accepts paths specified as |
| UTF-8-encoded character strings even if not representable in the |
| current locale. (PR#17120) |
| |
| • line(x, y) now correctly computes the medians of the left and |
| right group's x-values and in all cases reproduces straight |
| lines. |
| |
| • Extending S4 classes with slots corresponding to special |
| attributes like dim and dimnames now works. |
| |
| • Fix for legend() when fill has multiple values the first of which |
| is NA (all colours used to default to par(fg)). (PR#17288) |
| |
| • installed.packages() did not remove the cached value for a |
| library tree that had been emptied (but would not use the old |
| value, just waste time checking it). |
| |
| • The documentation for installed.packages(noCache = TRUE) |
| incorrectly claimed it would refresh the cache. |
| |
| • aggregate(<data.frame>) no longer uses spurious names in some |
| cases. (PR#17283) |
| |
| • object.size() now also works for long vectors. |
| |
| • packageDescription() tries harder to solve re-encoding issues, |
| notably seen in some Windows locales. This fixes the citation() |
| issue in PR#17291. |
| |
| • poly(<matrix>, 3) now works, thanks to prompting by Marc |
| Schwartz. |
| |
| • readLines() no longer segfaults on very large files with embedded |
| '\0' (aka ‘nul’) characters. (PR#17311) |
| |
| • ns() (package splines) now also works for a single observation. |
| interpSpline() gives a more friendly error message when the |
| number of points is less than four. |
| |
| • dist(x, method = "canberra") now uses the correct definition; the |
| result may only differ when x contains values of differing signs, |
| e.g. not for 0-1 data. |
| |
| • methods:::cbind() and methods:::rbind() avoid deep recursion, |
| thanks to Suharto Anggono via PR#17300. |
| |
| • Arithmetic with zero-column data frames now works more |
| consistently; issue raised by Bill Dunlap. |
| |
| Arithmetic with data frames gives a data frame for ^ (which |
| previously gave a numeric matrix). |
| |
| • pretty(x, n) for large n or large diff(range(x)) now works better |
| (though it was never meant for large n); internally it uses the |
| same rounding fuzz (1e-10) as seq.default() - as it did up to |
| 2010-02-03 when both were 1e-7. |
| |
| • Internal C-level R_check_class_and_super() and hence |
| R_check_class_etc() now also consider non-direct super classes |
| and hence return a match in more cases. This e.g., fixes |
| behaviour of derived classes in package Matrix. |
| |
| • Reverted unintended change in behavior of return calls in on.exit |
| expressions introduced by stack unwinding changes in R 3.3.0. |
| |
| • Attributes on symbols are now detected and prevented; attempt to |
| add an attribute to a symbol results in an error. |
| |
| • fisher.test(*, workspace = <n>) now may also increase the |
| internal stack size which allows larger problem to be solved, |
| fixing PR#1662. |
| |
| • The methods package no longer directly copies slots (attributes) |
| into a prototype that is of an “abnormal” (reference) type, like |
| a symbol. |
| |
| • The methods package no longer attempts to call length<-() on NULL |
| (during the bootstrap process). |
| |
| • The methods package correctly shows methods when there are |
| multiple methods with the same signature for the same generic |
| (still not fully supported, but at least the user can see them). |
| |
| • sys.on.exit() is now always evaluated in the right frame. (From |
| Lionel Henry.) |
| |
| • seq.POSIXt(*, by = "<n> DSTdays") now should work correctly in |
| all cases and is faster. (PR#17342) |
| |
| • .C() when returning a logical vector now always maps values other |
| than FALSE and NA to TRUE (as documented). |
| |
| • Subassignment with zero length vectors now coerces as documented |
| (PR#17344). |
| Further, x <- numeric(); x[1] <- character() now signals an error |
| ‘replacement has length zero’ (or a translation of that) instead |
| of doing nothing. |
| |
| • (Package parallel.) mclapply(), pvec() and mcparallel() (when |
| mccollect() is used to collect results) no longer leave zombie |
| processes behind. |
| |
| • R CMD INSTALL <pkg> now produces the intended error message when, |
| e.g., the LazyData field is invalid. |
| |
| • as.matrix(dd) now works when the data frame dd contains a column |
| which is a data frame or matrix, including a 0-column matrix/d.f. |
| . |
| |
| • mclapply(X, mc.cores) now follows its documentation and calls |
| lapply() in case mc.cores = 1 also in the case mc.preschedule is |
| false. (PR#17373) |
| |
| • aggregate(<data.frame>, drop=FALSE) no longer calls the function |
| on <empty> parts but sets corresponding results to NA. (Thanks |
| to Suharto Anggono's patches in PR#17280). |
| |
| • The duplicated() method for data frames is now based on the list |
| method (instead of string coercion). Consequently unique() is |
| better distinguishing data frame rows, fixing PR#17369 and |
| PR#17381. The methods for matrices and arrays are changed |
| accordingly. |
| |
| • Calling names() on an S4 object derived from "environment" |
| behaves (by default) like calling names() on an ordinary |
| environment. |
| |
| • read.table() with a non-default separator now supports quotes |
| following a non-whitespace character, matching the behavior of |
| scan(). |
| |
| • parLapplyLB and parSapplyLB have been fixed to do load balancing |
| (dynamic scheduling). This also means that results of |
| computations depending on random number generators will now |
| really be non-reproducible, as documented. |
| |
| • Indexing a list using dollar and empty string (l$"") returns |
| NULL. |
| |
| • Using \usage{ data(<name>, package="<pkg>") } no longer produces |
| R CMD check warnings. |
| |
| • match.arg() more carefully chooses the environment for |
| constructing default choices, fixing PR#17401 as proposed by |
| Duncan Murdoch. |
| |
| • Deparsing of consecutive ! calls is now consistent with deparsing |
| unary - and + calls and creates code that can be reparsed |
| exactly; thanks to a patch by Lionel Henry in PR#17397. (As a |
| side effect, this uses fewer parentheses in some other deparsing |
| involving ! calls.) |
| |
| CHANGES IN R 3.4.4: |
| |
| NEW FEATURES: |
| |
| • Sys.timezone() tries more heuristics on Unix-alikes and so is |
| more likely to succeed (especially on Linux). For the slowest |
| method, a warning is given recommending that TZ is set to avoid |
| the search. |
| |
| • The version of LAPACK included in the sources has been updated to |
| 3.8.0 (for the routines used by R, a very minor bug-fix change). |
| |
| • parallel::detectCores(logical = FALSE) is ignored on Linux |
| systems, since the information is not available with virtualized |
| OSes. |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • configure will use pkg-config to find the flags to link to jpeg |
| if available (as it should be for the recently-released jpeg-9c |
| and libjpeg-turbo). (This amends the code added in R 3.3.0 as |
| the module name in jpeg-9c is not what that tested for.) |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • Sys.timezone(location = FALSE) (which was a stop-gap measure for |
| Windows long ago) is deprecated. It no longer returns the value |
| of environment variable TZ (usually a location). |
| |
| • Legacy support of make macros such as CXX1X is formally |
| deprecated: use the CXX11 forms instead. |
| |
| BUG FIXES: |
| |
| • power.prop.test() now warns when it cannot solve the problem, |
| typically because of impossible constraints. (PR#17345) |
| |
| • removeSource() no longer erroneously removes NULL in certain |
| cases, thanks to Dénes Tóth. |
| |
| • nls(`NO [mol/l]` ~ f(t)) and nls(y ~ a) now work. (Partly from |
| PR#17367) |
| |
| • R CMD build checks for GNU cp rather than assuming Linux has it. |
| (PR#17370 says ‘Alpine Linux’ does not.) |
| |
| • Non-UTF-8 multibyte character handling fixed more permanently |
| (PR#16732). |
| |
| • sum(<large ints>, <stuff>) is more consistent. (PR#17372) |
| |
| • rf() and rbeta() now also work correctly when ncp is not scalar, |
| notably when (partly) NA. (PR#17375) |
| |
| • is.na(NULL) no longer warns. (PR#16107) |
| |
| • R CMD INSTALL now correctly sets C++ compiler flags when all |
| source files are in sub-directories of src. |
| |
| CHANGES IN R 3.4.3: |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • A workaround has been added for the changes in location of |
| time-zone files in macOS 10.13 ‘High Sierra’ and again in |
| 10.13.1, so the default time zone is deduced correctly from the |
| system setting when R is configured with --with-internal-tzcode |
| (the default on macOS). |
| |
| • R CMD javareconf has been updated to recognize the use of a Java |
| 9 SDK on macOS. |
| |
| BUG FIXES: |
| |
| • raw(0) & raw(0) and raw(0) | raw(0) again return raw(0) (rather |
| than logical(0)). |
| |
| • intToUtf8() converts integers corresponding to surrogate code |
| points to NA rather than invalid UTF-8, as well as values larger |
| than the current Unicode maximum of 0x10FFFF. (This aligns with |
| the current RFC3629.) |
| |
| • Fix calling of methods on S4 generics that dispatch on ... when |
| the call contains .... |
| |
| • Following Unicode ‘Corrigendum 9’, the UTF-8 representations of |
| U+FFFE and U+FFFF are now regarded as valid by utf8ToInt(). |
| |
| • range(c(TRUE, NA), finite = TRUE) and similar no longer return |
| NA. (Reported by Lukas Stadler.) |
| |
| • The self starting function attr(SSlogis, "initial") now also |
| works when the y values have exact minimum zero and is slightly |
| changed in general, behaving symmetrically in the y range. |
| |
| • The printing of named raw vectors is now formatted nicely as for |
| other such atomic vectors, thanks to Lukas Stadler. |
| |
| CHANGES IN R 3.4.2: |
| |
| NEW FEATURES: |
| |
| • Setting the LC_ALL category in Sys.setlocale() invalidates any |
| cached locale-specific day/month names and the AM/PM indicator |
| for strptime() (as setting LC_TIME has since R 3.1.0). |
| |
| • The version of LAPACK included in the sources has been updated to |
| 3.7.1, a bug-fix release. |
| |
| • The default for tools::write_PACKAGES(rds_compress=) has been |
| changed to "xz" to match the compression used by CRAN. |
| |
| • c() and unlist() are now more efficient in constructing the |
| names(.) of their return value, thanks to a proposal by Suharto |
| Anggono. (PR#17284) |
| |
| UTILITIES: |
| |
| • R CMD check checks for and R CMD build corrects CRLF line endings |
| in shell scripts configure and cleanup (even on Windows). |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • The order of selection of OpenMP flags has been changed: Oracle |
| Developer Studio 12.5 accepts -fopenmp and -xopenmp but only the |
| latter enables OpenMP so it is now tried first. |
| |
| BUG FIXES: |
| |
| • within(List, rm(x1, x2)) works correctly again, including when |
| List[["x2"]] is NULL. |
| |
| • regexec(pattern, text, *) now applies as.character(.) to its |
| first two arguments, as documented. |
| |
| • write.table() and related functions, writeLines(), and perhaps |
| other functions writing text to connections did not signal errors |
| when the writes failed, e.g. due to a disk being full. Errors |
| will now be signalled if detected during the write, warnings if |
| detected when the connection is closed. (PR#17243) |
| |
| • rt() assumed the ncp parameter was a scalar. (PR#17306) |
| |
| • menu(choices) with more than 10 choices which easily fit into one |
| getOption("width")-line no longer erroneously repeats choices. |
| (PR#17312) |
| |
| • length()<- on a pairlist succeeds. (<URL: |
| https://stat.ethz.ch/pipermail/r-devel/2017-July/074680.html>) |
| |
| • Language objects such as quote(("\n")) or R functions are |
| correctly printed again, where R 3.4.1 accidentally duplicated |
| the backslashes. |
| |
| • Construction of names() for very large objects in c() and |
| unlist() now works, thanks to Suharto Anggono's patch proposals |
| in PR#17292. |
| |
| • Resource leaks (and similar) reported by Steve Grubb fixed. |
| (PR#17314, PR#17316, PR#17317, PR#17318, PR#17319, PR#17320) |
| |
| • model.matrix(~1, mf) now gets the row names from mf also when |
| they differ from 1:nrow(mf), fixing PR#14992 thanks to the |
| suggestion by Sebastian Meyer. |
| |
| • sigma(fm) now takes the correct denominator degrees of freedom |
| for a fitted model with NA coefficients. (PR#17313) |
| |
| • hist(x, "FD") no longer “dies” with a somewhat cryptic error |
| message when x has extreme outliers or IQR() zero: nclass.FD(x) |
| tries harder to find a robust bin width h in the latter case, and |
| hist.default(*, breaks) now checks and corrects a too large |
| breaks number. (PR#17274) |
| |
| • callNextMethod() works for ... methods. |
| |
| • qr.coef(qd, y) now has correct names also when qd is a complex QR |
| or stems from qr(*, LAPACK=TRUE). |
| |
| • Setting options(device = *) to an invalid function no longer |
| segfaults when plotting is initiated. (PR#15883) |
| |
| • encodeString(<very large string>) no longer segfaults. |
| (PR#15885) |
| |
| • It is again possible to use configure --enable-maintainer-mode |
| without having installed notangle (it was required in R |
| 3.4.[01]). |
| |
| • S4 method dispatch on ... calls the method by name instead of |
| .Method (for consistency with default dispatch), and only |
| attempts to pass non-missing arguments from the generic. |
| |
| • readRDS(textConnection(.)) works again. (PR#17325) |
| |
| • (1:n)[-n] no longer segfaults for n <- 2.2e9 (on a platform with |
| enough RAM). |
| |
| • x <- 1:2; tapply(x, list(x, x), function(x) "")[1,2] now |
| correctly returns NA. (PR#17333) |
| |
| • Running of finalizers after explicit GC request moved from the R |
| interface do_gc to the C interface R_gc. This helps with |
| reclaiming inaccessible connections. |
| |
| • help.search(topic) and ??topic matching topics in vignettes with |
| multiple file name extensions (e.g., *.md.rsp but not *.Rmd) |
| failed with an error when using options(help_type = "html"). |
| |
| • The X11 device no longer uses the Xlib backing store (PR#16497). |
| |
| • array(character(), 1) now gives (a 1D array with) NA as has been |
| documented for a long time as in the other cases of zero-length |
| array initialization and also compatibly with matrix(character(), |
| *). As mentioned there, this also fixes PR#17333. |
| |
| • splineDesign(.., derivs = 4) no longer segfaults. |
| |
| • fisher.test(*, hybrid=TRUE) now (again) will use the hybrid |
| method when Cochran's conditions are met, fixing PR#16654. |
| |
| CHANGES IN R 3.4.1: |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • The deprecated support for PCRE versions older than 8.20 has been |
| removed. |
| |
| BUG FIXES: |
| |
| • getParseData() gave incorrect column information when code |
| contained multi-byte characters. (PR#17254) |
| |
| • Asking for help using expressions like ?stats::cor() did not |
| work. (PR#17250) |
| |
| • readRDS(url(....)) now works. |
| |
| • R CMD Sweave again returns status = 0 on successful completion. |
| |
| • Vignettes listed in .Rbuildignore were not being ignored |
| properly. (PR#17246) |
| |
| • file.mtime() no longer returns NA on Windows when the file or |
| directory is being used by another process. This affected |
| installed.packages(), which is now protected against this. |
| |
| • R CMD INSTALL Windows .zip file obeys --lock and --pkglock flags. |
| |
| • (Windows only) The choose.files() function could return incorrect |
| results when called with multi = FALSE. (PR#17270) |
| |
| • aggregate(<data.frame>, drop = FALSE) now also works in case of |
| near-equal numbers in by. (PR#16918) |
| |
| • fourfoldplot() could encounter integer overflow when calculating |
| the odds ratio. (PR#17286) |
| |
| • parse() no longer gives spurious warnings when extracting srcrefs |
| from a file not encoded in the current locale. |
| |
| This was seen from R CMD check with inst/doc/*.R files, and check |
| has some additional protection for such files. |
| |
| • print.noquote(x) now always returns its argument x (invisibly). |
| |
| • Non-UTF-8 multibyte character sets were not handled properly in |
| source references. (PR#16732) |
| |
| CHANGES IN R 3.4.0: |
| |
| SIGNIFICANT USER-VISIBLE CHANGES: |
| |
| • (Unix-alike) The default methods for download.file() and url() |
| now choose "libcurl" except for file:// URLs. There will be |
| small changes in the format and wording of messages, including in |
| rare cases if an issue is a warning or an error. For example, |
| when HTTP re-direction occurs, some messages refer to the final |
| URL rather than the specified one. |
| |
| Those who use proxies should check that their settings are |
| compatible (see ?download.file: the most commonly used forms work |
| for both "internal" and "libcurl"). |
| |
| • table() has been amended to be more internally consistent and |
| become back compatible to R <= 2.7.2 again. Consequently, |
| table(1:2, exclude = NULL) no longer contains a zero count for |
| <NA>, but useNA = "always" continues to do so. |
| |
| • summary.default() no longer rounds, but its print method does |
| resulting in less extraneous rounding, notably of numbers in the |
| ten thousands. |
| |
| • factor(x, exclude = L) behaves more rationally when x or L are |
| character vectors. Further, exclude = <factor> now behaves as |
| documented for long. |
| |
| • Arithmetic, logic (&, |) and comparison (aka ‘relational’, e.g., |
| <, ==) operations with arrays now behave consistently, notably |
| for arrays of length zero. |
| |
| Arithmetic between length-1 arrays and longer non-arrays had |
| silently dropped the array attributes and recycled. This now |
| gives a warning and will signal an error in the future, as it has |
| always for logic and comparison operations in these cases (e.g., |
| compare matrix(1,1) + 2:3 and matrix(1,1) < 2:3). |
| |
| • The JIT (‘Just In Time’) byte-code compiler is now enabled by |
| default at its level 3. This means functions will be compiled on |
| first or second use and top-level loops will be compiled and then |
| run. (Thanks to Tomas Kalibera for extensive work to make this |
| possible.) |
| |
| For now, the compiler will not compile code containing explicit |
| calls to browser(): this is to support single stepping from the |
| browser() call. |
| |
| JIT compilation can be disabled for the rest of the session using |
| compiler::enableJIT(0) or by setting environment variable |
| R_ENABLE_JIT to 0. |
| |
| • xtabs() works more consistently with NAs, also in its result no |
| longer setting them to 0. Further, a new logical option addNA |
| allows to count NAs where appropriate. Additionally, for the |
| case sparse = TRUE, the result's dimnames are identical to the |
| default case's. |
| |
| • Matrix products now consistently bypass BLAS when the inputs have |
| NaN/Inf values. Performance of the check of inputs has been |
| improved. Performance when BLAS is used is improved for |
| matrix/vector and vector/matrix multiplication (DGEMV is now used |
| instead of DGEMM). |
| |
| One can now choose from alternative matrix product |
| implementations _via_ options(matprod = ). The "internal" |
| implementation is not optimized for speed but consistent in |
| precision with other summations in R (using long double |
| accumulators where available). "blas" calls BLAS directly for |
| best speed, but usually with undefined behavior for inputs with |
| NaN/Inf. |
| |
| NEW FEATURES: |
| |
| • User errors such as integrate(f, 0:1, 2) are now caught. |
| |
| • Add signature argument to debug(), debugonce(), undebug() and |
| isdebugged() for more conveniently debugging S3 and S4 methods. |
| (Based on a patch by Gabe Becker.) |
| |
| • Add utils::debugcall() and utils::undebugcall() for debugging the |
| function that would be called by evaluating the given expression. |
| When the call is to an S4 generic or standard S3 generic, |
| debugcall() debugs the method that would be dispatched. A number |
| of internal utilities were added to support this, most notably |
| utils::isS3stdGeneric(). (Based on a patch by Gabe Becker.) |
| |
| • Add utils::strcapture(). Given a character vector and a regular |
| expression containing capture expressions, strcapture() will |
| extract the captured tokens into a tabular data structure, |
| typically a data.frame. |
| |
| • str() and strOptions() get a new option drop.deparse.attr with |
| improved but _changed_ default behaviour for expressions. For |
| expression objects x, str(x) now may remove extraneous white |
| space and truncate long lines. |
| |
| • str(<looooooooong_string>) is no longer very slow; inspired by |
| Mikko Korpela's proposal in PR#16527. |
| |
| • str(x)'s default method is more “accurate” and hence somewhat |
| more generous in displaying character vectors; this will |
| occasionally change R outputs (and need changes to some |
| *.Rout(.save) files). |
| |
| For a classed integer vector such as x <- xtabs(~ c(1,9,9,9)), |
| str(x) now shows both the class and "int", instead of only the |
| latter. |
| |
| • isSymmetric(m) is much faster for large asymmetric matrices m |
| _via_ pre-tests and a new option tol1 (with which strict back |
| compatibility is possible but not the default). |
| |
| • The result of eigen() now is of class "eigen" in the default case |
| when eigenvectors are computed. |
| |
| • Zero-length date and date-time objects (of classes "POSIX[cl]?t") |
| now print() “recognizably”. |
| |
| • xy.coords() and xyz.coords() get a new setLab option. |
| |
| • The method argument of sort.list(), order() and sort.int() gains |
| an "auto" option (the default) which should behave the same as |
| before when method was not supplied. |
| |
| • stopifnot(E, ..) now reports differences when E is a call to |
| all.equal() and that is not true. |
| |
| • boxplot(<formula>, *) gain optional arguments drop, sep, and |
| lex.order to pass to split.default() which itself gains an |
| argument lex.order to pass to interaction() for more flexibility. |
| |
| • The plot() method for ppr() has enhanced default labels (xmin and |
| main). |
| |
| • sample.int() gains an explicit useHash option (with a back |
| compatible default). |
| |
| • identical() gains an ignore.srcref option which drops "srcref" |
| and similar attributes when true (as by default). |
| |
| • diag(x, nrow = n) now preserves typeof(x), also for logical, |
| integer and raw x (and as previously for complex and numeric). |
| |
| • smooth.spline() now allows direct specification of lambda, gets a |
| hatvalues() method and keeps tol in the result, and optionally |
| parts of the internal matrix computations. |
| |
| • addNA() is faster now, e.g. when applied twice. (Part of |
| PR#16895.) |
| |
| • New option rstandard(<lm>, type = "predicted") provides the |
| “PRESS”-related leave-one-out cross-validation errors for linear |
| models. |
| |
| • After seven years of deprecation, duplicated factor levels now |
| produce a warning when printed and an error in levels<- instead |
| of a warning. |
| |
| • Invalid factors, e.g., with duplicated levels (invalid but |
| constructable) now give a warning when printed, _via_ new |
| function .valid.factor(). |
| |
| • sessionInfo() has been updated for Apple's change in OS naming as |
| from ‘10.12’ (‘macOS Sierra’ _vs_ ‘OS X El Capitan’). |
| |
| Its toLatex() method now includes the running component. |
| |
| • options(interrupt=) can be used to specify a default action for |
| user interrupts. For now, if this option is not set and the |
| error option is set, then an unhandled user interrupt invokes the |
| error option. (This may be dropped in the future as interrupt |
| conditions are not error conditions.) |
| |
| • In most cases user interrupt handlers will be called with a |
| "resume" restart available. Handlers can invoke this restart to |
| resume computation. At the browser prompt the r command will |
| invoke a "resume" restart if one is available. Some read |
| operations cannot be resumed properly when interrupted and do not |
| provide a "resume" restart. |
| |
| • Radix sort is now chosen by method = "auto" for sort.int() for |
| double vectors (and hence used for sort() for unclassed double |
| vectors), excluding ‘long’ vectors. |
| |
| sort.int(method = "radix") no longer rounds double vectors. |
| |
| • The default and data.frame methods for stack() preserve the names |
| of empty elements in the levels of the ind column of the return |
| value. Set the new drop argument to TRUE for the previous |
| behavior. |
| |
| • Speedup in simplify2array() and hence sapply() and mapply() (for |
| the case of names and common length > 1), thanks to Suharto |
| Anggono's PR#17118. |
| |
| • table(x, exclude = NULL) now sets useNA = "ifany" (instead of |
| "always"). Together with the bug fixes for this case, this |
| recovers more consistent behaviour compatible to older versions |
| of R. As a consequence, summary() for a logical vector no longer |
| reports (zero) counts for NA when there are no NAs. |
| |
| • dump.frames() gets a new option include.GlobalEnv which allows to |
| also dump the global environment, thanks to Andreas Kersting's |
| proposal in PR#17116. |
| |
| • system.time() now uses message() instead of cat() when terminated |
| early, such that suppressMessages() has an effect; suggested by |
| Ben Bolker. |
| |
| • citation() supports inst/CITATION files from package source |
| trees, with lib.loc pointing to the directory containing the |
| package. |
| |
| • try() gains a new argument outFile with a default that can be |
| modified _via_ options(try.outFile = .), useful notably for |
| Sweave. |
| |
| • The unexported low-level functions in package parallel for |
| passing serialized R objects to and from forked children now |
| support long vectors on 64-bit platforms. This removes some |
| limits on higher-level functions such as mclapply() (but |
| returning gigabyte results from forked processes _via_ |
| serialization should be avoided if at all possible). |
| |
| • Connections now print() without error even if invalid, e.g. after |
| having been destroyed. |
| |
| • apropos() and find(simple.words = FALSE) no longer match object |
| names starting with . which are known to be internal objects |
| (such as .__S3MethodsTable__.). |
| |
| • Convenience function hasName() has been added; it is intended to |
| replace the common idiom !is.null(x$name) without the usually |
| unintended partial name matching. |
| |
| • strcapture() no longer fixes column names nor coerces strings to |
| factors (suggested by Bill Dunlap). |
| |
| • strcapture() returns NA for non-matching values in x (suggested |
| by Bill Dunlap). |
| |
| • source() gets new optional arguments, notably exprs; this is made |
| use of in the new utility function withAutoprint(). |
| |
| • sys.source() gets a new toplevel.env argument. This argument is |
| useful for frameworks running package tests; contributed by Tomas |
| Kalibera. |
| |
| • Sys.setFileTime() and file.copy(copy.date = TRUE) will set |
| timestamps with fractions of seconds on platforms/filesystems |
| which support this. |
| |
| • (Windows only.) file.info() now returns file timestamps including |
| fractions of seconds; it has done so on other platforms since R |
| 2.14.0. (NB: some filesystems do not record modification and |
| access timestamps to sub-second resolution.) |
| |
| • The license check enabled by options(checkPackageLicense = TRUE) |
| is now done when the package's namespace is first loaded. |
| |
| • ppr() and supsmu() get an optional trace argument, and ppr(.., |
| sm.method = ..spline) is no longer limited to sample size n <= |
| 2500. |
| |
| • The POSIXct method for print() gets optional tz and usetz |
| arguments, thanks to a report from Jennifer S. Lyon. |
| |
| • New function check_packages_in_dir_details() in package tools for |
| analyzing package-check log files to obtain check details. |
| |
| • Package tools now exports function CRAN_package_db() for |
| obtaining information about current packages in the CRAN package |
| repository, and several functions for obtaining the check status |
| of these packages. |
| |
| • The (default) Stangle driver Rtangle allows annotate to be a |
| function and gets a new drop.evalFALSE option. |
| |
| • The default method for quantile(x, prob) should now be monotone |
| in prob, even in border cases, see PR#16672. |
| |
| • bug.report() now tries to extract an email address from a |
| BugReports field, and if there is none, from a Contacts field. |
| |
| • The format() and print() methods for object.size() results get |
| new options standard and digits; notably, standard = "IEC" and |
| standard = "SI" allow more standard (but less common) |
| abbreviations than the default ones, e.g. for kilobytes. (From |
| contributions by Henrik Bengtsson.) |
| |
| • If a reference class has a validity method, validObject will be |
| called automatically from the default initialization method for |
| reference classes. |
| |
| • tapply() gets new option default = NA allowing to change the |
| previously hardcoded value. |
| |
| • read.dcf() now consistently interprets any ‘whitespace’ to be |
| stripped to include newlines. |
| |
| • The maximum number of DLLs that can be loaded into R e.g. _via_ |
| dyn.load() can now be increased by setting the environment |
| variable R_MAX_NUM_DLLS before starting R. |
| |
| • Assigning to an element of a vector beyond the current length now |
| over-allocates by a small fraction. The new vector is marked |
| internally as growable, and the true length of the new vector is |
| stored in the truelength field. This makes building up a vector |
| result by assigning to the next element beyond the current length |
| more efficient, though pre-allocating is still preferred. The |
| implementation is subject to change and not intended to be used |
| in packages at this time. |
| |
| • Loading the parallel package namespace no longer sets or changes |
| the .Random.seed, even if R_PARALLEL_PORT is unset. |
| |
| NB: This can break reproducibility of output, and did for a CRAN |
| package. |
| |
| • Methods "wget" and "curl" for download.file() now give an R error |
| rather than a non-zero return value when the external command has |
| a non-zero status. |
| |
| • Encoding name "utf8" is mapped to "UTF-8". Many implementations |
| of iconv accept "utf8", but not GNU libiconv (including the late |
| 2016 version 1.15). |
| |
| • sessionInfo() shows the full paths to the library or executable |
| files providing the BLAS/LAPACK implementations currently in use |
| (not available on Windows). |
| |
| • The binning algorithm used by bandwidth selectors bw.ucv(), |
| bw.bcv() and bw.SJ() switches to a version linear in the input |
| size n for n > nb/2. (The calculations are the same, but for |
| larger n/nb it is worth doing the binning in advance.) |
| |
| • There is a new option PCRE_study which controls when grep(perl = |
| TRUE) and friends ‘study’ the compiled pattern. Previously this |
| was done for 11 or more input strings: it now defaults to 10 or |
| more (but most examples need many more for the difference from |
| studying to be noticeable). |
| |
| • grep(perl = TRUE) and friends can now make use of PCRE's |
| Just-In-Time mechanism, for PCRE >= 8.20 on platforms where JIT |
| is supported. It is used by default whenever the pattern is |
| studied (see the previous item). (Based on a patch from Mikko |
| Korpela.) |
| |
| This is controlled by a new option PCRE_use_JIT. |
| |
| Note that in general this makes little difference to the speed, |
| and may take a little longer: its benefits are most evident on |
| strings of thousands of characters. As a side effect it reduces |
| the chances of C stack overflow in the PCRE library on very long |
| strings (millions of characters, but see next item). |
| |
| Warning: segfaults were seen using PCRE with JIT enabled on |
| 64-bit Sparc builds. |
| |
| • There is a new option PCRE_limit_recursion for grep(perl = TRUE) |
| and friends to set a recursion limit taking into account R's |
| estimate of the remaining C stack space (or 10000 if that is not |
| available). This reduces the chance of C stack overflow, but |
| because it is conservative may report a non-match (with a |
| warning) in examples that matched before. By default it is |
| enabled if any input string has 1000 or more bytes. (PR#16757) |
| |
| • getGraphicsEvent() now works on X11(type = "cairo") devices. |
| Thanks to Frederick Eaton (for reviving an earlier patch). |
| |
| • There is a new argument onIdle for getGraphicsEvent(), which |
| allows an R function to be run whenever there are no pending |
| graphics events. This is currently only supported on X11 |
| devices. Thanks to Frederick Eaton. |
| |
| • The deriv() and similar functions now can compute derivatives of |
| log1p(), sinpi() and similar one-argument functions, thanks to a |
| contribution by Jerry Lewis. |
| |
| • median() gains a formal ... argument, so methods with extra |
| arguments can be provided. |
| |
| • strwrap() reduces indent if it is more than half width rather |
| than giving an error. (Suggested by Bill Dunlap.) |
| |
| • When the condition code in if(.) or while(.) is not of length |
| one, an error instead of a warning may be triggered by setting an |
| environment variable, see the help page. |
| |
| • Formatting and printing of bibliography entries (bibentry) is |
| more flexible and better documented. Apart from setting |
| options(citation.bibtex.max = 99) you can also use |
| print(<citation>, bibtex=TRUE) (or format(..)) to get the BibTeX |
| entries in the case of more than one entry. This also affects |
| citation(). Contributions to enable style = "html+bibtex" are |
| welcome. |
| |
| C-LEVEL FACILITIES: |
| |
| • Entry points R_MakeExternalPtrFn and R_ExternalPtrFn are now |
| declared in header Rinternals.h to facilitate creating and |
| retrieving an R external pointer from a C function pointer |
| without ISO C warnings about the conversion of function pointers. |
| |
| • There was an exception for the native Solaris C++ compiler to the |
| dropping (in R 3.3.0) of legacy C++ headers from headers such as |
| R.h and Rmath.h - this has now been removed. That compiler has |
| strict C++98 compliance hence does not include extensions in its |
| (non-legacy) C++ headers: some packages will need to request |
| C++11 or replace non-C++98 calls such as lgamma: see §1.6.4 of |
| ‘Writing R Extensions’. |
| |
| Because it is needed by about 70 CRAN packages, headers R.h and |
| Rmath.h still declare |
| |
| use namespace std; |
| |
| when included on Solaris. |
| |
| • When included from C++, the R headers now use forms such as |
| std::FILE directly rather than including the line |
| |
| using std::FILE; |
| |
| C++ code including these headers might be relying on the latter. |
| |
| • Headers R_ext/BLAS.h and R_ext/Lapack.h have many improved |
| declarations including const for double-precision complex |
| routines. _Inter alia_ this avoids warnings when passing ‘string |
| literal’ arguments from C++11 code. |
| |
| • Headers for Unix-only facilities R_ext/GetX11Image.h, |
| R_ext/QuartzDevice.h and R_ext/eventloop.h are no longer |
| installed on Windows. |
| |
| • No-longer-installed headers GraphicsBase.h, RGraphics.h, |
| Rmodules/RX11.h and Rmodules/Rlapack.h which had a LGPL license |
| no longer do so. |
| |
| • HAVE_UINTPTR_T is now defined where appropriate by Rconfig.h so |
| that it can be included before Rinterface.h when CSTACK_DEFNS is |
| defined and a C compiler (not C++) is in use. Rinterface.h now |
| includes C header stdint.h or C++11 header cstdint where needed. |
| |
| • Package tools has a new function |
| package_native_routine_registration_skeleton() to assist adding |
| native-symbol registration to a package. See its help and §5.4.1 |
| of ‘Writing R Extensions’ for how to use it. (At the time it was |
| added it successfully automated adding registration to over 90% |
| of CRAN packages which lacked it. Many of the failures were |
| newly-detected bugs in the packages, e.g. 50 packages called |
| entry points with varying numbers of arguments and 65 packages |
| called entry points not in the package.) |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • readline headers (and not just the library) are required unless |
| configuring with --with-readline=no. |
| |
| • configure now adds a compiler switch for C++11 code, even if the |
| compiler supports C++11 by default. (This ensures that g++ 6.x |
| uses C++11 mode and not its default mode of C++14 with ‘GNU |
| extensions’.) |
| |
| The tests for C++11 compliance are now much more comprehensive. |
| For gcc < 4.8, the tests from R 3.3.0 are used in order to |
| maintain the same behaviour on Linux distributions with long-term |
| support. |
| |
| • An alternative compiler for C++11 is now specified with CXX11, |
| not CXX1X. Likewise C++11 flags are specified with CXX11FLAGS and |
| the standard (e.g., -std=gnu++11) is specified with CXX11STD. |
| |
| • configure now tests for a C++14-compliant compiler by testing |
| some basic features. This by default tries flags for the |
| compiler specified by CXX11, but an alternative compiler, options |
| and standard can be specified by variables CXX14, CXX14FLAGS and |
| CXX14STD (e.g., -std=gnu++14). |
| |
| • There is a new macro CXXSTD to help specify the standard for C++ |
| code, e.g. -std=c++98. This makes it easier to work with |
| compilers which default to a later standard: for example, with |
| CXX=g++6 CXXSTD=-std=c++98 configure will select commands for g++ |
| 6.x which conform to C++11 and C++14 where specified but |
| otherwise use C++98. |
| |
| • Support for the defunct IRIX and OSF/1 OSes and Alpha CPU has |
| been removed. |
| |
| • configure checks that the compiler specified by $CXX $CXXFLAGS is |
| able to compile C++ code. |
| |
| • configure checks for the required header sys/select.h (or |
| sys/time.h on legacy systems) and system call select and aborts |
| if they are not found. |
| |
| • If available, the POSIX 2008 system call utimensat will be used |
| by Sys.setFileTime() and file.copy(copy.date = TRUE). This may |
| result in slightly more accurate file times. (It is available on |
| Linux and FreeBSD but not macOS.) |
| |
| • The minimum version requirement for libcurl has been reduced to |
| 7.22.0, although at least 7.28.0 is preferred and earlier |
| versions are little tested. (This is to support Debian 7 |
| ‘Wheezy’ LTS and Ubuntu ‘Precise’ 12.04 LTS, although the latter |
| is close to end-of-life.) |
| |
| • configure tests for a C++17-compliant compiler. The tests are |
| experimental and subject to change in the future. |
| |
| INCLUDED SOFTWARE: |
| |
| • (Windows only) Tcl/Tk version 8.6.4 is now included in the binary |
| builds. The tcltk*.chm help file is no longer included; please |
| consult the online help at <URL: http://www.tcl.tk/man/> instead. |
| |
| • The version of LAPACK included in the sources has been updated to |
| 3.7.0: no new routines have been added to R. |
| |
| PACKAGE INSTALLATION: |
| |
| • There is support for compiling C++14 or C++17 code in packages on |
| suitable platforms: see ‘Writing R Extensions’ for how to request |
| this. |
| |
| • The order of flags when LinkingTo other packages has been changed |
| so their include directories come earlier, before those specified |
| in CPPFLAGS. This will only have an effect if non-system include |
| directories are included with -I flags in CPPFLAGS (and so not |
| the default -I/usr/local/include which is treated as a system |
| include directory on most platforms). |
| |
| • Packages which register native routines for .C or .Fortran need |
| to be re-installed for this version (unless installed with |
| R-devel SVN revision r72375 or later). |
| |
| • Make variables with names containing CXX1X are deprecated in |
| favour of those using CXX11, but for the time being are still |
| made available _via_ file etc/Makeconf. Packages using them |
| should be converted to the new forms and made dependent on R (>= |
| 3.4.0). |
| |
| UTILITIES: |
| |
| • Running R CMD check --as-cran with _R_CHECK_CRAN_INCOMING_REMOTE_ |
| false now skips tests that require remote access. The remaining |
| (local) tests typically run quickly compared to the remote tests. |
| |
| • R CMD build will now give priority to vignettes produced from |
| files in the vignettes directory over those in the inst/doc |
| directory, with a warning that the latter are being ignored. |
| |
| • R CMD config gains a --all option for printing names and values |
| of all basic configure variables. |
| |
| It now knows about all the variables used for the C++98, C++11 |
| and C++14 standards. |
| |
| • R CMD check now checks that output files in inst/doc are newer |
| than the source files in vignettes. |
| |
| • For consistency with other package subdirectories, files named |
| *.r in the tests directory are now recognized as tests by R CMD |
| check. (Wish of PR#17143.) |
| |
| • R CMD build and R CMD check now use the _union_ of R_LIBS and |
| .libPaths(). They may not be equivalent, e.g., when the latter |
| is determined by R_PROFILE. |
| |
| • R CMD build now preserves dates when it copies files in preparing |
| the tarball. (Previously on Windows it changed the dates on all |
| files; on Unix, it changed some dates when installing vignettes.) |
| |
| • The new option R CMD check --no-stop-on-test-error allows running |
| the remaining tests (under tests/) even if one gave an error. |
| |
| • Check customization _via_ environment variables to detect side |
| effects of .Call() and .External() calls which alter their |
| arguments is described in §8 of the ‘R Internals’ manual. |
| |
| • R CMD check now checks any BugReports field to be non-empty and a |
| suitable single URL. |
| |
| • R CMD check --as-cran now NOTEs if the package does not register |
| its native routines or does not declare its intentions on |
| (native) symbol search. (This will become a WARNING in due |
| course.) |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • (Windows only) Function setInternet2() is defunct. |
| |
| • Installation support for readline emulations based on editline |
| (aka libedit) is deprecated. |
| |
| • Use of the C/C++ macro NO_C_HEADERS is defunct and silently |
| ignored. |
| |
| • unix.time(), a traditional synonym for system.time(), has been |
| deprecated. |
| |
| • structure(NULL, ..) is now deprecated as you cannot set |
| attributes on NULL. |
| |
| • Header Rconfig.h no longer defines SUPPORT_OPENMP; instead use |
| _OPENMP (as documented for a long time). |
| |
| • (C-level Native routine registration.) The deprecated styles |
| member of the R_CMethodDef and R_FortranMethodDef structures has |
| been removed. Packages using these will need to be re-installed |
| for R 3.4.0. |
| |
| • The deprecated support for PCRE versions older than 8.20 will be |
| removed in R 3.4.1. (Versions 8.20-8.31 will still be accepted |
| but remain deprecated.) |
| |
| BUG FIXES: |
| |
| • Getting or setting body() or formals() on non-functions for now |
| signals a warning and may become an error for setting. |
| |
| • match(x, t), duplicated(x) and unique(x) work as documented for |
| complex numbers with NAs or NaNs, where all those containing NA |
| do match, whereas in the case of NaN's both real and imaginary |
| parts must match, compatibly with how print() and format() work |
| for complex numbers. |
| |
| • deparse(<complex>, options = "digits17") prints more nicely now, |
| mostly thanks to a suggestion by Richie Cotton. |
| |
| • Rotated symbols in plotmath expressions are now positioned |
| correctly on x11(type = "Xlib"). (PR#16948) |
| |
| • as<-() avoids an infinite loop when a virtual class is interposed |
| between a subclass and an actual superclass. |
| |
| • Fix level propagation in unlist() when the list contains |
| zero-length lists or factors. |
| |
| • Fix S3 dispatch on S4 objects when the methods package is not |
| attached. |
| |
| • Internal S4 dispatch sets .Generic in the method frame for |
| consistency with standardGeneric(). (PR#16929) |
| |
| • Fix order(x, decreasing = TRUE) when x is an integer vector |
| containing MAX_INT. Ported from a fix Matt Dowle made to |
| data.table. |
| |
| • Fix caching by callNextMethod(), resolves PR#16973 and PR#16974. |
| |
| • grouping() puts NAs last, to be consistent with the default |
| behavior of order(). |
| |
| • Point mass limit cases: qpois(-2, 0) now gives NaN with a warning |
| and qgeom(1, 1) is 0. (PR#16972) |
| |
| • table() no longer drops an "NaN" factor level, and better obeys |
| exclude = <chr>, thanks to Suharto Anggono's patch for PR#16936. |
| Also, in the case of exclude = NULL and NAs, these are tabulated |
| correctly (again). |
| |
| Further, table(1:2, exclude = 1, useNA = "ifany") no longer |
| erroneously reports <NA> counts. |
| |
| Additionally, all cases of empty exclude are equivalent, and |
| useNA is not overwritten when specified (as it was by exclude = |
| NULL). |
| |
| • wilcox.test(x, conf.int=TRUE) no longer errors out in cases where |
| the confidence interval is not available, such as for x = 0:2. |
| |
| • droplevels(f) now keeps <NA> levels when present. |
| |
| • In integer arithmetic, NULL is now treated as integer(0) whereas |
| it was previously treated as double(0). |
| |
| • The radix sort considers NA_real_ and NaN to be equivalent in |
| rank (like the other sort algorithms). |
| |
| • When index.return=TRUE is passed to sort.int(), the radix sort |
| treats NAs like sort.list() does (like the other sort |
| algorithms). |
| |
| • When in tabulate(bin, nbin) length(bin) is larger than the |
| maximal integer, the result is now of type double and hence no |
| longer silently overflows to wrong values. (PR#17140) |
| |
| • as.character.factor() respects S4 inheritance when checking the |
| type of its argument. (PR#17141) |
| |
| • The factor method for print() no longer sets the class of the |
| factor to NULL, which would violate a basic constraint of an S4 |
| object. |
| |
| • formatC(x, flag = f) allows two new flags, and signals an error |
| for invalid flags also in the case of character formatting. |
| |
| • Reading from file("stdin") now also closes the connection and |
| hence no longer leaks memory when reading from a full pipe, |
| thanks to Gábor Csárdi, see thread starting at <URL: |
| https://stat.ethz.ch/pipermail/r-devel/2016-November/073360.html>. |
| |
| • Failure to create file in tempdir() for compressed pdf() graphics |
| device no longer errors (then later segfaults). There is now a |
| warning instead of error and compression is turned off for the |
| device. Thanks to Alec Wysoker (PR#17191). |
| |
| • Asking for methods() on "|" returns only S3 methods. See <URL: |
| https://stat.ethz.ch/pipermail/r-devel/2016-December/073476.html>. |
| |
| • dev.capture() using Quartz Cocoa device (macOS) returned invalid |
| components if the back-end chose to use ARGB instead of RGBA |
| image format. (Reported by Noam Ross.) |
| |
| • seq("2", "5") now works too, equivalently to "2":"5" and |
| seq.int(). |
| |
| • seq.int(to = 1, by = 1) is now correct, other cases are integer |
| (instead of double) when seq() is integer too, and the |
| "non-finite" error messages are consistent between seq.default() |
| and seq.int(), no longer mentioning NaN etc. |
| |
| • rep(x, times) and rep.int(x, times) now work when times is larger |
| than the largest value representable in an integer vector. |
| (PR#16932) |
| |
| • download.file(method = "libcurl") does not check for URL |
| existence before attempting downloads; this is more robust to |
| servers that do not support HEAD or range-based retrieval, but |
| may create empty or incomplete files for aborted download |
| requests. |
| |
| • Bandwidth selectors bw.ucv(), bw.bcv() and bw.SJ() now avoid |
| integer overflow for large sample sizes. |
| |
| • str() no longer shows "list output truncated", in cases that list |
| was not shown at all. Thanks to Neal Fultz (PR#17219) |
| |
| • Fix for cairo_pdf() (and svg() and cairo_ps()) when replaying a |
| saved display list that contains a mix of grid and graphics |
| output. (Report by Yihui Xie.) |
| |
| • The str() and as.hclust() methods for "dendrogram" now also work |
| for deeply nested dendrograms thanks to non-recursive |
| implementations by Bradley Broom. |
| |
| • sample() now uses two uniforms for added precision when the |
| uniform generator is Knuth-TAOCP, Knuth-TAOCP-2002, or a |
| user-defined generator and the population size is 2^25 or |
| greater. |
| |
| • If a vignette in the vignettes directory is listed in |
| .Rbuildignore, R CMD build would not include it in the tarball, |
| but would include it in the vignette database, leading to a check |
| warning. (PR#17246) |
| |
| • tools::latexToUtf8() infinite looped on certain inputs. |
| (PR#17138) |
| |
| • terms.formula() ignored argument names when determining whether |
| two terms were identical. (PR#17235) |
| |
| • callNextMethod() was broken when called from a method that |
| augments the formal arguments of a primitive generic. |
| |
| • Coercion of an S4 object to a vector during sub-assignment into a |
| vector failed to dispatch through the as.vector() generic (often |
| leading to a segfault). |
| |
| • Fix problems in command completion: Crash (PR#17222) and junk |
| display in Windows, handling special characters in filenames on |
| all systems. |
| |
| CHANGES IN R 3.3.3: |
| |
| NEW FEATURES: |
| |
| • Changes when redirection of a http:// URL to a https:// URL is |
| encountered: |
| |
| • The internal methods of download.file() and url() now report |
| that they cannot follow this (rather than failing silently). |
| |
| • (Unix-alike) download.file(method = "auto") (the default) |
| re-tries with method = "libcurl". |
| |
| • (Unix-alike) url(method = "default") with an explicit open |
| argument re-tries with method = "libcurl". This covers many |
| of the usages, e.g. readLines() with a URL argument. |
| |
| INSTALLATION on a UNIX-ALIKE: |
| |
| • The configure check for the zlib version is now robust to |
| versions longer than 5 characters, including 1.2.11. |
| |
| UTILITIES: |
| |
| • Environmental variable _R_CHECK_TESTS_NLINES_ controls how R CMD |
| check reports failing tests (see §8 of the ‘R Internals’ manual). |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • (C-level Native routine registration.) The undocumented styles |
| field of the components of R_CMethodDef and R_FortranMethodDef is |
| deprecated. |
| |
| BUG FIXES: |
| |
| • vapply(x, *) now works with long vectors x. (PR#17174) |
| |
| • isS3method("is.na.data.frame") and similar are correct now. |
| (PR#17171) |
| |
| • grepRaw(<long>, <short>, fixed = TRUE) now works, thanks to a |
| patch by Mikko Korpela. (PR#17132) |
| |
| • Package installation into a library where the package exists |
| _via_ symbolic link now should work wherever Sys.readlink() |
| works, resolving PR#16725. |
| |
| • "Cincinnati" was missing an "n" in the precip dataset. |
| |
| • Fix buffer overflow vulnerability in pdf() when loading an |
| encoding file. Reported by Talos (TALOS-2016-0227). |
| |
| • getDLLRegisteredRoutines() now produces its warning correctly |
| when multiple DLLs match, thanks to Matt Dowle's PR#17184. |
| |
| • Sys.timezone() now returns non-NA also on platforms such as |
| Ubuntu 14.04.5 LTS, thanks to Mikko Korpela's PR#17186. |
| |
| • format(x) for an illegal "POSIXlt" object x no longer segfaults. |
| |
| • methods(f) now also works for f "(" or "{". |
| |
| • (Windows only) dir.create() did not check the length of the path |
| to create, and so could overflow a buffer and crash R. |
| (PR#17206) |
| |
| • On some systems, very small hexadecimal numbers in hex notation |
| would underflow to zero. (PR#17199) |
| |
| • pmin() and pmax() now work again for ordered factors and 0-length |
| S3 classed objects, thanks to Suharto Anggono's PR#17195 and |
| PR#17200. |
| |
| • bug.report() did not do any validity checking on a package's |
| BugReports field. It now ignores an empty field, removes leading |
| whitespace and only attempts to open http:// and https:// URLs, |
| falling back to emailing the maintainer. |
| |
| • Bandwidth selectors bw.ucv() and bw.SJ() gave incorrect answers |
| or incorrectly reported an error (because of integer overflow) |
| for inputs longer than 46341. Similarly for bw.bcv() at length |
| 5793. |
| |
| Another possible integer overflow is checked and may result in an |
| error report (rather than an incorrect result) for much longer |
| inputs (millions for a smooth distribution). |
| |
| • findMethod() failed if the active signature had expanded beyond |
| what a particular package used. (Example with packages XR and |
| XRJulia on CRAN.) |
| |
| • qbeta() underflowed too early in some very asymmetric cases. |
| (PR#17178) |
| |
| • R CMD Rd2pdf had problems with packages with non-ASCII titles in |
| .Rd files (usually the titles were omitted). |
| |
| CHANGES IN R 3.3.2: |
| |
| NEW FEATURES: |
| |
| • extSoftVersion() now reports the version (if any) of the readline |
| library in use. |
| |
| • The version of LAPACK included in the sources has been updated to |
| 3.6.1, a bug-fix release including a speedup for the |
| non-symmetric case of eigen(). |
| |
| • Use options(deparse.max.lines=) to limit the number of lines |
| recorded in .Traceback and other deparsing activities. |
| |
| • format(<AsIs>) looks more regular, also for non-character atomic |
| matrices. |
| |
| • abbreviate() gains an option named = TRUE. |
| |
| • The online documentation for package methods is extensively |
| rewritten. The goals are to simplify documentation for basic |
| use, to note old features not recommended and to correct |
| out-of-date information. |
| |
| • Calls to setMethod() no longer print a message when creating a |
| generic function in those cases where that is natural: S3 |
| generics and primitives. |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • Versions of the readline library >= 6.3 had been changed so that |
| terminal window resizes were not signalled to readline: code has |
| been added using a explicit signal handler to work around that |
| (when R is compiled against readline >= 6.3). (PR#16604) |
| |
| • configure works better with Oracle Developer Studio 12.5. |
| |
| UTILITIES: |
| |
| • R CMD check reports more dubious flags in files |
| src/Makevars[.in], including -w and -g. |
| |
| • R CMD check has been set up to filter important warnings from |
| recent versions of gfortran with -Wall -pedantic: this now |
| reports non-portable GNU extensions such as out-of-order |
| declarations. |
| |
| • R CMD config works better with paths containing spaces, even |
| those of home directories (as reported by Ken Beath). |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • Use of the C/C++ macro NO_C_HEADERS is deprecated (no C headers |
| are included by R headers from C++ as from R 3.3.0, so it should |
| no longer be needed). |
| |
| BUG FIXES: |
| |
| • The check for non-portable flags in R CMD check could be stymied |
| by src/Makevars files which contained targets. |
| |
| • (Windows only) When using certain desktop themes in Windows 7 or |
| higher, Alt-Tab could cause Rterm to stop accepting input. |
| (PR#14406; patch submitted by Jan Gleixner.) |
| |
| • pretty(d, ..) behaves better for date-time d (PR#16923). |
| |
| • When an S4 class name matches multiple classes in the S4 cache, |
| perform a dynamic search in order to obey namespace imports. |
| This should eliminate annoying messages about multiple hits in |
| the class cache. Also, pass along the package from the |
| ClassExtends object when looking up superclasses in the cache. |
| |
| • sample(NA_real_) now works. |
| |
| • Packages using non-ASCII encodings in their code did not install |
| data properly on systems using different encodings. |
| |
| • merge(df1, df2) now also works for data frames with column names |
| "na.last", "decreasing", or "method". (PR#17119) |
| |
| • contour() caused a segfault if the labels argument had length |
| zero. (Reported by Bill Dunlap.) |
| |
| • unique(warnings()) works more correctly, thanks to a new |
| duplicated.warnings() method. |
| |
| • findInterval(x, vec = numeric(), all.inside = TRUE) now returns |
| 0s as documented. (Reported by Bill Dunlap.) |
| |
| • (Windows only) R CMD SHLIB failed when a symbol in the resulting |
| library had the same name as a keyword in the .def file. |
| (PR#17130) |
| |
| • pmax() and pmin() now work with (more ?) classed objects, such |
| as "Matrix" from the Matrix package, as documented for a long |
| time. |
| |
| • axis(side, x = D) and hence Axis() and plot() now work correctly |
| for "Date" and time objects D, even when “time goes backward”, |
| e.g., with decreasing xlim. (Reported by William May.) |
| |
| • str(I(matrix(..))) now looks as always intended. |
| |
| • plot.ts(), the plot() method for time series, now respects cex, |
| lwd and lty. (Reported by Greg Werbin.) |
| |
| • parallel::mccollect() now returns a named list (as documented) |
| when called with wait = FALSE. (Reported by Michel Lang.) |
| |
| • If a package added a class to a class union in another package, |
| loading the first package gave erroneous warnings about |
| “undefined subclass”. |
| |
| • c()'s argument use.names is documented now, as belonging to the |
| (C internal) default method. In “parallel”, argument recursive |
| is also moved from the generic to the default method, such that |
| the formal argument list of base generic c() is just (...). |
| |
| • rbeta(4, NA) and similarly rgamma() and rnbinom() now return |
| NaN's with a warning, as other r<dist>(), and as documented. |
| (PR#17155) |
| |
| • Using options(checkPackageLicense = TRUE) no longer requires |
| acceptance of the licence for non-default standard packages such |
| as compiler. (Reported by Mikko Korpela.) |
| |
| • split(<very_long>, *) now works even when the split off parts are |
| long. (PR#17139) |
| |
| • min() and max() now also work correctly when the argument list |
| starts with character(0). (PR#17160) |
| |
| • Subsetting very large matrices (prod(dim(.)) >= 2^31) now works |
| thanks to Michael Schubmehl's PR#17158. |
| |
| • bartlett.test() used residual sums of squares instead of |
| variances, when the argument was a list of lm objects. (Reported |
| by Jens Ledet Jensen). |
| |
| • plot(<lm>, which = *) now correctly labels the contour lines for |
| the standardized residuals for which = 6. It also takes the |
| correct p in case of singularities (also for which = 5). |
| (PR#17161) |
| |
| • xtabs(~ exclude) no longer fails from wrong scope, thanks to |
| Suharto Anggono's PR#17147. |
| |
| • Reference class calls to methods() did not re-analyse previously |
| defined methods, meaning that calls to methods defined later |
| would fail. (Reported by Charles Tilford). |
| |
| • findInterval(x, vec, left.open = TRUE) misbehaved in some cases. |
| (Reported by Dmitriy Chernykh.) |
| |
| CHANGES IN R 3.3.1: |
| |
| BUG FIXES: |
| |
| • R CMD INSTALL and hence install.packages() gave an internal error |
| installing a package called description from a tarball on a |
| case-insensitive file system. |
| |
| • match(x, t) (and hence x %in% t) failed when x was of length one, |
| and either character and x and t only differed in their Encoding |
| or when x and t where complex with NAs or NaNs. (PR#16885.) |
| |
| • unloadNamespace(ns) also works again when ns is a ‘namespace’, as |
| from getNamespace(). |
| |
| • rgamma(1, Inf) or rgamma(1, 0, 0) no longer give NaN but the |
| correct limit. |
| |
| • length(baseenv()) is correct now. |
| |
| • pretty(d, ..) for date-time d rarely failed when "halfmonth" time |
| steps were tried (PR#16923) and on ‘inaccurate’ platforms such as |
| 32-bit Windows or a configuration with --disable-long-double; see |
| comment #15 of PR#16761. |
| |
| • In text.default(x, y, labels), the rarely(?) used default for |
| labels is now correct also for the case of a 2-column matrix x |
| and missing y. |
| |
| • as.factor(c(a = 1L)) preserves names() again as in R < 3.1.0. |
| |
| • strtrim(""[0], 0[0]) now works. |
| |
| • Use of Ctrl-C to terminate a reverse incremental search started |
| by Ctrl-R in the readline-based Unix terminal interface is now |
| supported when R was compiled against readline >= 6.0 (Ctrl-G |
| always worked). (PR#16603) |
| |
| • diff(<difftime>) now keeps the "units" attribute, as subtraction |
| already did, PR#16940. |
| |
| CHANGES IN R 3.3.0: |
| |
| SIGNIFICANT USER-VISIBLE CHANGES: |
| |
| • nchar(x, *)'s argument keepNA governing how the result for NAs in |
| x is determined, gets a new default keepNA = NA which returns NA |
| where x is NA, except for type = "width" which still returns 2, |
| the formatting / printing width of NA. |
| |
| • All builds have support for https: URLs in the default methods |
| for download.file(), url() and code making use of them. |
| |
| Unfortunately that cannot guarantee that any particular https: |
| URL can be accessed. For example, server and client have to |
| successfully negotiate a cryptographic protocol (TLS/SSL, ...) |
| and the server's identity has to be verifiable _via_ the |
| available certificates. Different access methods may allow |
| different protocols or use private certificate bundles: we |
| encountered a https: CRAN mirror which could be accessed by one |
| browser but not by another nor by download.file() on the same |
| Linux machine. |
| |
| NEW FEATURES: |
| |
| • The print method for methods() gains a byclass argument. |
| |
| • New functions validEnc() and validUTF8() to give access to the |
| validity checks for inputs used by grep() and friends. |
| |
| • Experimental new functionality for S3 method checking, notably |
| isS3method(). |
| |
| Also, the names of the R ‘language elements’ are exported as |
| character vector tools::langElts. |
| |
| • str(x) now displays "Time-Series" also for matrix (multivariate) |
| time-series, i.e. when is.ts(x) is true. |
| |
| • (Windows only) The GUI menu item to install local packages now |
| accepts *.tar.gz files as well as *.zip files (but defaults to |
| the latter). |
| |
| • New programmeR's utility function chkDots(). |
| |
| • D() now signals an error when given invalid input, rather than |
| silently returning NA. (Request of John Nash.) |
| |
| • formula objects are slightly more “first class”: e.g., formula() |
| or new("formula", y ~ x) are now valid. Similarly, for "table", |
| "ordered" and "summary.table". Packages defining S4 classes with |
| the above S3/S4 classes as slots should be reinstalled. |
| |
| • New function strrep() for repeating the elements of a character |
| vector. |
| |
| • rapply() preserves attributes on the list when how = "replace". |
| |
| • New S3 generic function sigma() with methods for extracting the |
| estimated standard deviation aka “residual standard deviation” |
| from a fitted model. |
| |
| • news() now displays R and package news files within the HTML help |
| system if it is available. If no news file is found, a visible |
| NULL is returned to the console. |
| |
| • as.raster(x) now also accepts raw arrays x assuming values in |
| 0:255. |
| |
| • Subscripting of matrix/array objects of type "expression" is now |
| supported. |
| |
| • type.convert("i") now returns a factor instead of a complex value |
| with zero real part and missing imaginary part. |
| |
| • Graphics devices cairo_pdf() and cairo_ps() now allow non-default |
| values of the cairographics ‘fallback resolution’ to be set. |
| |
| This now defaults to 300 on all platforms: that is the default |
| documented by cairographics, but apparently was not used by all |
| system installations. |
| |
| • file() gains an explicit method argument rather than implicitly |
| using getOption("url.method", "default"). |
| |
| • Thanks to a patch from Tomas Kalibera, x[x != 0] is now typically |
| faster than x[which(x != 0)] (in the case where x has no NAs, the |
| two are equivalent). |
| |
| • read.table() now always uses the names for a named colClasses |
| argument (previously names were only used when colClasses was too |
| short). (In part, wish of PR#16478.) |
| |
| • (Windows only) download.file() with default method = "auto" and a |
| ftps:// URL chooses "libcurl" if that is available. |
| |
| • The out-of-the box Bioconductor mirror has been changed to one |
| using https://: use chooseBioCmirror() to choose a http:// mirror |
| if required. |
| |
| • The data frame and formula methods for aggregate() gain a drop |
| argument. |
| |
| • available.packages() gains a repos argument. |
| |
| • The undocumented switching of methods for url() on https: and |
| ftps: URLs is confined to method = "default" (and documented). |
| |
| • smoothScatter() gains a ret.selection argument. |
| |
| • qr() no longer has a ... argument to pass additional arguments to |
| methods. |
| |
| • [ has a method for class "table". |
| |
| • It is now possible (again) to replayPlot() a display list |
| snapshot that was created by recordPlot() in a different R |
| session. |
| |
| It is still not a good idea to use snapshots as a persistent |
| storage format for R plots, but it is now not completely silly to |
| use a snapshot as a format for transferring an R plot between two |
| R sessions. |
| |
| The underlying changes mean that packages providing graphics |
| devices (e.g., Cairo, RSvgDevice, cairoDevice, tikzDevice) will |
| need to be reinstalled. |
| |
| Code for restoring snapshots was contributed by Jeroen Ooms and |
| JJ Allaire. |
| |
| Some testing code is available at <URL: |
| https://github.com/pmur002/R-display-list>. |
| |
| • tools::undoc(dir = D) and codoc(dir = D) now also work when D is |
| a directory whose normalizePath()ed version does not end in the |
| package name, e.g. from a symlink. |
| |
| • abbreviate() has more support for multi-byte character sets - it |
| no longer removes bytes within characters and knows about Latin |
| vowels with accents. It is still only really suitable for (most) |
| European languages, and still warns on non-ASCII input. |
| |
| abbreviate(use.classes = FALSE) is now implemented, and that is |
| more suitable for non-European languages. |
| |
| • match(x, table) is faster (sometimes by an order of magnitude) |
| when x is of length one and incomparables is unchanged, thanks to |
| Peter Haverty (PR#16491). |
| |
| • More consistent, partly not back-compatible behavior of NA and |
| NaN coercion to complex numbers, operations less often resulting |
| in complex NA (NA_complex_). |
| |
| • lengths() considers methods for length and [[ on x, so it should |
| work automatically on any objects for which appropriate methods |
| on those generics are defined. |
| |
| • The logic for selecting the default screen device on OS X has |
| been simplified: it is now quartz() if that is available even if |
| environment variable DISPLAY has been set by the user. |
| |
| The choice can easily be overridden _via_ environment variable |
| R_INTERACTIVE_DEVICE. |
| |
| • On Unix-like platforms which support the getline C library |
| function, system(*, intern = TRUE) no longer truncates (output) |
| lines longer than 8192 characters, thanks to Karl Millar. |
| (PR#16544) |
| |
| • rank() gains a ties.method = "last" option, for convenience (and |
| symmetry). |
| |
| • regmatches(invert = NA) can now be used to extract both |
| non-matched and matched substrings. |
| |
| • data.frame() gains argument fix.empty.names; as.data.frame.list() |
| gets new cut.names, col.names and fix.empty.names. |
| |
| • plot(x ~ x, *) now warns that it is the same as plot(x ~ 1, *). |
| |
| • recordPlot() has new arguments load and attach to allow package |
| names to be stored as part of a recorded plot. replayPlot() has |
| new argument reloadPkgs to load/attach any package names that |
| were stored as part of a recorded plot. |
| |
| • S4 dispatch works within calls to .Internal(). This means |
| explicit S4 generics are no longer needed for unlist() and |
| as.vector(). |
| |
| • Only font family names starting with "Hershey" (and not "Her" as |
| before) are given special treatment by the graphics engine. |
| |
| • S4 values are automatically coerced to vector (_via_ as.vector) |
| when subassigned into atomic vectors. |
| |
| • findInterval() gets a left.open option. |
| |
| • The version of LAPACK included in the sources has been updated to |
| 3.6.0, including those ‘deprecated’ routines which were |
| previously included. _Ca_ 40 double-complex routines have been |
| added at the request of a package maintainer. |
| |
| As before, the details of what is included are in |
| src/modules/lapack/README and this now gives information on |
| earlier additions. |
| |
| • tapply() has been made considerably more efficient without |
| changing functionality, thanks to proposals from Peter Haverty |
| and Suharto Anggono. (PR#16640) |
| |
| • match.arg(arg) (the one-argument case) is faster; so is |
| sort.int(). (PR#16652) |
| |
| • The format method for object_size objects now also accepts |
| “binary” units such as "KiB" and e.g., "Tb". (Partly from |
| PR#16649.) |
| |
| • Profiling now records calls of the form foo::bar and some similar |
| cases directly rather than as calls to <Anonymous>. Contributed |
| by Winston Chang. |
| |
| • New string utilities startsWith(x, prefix) and endsWith(x, |
| suffix). Also provide speedups for some grepl("^...", *) uses |
| (related to proposals in PR#16490). |
| |
| • Reference class finalizers run at exit, as well as on garbage |
| collection. |
| |
| • Avoid parallel dependency on stats for port choice and random |
| number seeds. (PR#16668) |
| |
| • The radix sort algorithm and implementation from data.table |
| (forder) replaces the previous radix (counting) sort and adds a |
| new method for order(). Contributed by Matt Dowle and Arun |
| Srinivasan, the new algorithm supports logical, integer (even |
| with large values), real, and character vectors. It outperforms |
| all other methods, but there are some caveats (see ?sort). |
| |
| • The order() function gains a method argument for choosing between |
| "shell" and "radix". |
| |
| • New function grouping() returns a permutation that stably |
| rearranges data so that identical values are adjacent. The |
| return value includes extra partitioning information on the |
| groups. The implementation came included with the new radix |
| sort. |
| |
| • rhyper(nn, m, n, k) no longer returns NA when one of the three |
| parameters exceeds the maximal integer. |
| |
| • switch() now warns when no alternatives are provided. |
| |
| • parallel::detectCores() now has default logical = TRUE on all |
| platforms - as this was the default on Windows, this change only |
| affects Sparc Solaris. |
| |
| Option logical = FALSE is now supported on Linux and recent |
| versions of OS X (for the latter, thanks to a suggestion of Kyaw |
| Sint). |
| |
| • hist() for "Date" or "POSIXt" objects would sometimes give |
| misleading labels on the breaks, as they were set to the day |
| before the start of the period being displayed. The display |
| format has been changed, and the shift of the start day has been |
| made conditional on right = TRUE (the default). (PR#16679) |
| |
| • R now uses a new version of the logo (donated to the R Foundation |
| by RStudio). It is defined in .svg format, so will resize |
| without unnecessary degradation when displayed on HTML |
| pages-there is also a vector PDF version. Thanks to Dirk |
| Eddelbuettel for producing the corresponding X11 icon. |
| |
| • New function .traceback() returns the stack trace which |
| traceback() prints. |
| |
| • lengths() dispatches internally. |
| |
| • dotchart() gains a pt.cex argument to control the size of points |
| separately from the size of plot labels. Thanks to Michael |
| Friendly and Milan Bouchet-Valat for ideas and patches. |
| |
| • as.roman(ch) now correctly deals with more diverse character |
| vectors ch; also arithmetic with the resulting roman numbers |
| works in more cases. (PR#16779) |
| |
| • prcomp() gains a new option rank. allowing to directly aim for |
| less than min(n,p) PC's. The summary() and its print() method |
| have been amended, notably for this case. |
| |
| • gzcon() gains a new option text, which marks the connection as |
| text-oriented (so e.g. pushBack() works). It is still always |
| opened in binary mode. |
| |
| • The import() namespace directive now accepts an argument except |
| which names symbols to exclude from the imports. The except |
| expression should evaluate to a character vector (after |
| substituting symbols for strings). See Writing R Extensions. |
| |
| • New convenience function Rcmd() in package tools for invoking R |
| CMD tools from within R. |
| |
| • New functions makevars_user() and makevars_site() in package |
| tools to determine the location of the user and site specific |
| Makevars files for customizing package compilation. |
| |
| UTILITIES: |
| |
| • R CMD check has a new option --ignore-vignettes for use with |
| non-Sweave vignettes whose VignetteBuilder package is not |
| available. |
| |
| • R CMD check now by default checks code usage (_via_ codetools) |
| with only the base package attached. Functions from default |
| packages other than base which are used in the package code but |
| not imported are reported as undefined globals, with a suggested |
| addition to the NAMESPACE file. |
| |
| • R CMD check --as-cran now also checks DOIs in package CITATION |
| and Rd files. |
| |
| • R CMD Rdconv and R CMD Rd2pdf each have a new option |
| --RdMacros=pkglist which allows Rd macros to be specified before |
| processing. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • The previously included versions of zlib, bzip2, xz and PCRE have |
| been removed, so suitable external (usually system) versions are |
| required (see the ‘R Installation and Administration’ manual). |
| |
| • The unexported and undocumented Windows-only devices cairo_bmp(), |
| cairo_png() and cairo_tiff() have been removed. (These devices |
| should be used as e.g. bmp(type = "cairo").) |
| |
| • (Windows only) Function setInternet2() has no effect and will be |
| removed in due course. The choice between methods "internal" and |
| "wininet" is now made by the method arguments of url() and |
| download.file() and their defaults can be set _via_ options. The |
| out-of-the-box default remains "wininet" (as it has been since R |
| 3.2.2). |
| |
| • [<- with an S4 value into a list currently embeds the S4 object |
| into its own list such that the end result is roughly equivalent |
| to using [[<-. That behavior is deprecated. In the future, the |
| S4 value will be coerced to a list with as.list(). |
| |
| • Package tools' functions package.dependencies(), pkgDepends(), |
| etc are deprecated now, mostly in favor of package_dependencies() |
| which is both more flexible and efficient. |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • Support for very old versions of valgrind (e.g., 3.3.0) has been |
| removed. |
| |
| • The included libtool script (generated by configure) has been |
| updated to version 2.4.6 (from 2.2.6a). |
| |
| • libcurl version 7.28.0 or later with support for the https |
| protocol is required for installation (except on Windows). |
| |
| • BSD networking is now required (except on Windows) and so |
| capabilities("http/ftp") is always true. |
| |
| • configure uses pkg-config for PNG, TIFF and JPEG where this is |
| available. This should work better with multiple installs and |
| with those using static libraries. |
| |
| • The minimum supported version of OS X is 10.6 (‘Snow Leopard’): |
| even that has been unsupported by Apple since 2012. |
| |
| • The configure default on OS X is --disable-R-framework: enable |
| this if you intend to install under /Library/Frameworks and use |
| with R.app. |
| |
| • The minimum preferred version of PCRE has since R 3.0.0 been 8.32 |
| (released in Nov 2012). Versions 8.10 to 8.31 are now deprecated |
| (with warnings from configure), but will still be accepted until |
| R 3.4.0. |
| |
| • configure looks for C functions __cospi, __sinpi and __tanpi and |
| uses these if cospi _etc_ are not found. (OS X is the main |
| instance.) |
| |
| • (Windows) R is now built using gcc 4.9.3. This build will |
| require recompilation of at least those packages that include C++ |
| code, and possibly others. A build of R-devel using the older |
| toolchain will be temporarily available for comparison purposes. |
| |
| During the transition, the environment variable R_COMPILED_BY has |
| been defined to indicate which toolchain was used to compile R |
| (and hence, which should be used to compile code in packages). |
| The COMPILED_BY variable described below will be a permanent |
| replacement for this. |
| |
| • (Windows) A make and R CMD config variable named COMPILED_BY has |
| been added. This indicates which toolchain was used to compile R |
| (and hence, which should be used to compile code in packages). |
| |
| PACKAGE INSTALLATION: |
| |
| • The make macro AWK which used to be made available to files such |
| as src/Makefile is no longer set. |
| |
| C-LEVEL FACILITIES: |
| |
| • The API call logspace_sum introduced in R 3.2.0 is now remapped |
| as an entry point to Rf_logspace_sum, and its first argument has |
| gained a const qualifier. (PR#16470) |
| |
| Code using it will need to be reinstalled. |
| |
| Similarly, entry point log1pexp also defined in Rmath.h is |
| remapped there to Rf_log1pexp |
| |
| • R_GE_version has been increased to 11. |
| |
| • New API call R_orderVector1, a faster one-argument version of |
| R_orderVector. |
| |
| • When R headers such as R.h and Rmath.h are called from C++ code |
| in packages they include the C++ versions of system headers such |
| as <cmath> rather than the legacy headers such as <math.h>. |
| (Headers Rinternals.h and Rinterface.h already did, and inclusion |
| of system headers can still be circumvented by defining |
| NO_C_HEADERS, including as from this version for those two |
| headers.) |
| |
| The manual has long said that R headers should *not* be included |
| within an extern "C" block, and almost all the packages affected |
| by this change were doing so. |
| |
| • Including header S.h from C++ code would fail on some platforms, |
| and so gives a compilation error on all. |
| |
| • The deprecated header Rdefines.h is now compatible with defining |
| R_NO_REMAP. |
| |
| • The connections interface now includes a function |
| R_GetConnection() which allows packages implementing connections |
| to convert R connection objects to Rconnection handles. Code |
| which previously used the low-level R-internal getConnection() |
| entry point should switch. |
| |
| BUG FIXES: |
| |
| • C-level asChar(x) is fixed for when x is not a vector, and it |
| returns "TRUE"/"FALSE" instead of "T"/"F" for logical vectors. |
| |
| • The first arguments of .colSums() etc (with an initial dot) are |
| now named x rather than X (matching colSums()): thus error |
| messages are corrected. |
| |
| • A coef() method for class "maov" has been added to allow vcov() |
| to work with multivariate results. (PR#16380) |
| |
| • method = "libcurl" connections signal errors rather than |
| retrieving HTTP error pages (where the ISP reports the error). |
| |
| • xpdrows.data.frame() was not checking for unique row names; in |
| particular, this affected assignment to non-existing rows _via_ |
| numerical indexing. (PR#16570) |
| |
| • tail.matrix() did not work for zero rows matrices, and could |
| produce row “labels” such as "[1e+05,]". |
| |
| • Data frames with a column named "stringsAsFactors" now format and |
| print correctly. (PR#16580) |
| |
| • cor() is now guaranteed to return a value with absolute value |
| less than or equal to 1. (PR#16638) |
| |
| • Array subsetting now keeps names(dim(.)). |
| |
| • Blocking socket connection selection recovers more gracefully on |
| signal interrupts. |
| |
| • The data.frame method of rbind() construction row.names works |
| better in borderline integer cases, but may change the names |
| assigned. (PR#16666) |
| |
| • (X11 only) getGraphicsEvent() miscoded buttons and missed mouse |
| motion events. (PR#16700) |
| |
| • methods(round) now also lists round.POSIXt. |
| |
| • tar() now works with the default files = NULL. (PR#16716) |
| |
| • Jumps to outer contexts, for example in error recovery, now make |
| intermediate jumps to contexts where on.exit() actions are |
| established instead of trying to run all on.exit() actions before |
| jumping to the final target. This unwinds the stack gradually, |
| releases resources held on the stack, and significantly reduces |
| the chance of a segfault when running out of C stack space. Error |
| handlers established using withCallingHandlers() and |
| options("error") specifications are ignored when handling a C |
| stack overflow error as attempting one of these would trigger a |
| cascade of C stack overflow errors. (These changes resolve |
| PR#16753.) |
| |
| • The spacing could be wrong when printing a complex array. |
| (Report and patch by Lukas Stadler.) |
| |
| • pretty(d, n, min.n, *) for date-time objects d works again in |
| border cases with large min.n, returns a labels attribute also |
| for small-range dates and in such cases its returned length is |
| closer to the desired n. (PR#16761) Additionally, it finally |
| does cover the range of d, as it always claimed. |
| |
| • tsp(x) <- NULL did not handle correctly objects inheriting from |
| both "ts" and "mts". (PR#16769) |
| |
| • install.packages() could give false errors when |
| options("pkgType") was "binary". (Reported by Jose Claudio |
| Faria.) |
| |
| • A bug fix in R 3.0.2 fixed problems with locator() in X11, but |
| introduced problems in Windows. Now both should be fixed. |
| (PR#15700) |
| |
| • download.file() with method = "wininet" incorrectly warned of |
| download file length difference when reported length was unknown. |
| (PR#16805) |
| |
| • diag(NULL, 1) crashed because of missed type checking. |
| (PR#16853) |
| |
| CHANGES IN R 3.2.5: |
| |
| BUG FIXES: |
| |
| • format.POSIXlt() behaved incorrectly in R 3.2.4. E.g. the output |
| of format(as.POSIXlt(paste0(1940:2000, "-01-01"), tz = "CET"), |
| usetz = TRUE) ended in two "CEST" time formats. |
| |
| CHANGES IN R 3.2.4: |
| |
| NEW FEATURES: |
| |
| • install.packages() and related functions now give a more |
| informative warning when an attempt is made to install a base |
| package. |
| |
| • summary(x) now prints with less rounding when x contains infinite |
| values. (Request of PR#16620.) |
| |
| • provideDimnames() gets an optional unique argument. |
| |
| • shQuote() gains type = "cmd2" for quoting in cmd.exe in Windows. |
| (Response to PR#16636.) |
| |
| • The data.frame method of rbind() gains an optional argument |
| stringsAsFactors (instead of only depending on |
| getOption("stringsAsFactors")). |
| |
| • smooth(x, *) now also works for long vectors. |
| |
| • tools::texi2dvi() has a workaround for problems with the texi2dvi |
| script supplied by texinfo 6.1. |
| |
| It extracts more error messages from the LaTeX logs when in |
| emulation mode. |
| |
| UTILITIES: |
| |
| • R CMD check will leave a log file build_vignettes.log from the |
| re-building of vignettes in the .Rcheck directory if there is a |
| problem, and always if environment variable |
| _R_CHECK_ALWAYS_LOG_VIGNETTE_OUTPUT_ is set to a true value. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • Use of SUPPORT_OPENMP from header Rconfig.h is deprecated in |
| favour of the standard OpenMP define _OPENMP. |
| |
| (This has been the recommendation in the manual for a while now.) |
| |
| • The make macro AWK which is long unused by R itself but recorded |
| in file etc/Makeconf is deprecated and will be removed in R |
| 3.3.0. |
| |
| • The C header file S.h is no longer documented: its use should be |
| replaced by R.h. |
| |
| BUG FIXES: |
| |
| • kmeans(x, centers = <1-row>) now works. (PR#16623) |
| |
| • Vectorize() now checks for clashes in argument names. (PR#16577) |
| |
| • file.copy(overwrite = FALSE) would signal a successful copy when |
| none had taken place. (PR#16576) |
| |
| • ngettext() now uses the same default domain as gettext(). |
| (PR#14605) |
| |
| • array(.., dimnames = *) now warns about non-list dimnames and, |
| from R 3.3.0, will signal the same error for invalid dimnames as |
| matrix() has always done. |
| |
| • addmargins() now adds dimnames for the extended margins in all |
| cases, as always documented. |
| |
| • heatmap() evaluated its add.expr argument in the wrong |
| environment. (PR#16583) |
| |
| • require() etc now give the correct entry of lib.loc in the |
| warning about an old version of a package masking a newer |
| required one. |
| |
| • The internal deparser did not add parentheses when necessary, |
| e.g. before [] or [[]]. (Reported by Lukas Stadler; additional |
| fixes included as well). |
| |
| • as.data.frame.vector(*, row.names=*) no longer produces |
| ‘corrupted’ data frames from row names of incorrect length, but |
| rather warns about them. This will become an error. |
| |
| • url connections with method = "libcurl" are destroyed properly. |
| (PR#16681) |
| |
| • withCallingHandler() now (again) handles warnings even during S4 |
| generic's argument evaluation. (PR#16111) |
| |
| • deparse(..., control = "quoteExpressions") incorrectly quoted |
| empty expressions. (PR#16686) |
| |
| • format()ting datetime objects ("POSIX[cl]?t") could segfault or |
| recycle wrongly. (PR#16685) |
| |
| • plot.ts(<matrix>, las = 1) now does use las. |
| |
| • saveRDS(*, compress = "gzip") now works as documented. |
| (PR#16653) |
| |
| • (Windows only) The Rgui front end did not always initialize the |
| console properly, and could cause R to crash. (PR#16698) |
| |
| • dummy.coef.lm() now works in more cases, thanks to a proposal by |
| Werner Stahel (PR#16665). In addition, it now works for |
| multivariate linear models ("mlm", manova) thanks to a proposal |
| by Daniel Wollschlaeger. |
| |
| • The as.hclust() method for "dendrogram"s failed often when there |
| were ties in the heights. |
| |
| • reorder() and midcache.dendrogram() now are non-recursive and |
| hence applicable to somewhat deeply nested dendrograms, thanks to |
| a proposal by Suharto Anggono in PR#16424. |
| |
| • cor.test() now calculates very small p values more accurately |
| (affecting the result only in extreme not statistically relevant |
| cases). (PR#16704) |
| |
| • smooth(*, do.ends=TRUE) did not always work correctly in R |
| versions between 3.0.0 and 3.2.3. |
| |
| • pretty(D) for date-time objects D now also works well if range(D) |
| is (much) smaller than a second. In the case of only one unique |
| value in D, the pretty range now is more symmetric around that |
| value than previously. |
| |
| Similarly, pretty(dt) no longer returns a length 5 vector with |
| duplicated entries for Date objects dt which span only a few |
| days. |
| |
| • The figures in help pages such as ?points were accidentally |
| damaged, and did not appear in R 3.2.3. (PR#16708) |
| |
| • available.packages() sometimes deleted the wrong file when |
| cleaning up temporary files. (PR#16712) |
| |
| • The X11() device sometimes froze on Red Hat Enterprise Linux 6. |
| It now waits for MapNotify events instead of Expose events, |
| thanks to Siteshwar Vashisht. (PR#16497) |
| |
| • [dpqr]nbinom(*, size=Inf, mu=.) now works as limit case, for |
| ‘dpq’ as the Poisson. (PR#16727) |
| pnbinom() no longer loops infinitely in border cases. |
| |
| • approxfun(*, method="constant") and hence ecdf() which calls the |
| former now correctly “predict” NaN values as NaN. |
| |
| • summary.data.frame() now displays NAs in Date columns in all |
| cases. (PR#16709) |
| |
| CHANGES IN R 3.2.3: |
| |
| NEW FEATURES: |
| |
| • Some recently-added Windows time zone names have been added to |
| the conversion table used to convert these to Olson names. |
| (Including those relating to changes for Russia in Oct 2014, as |
| in PR#16503.) |
| |
| • (Windows) Compatibility information has been added to the |
| manifests for Rgui.exe, Rterm.exe and Rscript.exe. This should |
| allow win.version() and Sys.info() to report the actual Windows |
| version up to Windows 10. |
| |
| • Windows "wininet" FTP first tries EPSV / PASV mode rather than |
| only using active mode (reported by Dan Tenenbaum). |
| |
| • which.min(x) and which.max(x) may be much faster for logical and |
| integer x and now also work for long vectors. |
| |
| • The ‘emulation’ part of tools::texi2dvi() has been somewhat |
| enhanced, including supporting quiet = TRUE. It can be selected |
| by texi2dvi = "emulation". |
| |
| (Windows) MiKTeX removed its texi2dvi.exe command in Sept 2015: |
| tools::texi2dvi() tries texify.exe if it is not found. |
| |
| • (Windows only) Shortcuts for printing and saving have been added |
| to menus in Rgui.exe. (Request of PR#16572.) |
| |
| • loess(..., iterTrace=TRUE) now provides diagnostics for |
| robustness iterations, and the print() method for |
| summary(<loess>) shows slightly more. |
| |
| • The included version of PCRE has been updated to 8.38, a bug-fix |
| release. |
| |
| • View() now displays nested data frames in a more friendly way. |
| (Request with patch in PR#15915.) |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The included configuration code for libintl has been updated to |
| that from gettext version 0.19.5.1 - this should only affect how |
| an external library is detected (and the only known instance is |
| under OpenBSD). (Wish of PR#16464.) |
| |
| • configure has a new argument --disable-java to disable the checks |
| for Java. |
| |
| • The configure default for MAIN_LDFLAGS has been changed for the |
| FreeBSD, NetBSD and Hurd OSes to one more likely to work with |
| compilers other than gcc (FreeBSD 10 defaults to clang). |
| |
| • configure now supports the OpenMP flags -fopenmp=libomp (clang) |
| and -qopenmp (Intel C). |
| |
| • Various macros can be set to override the default behaviour of |
| configure when detecting OpenMP: see file config.site. |
| |
| • Source installation on Windows has been modified to allow for |
| MiKTeX installations without texi2dvi.exe. See file |
| MkRules.dist. |
| |
| BUG FIXES: |
| |
| • regexpr(pat, x, perl = TRUE) with Python-style named capture did |
| not work correctly when x contained NA strings. (PR#16484) |
| |
| • The description of dataset ToothGrowth has been |
| improved/corrected. (PR#15953) |
| |
| • model.tables(type = "means") and hence TukeyHSD() now support |
| "aov" fits without an intercept term. (PR#16437) |
| |
| • close() now reports the status of a pipe() connection opened with |
| an explicit open argument. (PR#16481) |
| |
| • Coercing a list without names to a data frame is faster if the |
| elements are very long. (PR#16467) |
| |
| • (Unix-only) Under some rare circumstances piping the output from |
| Rscript or R -f could result in attempting to close the input |
| file twice, possibly crashing the process. (PR#16500) |
| |
| • (Windows) Sys.info() was out of step with win.version() and did |
| not report Windows 8. |
| |
| • topenv(baseenv()) returns baseenv() again as in R 3.1.0 and |
| earlier. This also fixes compilerJIT(3) when used in .Rprofile. |
| |
| • detach()ing the methods package keeps .isMethodsDispatchOn() |
| true, as long as the methods namespace is not unloaded. |
| |
| • Removed some spurious warnings from configure about the |
| preprocessor not finding header files. (PR#15989) |
| |
| • rchisq(*, df=0, ncp=0) now returns 0 instead of NaN, and |
| dchisq(*, df=0, ncp=*) also no longer returns NaN in limit cases |
| (where the limit is unique). (PR#16521) |
| |
| • pchisq(*, df=0, ncp > 0, log.p=TRUE) no longer underflows (for |
| ncp > ~60). |
| |
| • nchar(x, "w") returned -1 for characters it did not know about |
| (e.g. zero-width spaces): it now assumes 1. It now knows about |
| most zero-width characters and a few more double-width |
| characters. |
| |
| • Help for which.min() is now more precise about behavior with |
| logical arguments. (PR#16532) |
| |
| • The print width of character strings marked as "latin1" or |
| "bytes" was in some cases computed incorrectly. |
| |
| • abbreviate() did not give names to the return value if minlength |
| was zero, unlike when it was positive. |
| |
| • (Windows only) dir.create() did not always warn when it failed to |
| create a directory. (PR#16537) |
| |
| • When operating in a non-UTF-8 multibyte locale (e.g. an East |
| Asian locale on Windows), grep() and related functions did not |
| handle UTF-8 strings properly. (PR#16264) |
| |
| • read.dcf() sometimes misread lines longer than 8191 characters. |
| (Reported by Hervé Pagès with a patch.) |
| |
| • within(df, ..) no longer drops columns whose name start with a |
| ".". |
| |
| • The built-in HTTP server converted entire Content-Type to |
| lowercase including parameters which can cause issues for |
| multi-part form boundaries (PR#16541). |
| |
| • Modifying slots of S4 objects could fail when the methods package |
| was not attached. (PR#16545) |
| |
| • splineDesign(*, outer.ok=TRUE) (splines) is better now |
| (PR#16549), and interpSpline() now allows sparse=TRUE for speedup |
| with non-small sizes. |
| |
| • If the expression in the traceback was too long, traceback() did |
| not report the source line number. (Patch by Kirill Müller.) |
| |
| • The browser did not truncate the display of the function when |
| exiting with options("deparse.max.lines") set. (PR#16581) |
| |
| • When bs(*, Boundary.knots=) had boundary knots inside the data |
| range, extrapolation was somewhat off. (Patch by Trevor Hastie.) |
| |
| • var() and hence sd() warn about factor arguments which are |
| deprecated now. (PR#16564) |
| |
| • loess(*, weights = *) stored wrong weights and hence gave |
| slightly wrong predictions for newdata. (PR#16587) |
| |
| • aperm(a, *) now preserves names(dim(a)). |
| |
| • poly(x, ..) now works when either raw=TRUE or coef is specified. |
| (PR#16597) |
| |
| • data(package=*) is more careful in determining the path. |
| |
| • prettyNum(*, decimal.mark, big.mark): fixed bug introduced when |
| fixing PR#16411. |
| |
| CHANGES IN R 3.2.2: |
| |
| SIGNIFICANT USER-VISIBLE CHANGES: |
| |
| • It is now easier to use secure downloads from https:// URLs on |
| builds which support them: no longer do non-default options need |
| to be selected to do so. In particular, packages can be |
| installed from repositories which offer https:// URLs, and those |
| listed by setRepositories() now do so (for some of their |
| mirrors). |
| |
| Support for https:// URLs is available on Windows, and on other |
| platforms if support for libcurl was compiled in and if that |
| supports the https protocol (system installations can be expected |
| to do). So https:// support can be expected except on rather old |
| OSes (an example being OS X ‘Snow Leopard’, where a non-system |
| version of libcurl can be used). |
| |
| (Windows only) The default method for accessing URLs _via_ |
| download.file() and url() has been changed to be "wininet" using |
| Windows API calls. This changes the way proxies need to be set |
| and security settings made: there have been some reports of ftp: |
| sites being inaccessible under the new default method (but the |
| previous methods remain available). |
| |
| NEW FEATURES: |
| |
| • cmdscale() gets new option list. for increased flexibility when a |
| list should be returned. |
| |
| • configure now supports texinfo version 6.0, which (unlike the |
| change from 4.x to 5.0) is a minor update. (Wish of PR#16456.) |
| |
| • (Non-Windows only) download.file() with default method = "auto" |
| now chooses "libcurl" if that is available and a https:// or |
| ftps:// URL is used. |
| |
| • (Windows only) setInternet2(TRUE) is now the default. The |
| command-line option --internet2 and environment variable |
| R_WIN_INTERNET2 are now ignored. |
| |
| Thus by default the "internal" method for download.file() and |
| url() uses the "wininet" method: to revert to the previous |
| default use setInternet2(FALSE). |
| |
| This means that https:// URLs can be read by default by |
| download.file() (they have been readable by file() and url() |
| since R 3.2.0). |
| |
| There are implications for how proxies need to be set (see |
| ?download.file). |
| |
| • chooseCRANmirror() and chooseBioCmirror() now offer HTTPS mirrors |
| in preference to HTTP mirrors. This changes the interpretation |
| of their ind arguments: see their help pages. |
| |
| • capture.output() gets optional arguments type and split to pass |
| to sink(), and hence can be used to capture messages. |
| |
| C-LEVEL FACILITIES: |
| |
| • Header Rconfig.h now defines HAVE_ALLOCA_H if the platform has |
| the alloca.h header (it is needed to define alloca on Solaris and |
| AIX, at least: see ‘Writing R Extensions’ for how to use it). |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The libtool script generated by configure has been modified to |
| support FreeBSD >= 10 (PR#16410). |
| |
| BUG FIXES: |
| |
| • The HTML help page links to demo code failed due to a change in R |
| 3.2.0. (PR#16432) |
| |
| • If the na.action argument was used in model.frame(), the original |
| data could be modified. (PR#16436) |
| |
| • getGraphicsEvent() could cause a crash if a graphics window was |
| closed while it was in use. (PR#16438) |
| |
| • matrix(x, nr, nc, byrow = TRUE) failed if x was an object of type |
| "expression". |
| |
| • strptime() could overflow the allocated storage on the C stack |
| when the timezone had a non-standard format much longer than the |
| standard formats. (Part of PR#16328.) |
| |
| • options(OutDec = s) now signals a warning (which will become an |
| error in the future) when s is not a string with exactly one |
| character, as that has been a documented requirement. |
| |
| • prettyNum() gains a new option input.d.mark which together with |
| other changes, e.g., the default for decimal.mark, fixes some |
| format()ting variants with non-default getOption("OutDec") such |
| as in PR#16411. |
| |
| • download.packages() failed for type equal to either "both" or |
| "binary". (Reported by Dan Tenenbaum.) |
| |
| • The dendrogram method of labels() is much more efficient for |
| large dendrograms, now using rapply(). (Comment #15 of PR#15215) |
| |
| • The "port" algorithm of nls() could give spurious errors. |
| (Reported by Radford Neal.) |
| |
| • Reference classes that inherited from reference classes in |
| another package could invalidate methods of the inherited class. |
| Fixing this requires adding the ability for methods to be |
| “external”, with the object supplied explicitly as the first |
| argument, named .self. See "Inter-Package Superclasses" in the |
| documentation. |
| |
| • readBin() could fail on the SPARC architecture due to alignment |
| issues. (Reported by Radford Neal.) |
| |
| • qt(*, df=Inf, ncp=.) now uses the natural qnorm() limit instead |
| of returning NaN. (PR#16475) |
| |
| • Auto-printing of S3 and S4 values now searches for print() in the |
| base namespace and show() in the methods namespace instead of |
| searching the global environment. |
| |
| • polym() gains a coefs = NULL argument and returns class "poly" |
| just like poly() which gets a new simple=FALSE option. They now |
| lead to correct predict()ions, e.g., on subsets of the original |
| data. (PR#16239) |
| |
| • rhyper(nn, <large>) now works correctly. (PR#16489) |
| |
| • ttkimage() did not (and could not) work so was removed. Ditto for |
| tkimage.cget() and tkimage.configure(). Added two Ttk widgets and |
| missing subcommands for Tk's image command: ttkscale(), |
| ttkspinbox(), tkimage.delete(), tkimage.height(), |
| tkimage.inuse(), tkimage.type(), tkimage.types(), |
| tkimage.width(). (PR#15372, PR#16450) |
| |
| • getClass("foo") now also returns a class definition when it is |
| found in the cache more than once. |
| |
| CHANGES IN R 3.2.1: |
| |
| NEW FEATURES: |
| |
| • utf8ToInt() now checks that its input is valid UTF-8 and returns |
| NA if it is not. |
| |
| • install.packages() now allows type = "both" with repos = NULL if |
| it can infer the type of file. |
| |
| • nchar(x, *) and nzchar(x) gain a new argument keepNA which |
| governs how the result for NAs in x is determined. For nzchar() |
| in general and nchar() in the R 3.2.x series, the default remains |
| FALSE which is fully back compatible. From R 3.3.0, nchar()'s |
| default will change to keepNA = NA and you are advised to |
| consider this for code portability. |
| |
| • news() more flexibly extracts dates from package NEWS.Rd files. |
| |
| • lengths(x) now also works (trivially) for atomic x and hence can |
| be used more generally as an efficient replacement of sapply(x, |
| length) and similar. |
| |
| • The included version of PCRE has been updated to 8.37, a bug-fix |
| release. |
| |
| • diag() no longer duplicates a matrix when extracting its |
| diagonal. |
| |
| • as.character.srcref() gains an argument to allow characters |
| corresponding to a range of source references to be extracted. |
| |
| BUG FIXES: |
| |
| • acf() and ccf() now guarantee values strictly in [-1,1] (instead |
| of sometimes very slightly outside). PR#15832. |
| |
| • as.integer("111111111111") now gives NA (with a warning) as it |
| does for the corresponding numeric or negative number coercions. |
| Further, as.integer(M + 0.1) now gives M (instead of NA) when M |
| is the maximal representable integer. |
| |
| • On some platforms nchar(x, "c") and nchar(x, "w") would return |
| values (possibly NA) for inputs which were declared to be UTF-8 |
| but were not, or for invalid strings without a marked encoding in |
| a multi-byte locale, rather than give an error. Additional |
| checks have been added to mitigate this. |
| |
| • apply(a, M, function(u) c(X = ., Y = .)) again has dimnames |
| containing "X" and "Y" (as in R < 3.2.0). |
| |
| • (Windows only) In some cases, the --clean option to R CMD INSTALL |
| could fail. (PR#16178) |
| |
| • (Windows only) choose.files() would occasionally include |
| characters from the result of an earlier call in the result of a |
| later one. (PR#16270) |
| |
| • A change in RSiteSearch() in R 3.2.0 caused it to submit invalid |
| URLs. (PR#16329) |
| |
| • Rscript and command line R silently ignored incomplete statements |
| at the end of a script; now they are reported as parse errors. |
| (PR#16350) |
| |
| • Parse data for very long strings was not stored. (PR#16354) |
| |
| • plotNode(), the workhorse of the plot method for "dendrogram"s is |
| no longer recursive, thanks to Suharto Anggono, and hence also |
| works for deeply nested dendrograms. (PR#15215) |
| |
| • The parser could overflow internally when given numbers in |
| scientific format with extremely large exponents. (PR#16358) |
| |
| • If the CRAN mirror was not set, install.packages(type = "both") |
| and related functions could repeatedly query the user for it. |
| (Part of PR#16362) |
| |
| • The low-level functions .rowSums() etc. did not check the length |
| of their argument, so could segfault. (PR#16367) |
| |
| • The quietly argument of library() is now correctly propagated |
| from .getRequiredPackages2(). |
| |
| • Under some circumstances using the internal PCRE when building R |
| from source would cause external libs such as -llzma to be |
| omitted from the main link. |
| |
| • The .Primitive default methods of the logic operators, i.e., !, & |
| and |, now give correct error messages when appropriate, e.g., |
| for `&`(TRUE) or `!`(). (PR#16385) |
| |
| • cummax(x) now correctly propagates NAs also when x is of type |
| integer and begins with an NA. |
| |
| • summaryRprof() could fail when the profile contained only two |
| records. (PR#16395) |
| |
| • HTML vignettes opened using vignette() did not support links into |
| the rest of the HTML help system. (Links worked properly when |
| the vignette was opened using browseVignettes() or from within |
| the help system.) |
| |
| • arima(*, xreg = .) (for d >= 1) computes estimated variances |
| based on a the number of effective observations as in R version |
| 3.0.1 and earlier. (PR#16278) |
| |
| • slotNames(.) is now correct for "signature" objects (mostly used |
| internally in methods). |
| |
| • On some systems, the first string comparison after a locale |
| change would result in NA. |
| |
| CHANGES IN R 3.2.0: |
| |
| NEW FEATURES: |
| |
| • anyNA() gains a recursive argument. |
| |
| • When x is missing and names is not false (including the default |
| value), Sys.getenv(x, names) returns an object of class "Dlist" |
| and hence prints tidily. |
| |
| • (Windows.) shell() no longer consults the environment variable |
| SHELL: too many systems have been encountered where it was set |
| incorrectly (usually to a path where software was compiled, not |
| where it was installed). R_SHELL, the preferred way to select a |
| non-default shell, can be used instead. |
| |
| • Some unusual arguments to embedFonts() can now be specified as |
| character vectors, and the defaults have been changed |
| accordingly. |
| |
| • Functions in the Summary group duplicate less. (PR#15798) |
| |
| • (Unix-alikes.) system(cmd, input = ) now uses |
| ‘shell-execution-environment’ redirection, which will be more |
| natural if cmd is not a single command (but requires a |
| POSIX-compliant shell). (Wish of PR#15508) |
| |
| • read.fwf() and read.DIF() gain a fileEncoding argument, for |
| convenience. |
| |
| • Graphics devices can add attributes to their description in |
| .Device and .Devices. Several of those included with R use a |
| "filepath" attribute. |
| |
| • pmatch() uses hashing in more cases and so is faster at the |
| expense of using more memory. (PR#15697) |
| |
| • pairs() gains new arguments to select sets of variables to be |
| plotted against each other. |
| |
| • file.info(, extra_cols = FALSE) allows a minimal set of columns |
| to be computed on Unix-alikes: on some systems without |
| properly-configured caching this can be significantly faster with |
| large file lists. |
| |
| • New function dir.exists() in package base to test efficiently |
| whether one or more paths exist and are directories. |
| |
| • dput() and friends gain new controls hexNumeric and digits17 |
| which output double and complex quantities as, respectively, |
| binary fractions (exactly, see sprintf("%a")) and as decimals |
| with up to 17 significant digits. |
| |
| • save(), saveRDS() and serialize() now support ascii = NA which |
| writes ASCII files using sprintf("%a") for double/complex |
| quantities. This is read-compatible with ascii = TRUE but avoids |
| binary->decimal->binary conversions with potential loss of |
| precision. Unfortunately the Windows C runtime's lack of C99 |
| compliance means that the format cannot be read correctly there |
| in R before 3.1.2. |
| |
| • The default for formatC(decimal.mark =) has been changed to be |
| getOption("OutDec"); this makes it more consistent with format() |
| and suitable for use in print methods, e.g. those for classes |
| "density", "ecdf", "stepfun" and "summary.lm". |
| |
| getOption("OutDec") is now consulted by the print method for |
| class "kmeans", by cut(), dendrogram(), plot.ts() and quantile() |
| when constructing labels and for the report from legend(trace = |
| TRUE). |
| |
| (In part, wish of PR#15819.) |
| |
| • printNum() and hence format() and formatC() give a warning if |
| big.mark and decimal.mark are set to the same value (period and |
| comma are not uncommonly used for each, and this is a check that |
| conventions have not got mixed). |
| |
| • merge() can create a result which uses long vectors on 64-bit |
| platforms. |
| |
| • dget() gains a new argument keep.source which defaults to FALSE |
| for speed (dput() and dget() are most often used for data objects |
| where this can make dget() many times faster). |
| |
| • Packages may now use a file of common macro definitions in their |
| help files, and may import definitions from other packages. |
| |
| • A number of macros have been added in the new share/Rd directory |
| for use in package overview help pages, and promptPackage() now |
| makes use of them. |
| |
| • tools::parse_Rd() gains a new permissive argument which converts |
| unrecognized macros into text. This is used by |
| utils:::format.bibentry to allow LaTeX markup to be ignored. |
| |
| • options(OutDec =) can now specify a multi-byte character, e.g., |
| options(OutDec = "\u00b7") in a UTF-8 locale. |
| |
| • is.recursive(x) is no longer true when x is an external pointer, |
| a weak reference or byte code; the first enables all.equal(x, x) |
| when x <- getClass(.). |
| |
| • ls() (aka objects()) and as.list.environment() gain a new |
| argument sorted. |
| |
| • The "source" attribute (which has not been added to functions by |
| R since before R version 2.14.0) is no longer treated as special. |
| |
| • Function returnValue() has been added to give on.exit() code |
| access to a function's return value for debugging purposes. |
| |
| • crossprod(x, y) allows more matrix coercions when x or y are |
| vectors, now equalling t(x) %*% y in these cases (also reported |
| by Radford Neal). Similarly, tcrossprod(x,y) and %*% work in |
| more cases with vector arguments. |
| |
| • Utility function dynGet() useful for detecting cycles, aka |
| infinite recursions. |
| |
| • The byte-code compiler and interpreter include new instructions |
| that allow many scalar subsetting and assignment and scalar |
| arithmetic operations to be handled more efficiently. This can |
| result in significant performance improvements in scalar |
| numerical code. |
| |
| • apply(m, 2, identity) is now the same as the matrix m when it has |
| _named_ row names. |
| |
| • A new function debuggingState() has been added, allowing to |
| temporarily turn off debugging. |
| |
| • example() gets a new optional argument run.donttest and |
| tools::Rd2ex() a corresponding commentDonttest, with a default |
| such that example(..) in help examples will run \donttest code |
| only if used interactively (a change in behaviour). |
| |
| • rbind.data.frame() gains an optional argument make.row.names, for |
| potential speedup. |
| |
| • New function extSoftVersion() to report on the versions of |
| third-party software in use in this session. Currently reports |
| versions of zlib, bzlib, the liblzma from xz, PCRE, ICU, TRE and |
| the iconv implementation. |
| |
| A similar function grSoftVersion() in package grDevices reports |
| on third-party graphics software. |
| |
| Function tcltk::tclVersion() reports the Tcl/Tk version. |
| |
| • Calling callGeneric() without arguments now works with primitive |
| generics to some extent. |
| |
| • vapply(x, FUN, FUN.VALUE) is more efficient notably for large |
| length(FUN.VALUE); as extension of PR#16061. |
| |
| • as.table() now allows tables with one or more dimensions of |
| length 0 (such as as.table(integer())). |
| |
| • names(x) <- NULL now clears the names of call and ... objects. |
| |
| • library() will report a warning when an insufficient dependency |
| version is masking a sufficient one later on the library search |
| path. |
| |
| • A new plot() method for class "raster" has been added. |
| |
| • New check_packages_in_dir_changes() function in package tools for |
| conveniently analyzing how changing sources impacts the check |
| results of their reverse dependencies. |
| |
| • Speed-up from Peter Haverty for ls() and |
| methods:::.requirePackage() speeding up package loading. |
| (PR#16133) |
| |
| • New get0() function, combining exists() and get() in one call, |
| for efficiency. |
| |
| • match.call() gains an envir argument for specifying the |
| environment from which to retrieve the ... in the call, if any; |
| this environment was wrong (or at least undesirable) when the |
| definition argument was a function. |
| |
| • topenv() has been made .Internal() for speedup, based on Peter |
| Haverty's proposal in PR#16140. |
| |
| • getOption() no longer calls options() in the main case. |
| |
| • Optional use of libcurl (version 7.28.0 from Oct 2012 or later) |
| for Internet access: |
| |
| • capabilities("libcurl") reports if this is available. |
| |
| • libcurlVersion() reports the version in use, and other |
| details of the "libcurl" build including which URL schemes it |
| supports. |
| |
| • curlGetHeaders() retrieves the headers for http://, https://, |
| ftp:// and ftps:// URLs: analysis of these headers can |
| provide insights into the `existence' of a URL (it might for |
| example be permanently redirected) and is so used in R CMD |
| check --as-cran. |
| |
| • download.file() has a new optional method "libcurl" which |
| will handle more URL schemes, follow redirections, and allows |
| simultaneous downloads of multiple URLs. |
| |
| • url() has a new method "libcurl" which handles more URL |
| schemes and follows redirections. The default method is |
| controlled by a new option url.method, which applies also to |
| the opening of URLs _via_ file() (which happens implicitly in |
| functions such as read.table.) |
| |
| • When file() or url() is invoked with a https:// or ftps:// |
| URL which the current method cannot handle, it switches to a |
| suitable method if one is available. |
| |
| • (Windows.) The DLLs internet.dll and internet2.dll have been |
| merged. In this version it is safe to switch (repeatedly) |
| between the internal and Windows internet functions within an R |
| session. |
| |
| The Windows internet functions are still selected by flag |
| --internet2 or setInternet2(). This can be overridden for an |
| url() connection _via_ its new method argument. |
| |
| download.file() has new method "wininet", selected as the default |
| by --internet2 or setInternet2(). |
| |
| • parent.env<- can no longer modify the parent of a locked |
| namespace or namespace imports environment. Contributed by Karl |
| Millar. |
| |
| • New function isNamespaceLoaded() for readability and speed. |
| |
| • names(env) now returns all the object names of an environment |
| env, equivalently to ls(env, all.names = TRUE, sorted = FALSE) |
| and also to the names of the corresponding list, |
| names(as.list(env, all.names = TRUE)). Note that although |
| names() returns a character vector, the names have no particular |
| ordering. |
| |
| • The memory manager now grows the heap more aggressively. This |
| reduces the number of garbage collections, in particular while |
| data or code are loaded, at the expense of slightly increasing |
| the memory footprint. |
| |
| • New function trimws() for removing leading/trailing whitespace. |
| |
| • cbind() and rbind() now consider S4 inheritance during S3 |
| dispatch and also obey deparse.level. |
| |
| • cbind() and rbind() will delegate recursively to methods::cbind2 |
| (methods::rbind2) when at least one argument is an S4 object and |
| S3 dispatch fails (due to ambiguity). |
| |
| • (Windows.) download.file(quiet = FALSE) now uses text rather |
| than Windows progress bars in non-interactive use. |
| |
| • New function hsearch_db() in package utils for building and |
| retrieving the help search database used by help.search(), along |
| with functions for inspecting the concepts and keywords in the |
| help search database. |
| |
| • New function .getNamespaceInfo(), a no-check version of |
| getNamespaceInfo() mostly for internal speedups. |
| |
| • The help search system now takes \keyword entries in Rd files |
| which are not standard keywords (as given in KEYWORDS in the R |
| documentation directory) as concepts. For standard keyword |
| entries the corresponding descriptions are additionally taken as |
| concepts. |
| |
| • New lengths() function for getting the lengths of all elements in |
| a list. |
| |
| • New function toTitleCase() in package tools, tailored to package |
| titles. |
| |
| • The matrix methods of cbind() and rbind() allow matrices as |
| inputs which have 2^31 or more elements. (For cbind(), wish of |
| PR#16198.) |
| |
| • The default method of image() has an explicit check for a numeric |
| or logical matrix (which was always required). |
| |
| • URLencode() will not by default encode further URLs which appear |
| to be already encoded. |
| |
| • BIC(mod) and BIC(mod, mod2) now give non-NA numbers for arima() |
| fitted models, as nobs(mod) now gives the number of “used” |
| observations for such models. This fixes PR#16198, quite |
| differently than proposed there. |
| |
| • The print() methods for "htest", "pairwise.htest" and |
| "power.htest" objects now have a digits argument defaulting to (a |
| function of) getOption("digits"), and influencing all printed |
| numbers coherently. Unavoidably, this changes the display of |
| such test results in some cases. |
| |
| • Code completion for namespaces now recognizes all loaded |
| namespaces, rather than only the ones that are also attached. |
| |
| • The code completion mechanism can now be replaced by a |
| user-specified completer function, for (temporary) situations |
| where the usual code completion is inappropriate. |
| |
| • unzip() will now warn if it is able to detect truncation when |
| unpacking a file of 4GB or more (related to PR#16243). |
| |
| • methods() reports S4 in addition to S3 methods; output is |
| simplified when the class argument is used. .S3methods() and |
| methods::.S4methods() report S3 and S4 methods separately. |
| |
| • Higher order functions such as the apply functions and Reduce() |
| now force arguments to the functions they apply in order to |
| eliminate undesirable interactions between lazy evaluation and |
| variable capture in closures. This resolves PR#16093. |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The \donttest sections of R's help files can be tested by |
| make check TEST_DONTTEST=TRUE . |
| |
| • It is possible to request the use of system valgrind headers |
| _via_ configure option --with-system-valgrind-headers: note the |
| possible future incompatibility of such headers discussed in the |
| 'R Installation and Administration' manual. (Wish of PR#16068.) |
| |
| • The included version of liblzma has been updated to xz-utils |
| 5.0.7 (minor bug fixes from 5.0.5). |
| |
| • configure options --with-system-zlib, --with-system-bzlib and |
| --with-system-pcre are now the default. For the time being there |
| is fallback to the versions included in the R sources if no |
| system versions are found or (unlikely) if they are too old. |
| |
| Linux users should check that the -devel or -dev versions of |
| packages zlib, bzip2/libbz2 and pcre as well as |
| xz-devel/liblzma-dev (or similar names) are installed. |
| |
| • configure by default looks for the texi2any script from texinfo |
| 5.1 or later, rather than the makeinfo program. (makeinfo is a |
| link to the Perl script texi2any in texinfo 5.x.) |
| |
| • R CMD INSTALL gains an option --built-timestamp=STAMP allowing |
| 100% reproducible package building, thanks to Dirk Eddelbuettel. |
| |
| UTILITIES: |
| |
| • There is support for testing the \dontrun and \donttest parts of |
| examples in packages. |
| |
| tools::testInstalledPackage() accepts new arguments |
| commentDontrun = FALSE and commentDonttest = FALSE. |
| |
| R CMD check gains options --run-dontrun and --run-donttest. |
| |
| • The HTML generated by tools::Rd2HTML() and tools::toHTML() |
| methods is now ‘XHTML 1.0 Strict’. |
| |
| • The compiler package's utility function setCompilerOptions() now |
| returns the old values invisibly. The initial optimization level |
| can also be set with the environment variable |
| R_COMPILER_OPTIMIZE. |
| |
| • R CMD build adds a NeedsCompilation field if one is not already |
| present in the DESCRIPTION file. |
| |
| • R CMD check gains option --test-dir to specify an alternative set |
| of tests to run. |
| |
| • R CMD check will now by default continue with testing after many |
| types of errors, and will output a summary count of errors at the |
| end if any have occurred. |
| |
| • R CMD check now checks that the Title and Description fields are |
| correctly terminated. |
| |
| • R CMD check --as-cran now: |
| |
| • checks a README.md file can be processed: this needs pandoc |
| installed. |
| |
| • checks the existence and accessibility of URLs in the |
| DESCRIPTION, CITATION, NEWS.Rd and README.md files and in the |
| help files (provided the build has libcurl support). |
| |
| • reports non-ASCII characters in R source files when there is |
| no package encoding declared in the DESCRIPTION file. |
| |
| • reports (apparent) S3 methods exported but not registered. |
| |
| • reports overwriting registered S3 methods from |
| base/recommended packages. (Such methods are replaced in the |
| affected package for the rest of the session, even if the |
| replacing namespace is unloaded.) |
| |
| • reports if the Title field does not appear to be in title |
| case (see ‘Writing R Extensions’: there may be false |
| positives, but note that technical words should be |
| single-quoted and will then be accepted). |
| |
| Most of these checks can also be selected by environment |
| variables: see the ‘R Internals’ manual. |
| |
| C-LEVEL FACILITIES: |
| |
| • New C API utility logspace_sum(logx[], n). |
| |
| • Entry points rbinom_mu, rnbinom_mu and rmultinom are remapped (by |
| default) to Rf_rbinom_mu etc. This requires packages using them |
| to be re-installed. |
| |
| • .C(DUP = FALSE) and .Fortran(DUP = FALSE) are now ignored, so |
| arguments are duplicated if DUP = TRUE would do so. As their |
| help has long said, .Call() is much preferred. |
| |
| • New entry point R_allocLD, like R_alloc but guaranteed to have |
| sufficient alignment for long double pointers. |
| |
| • isPairList() now returns TRUE for DOTSXP. |
| |
| WINDOWS BUILD CHANGES: |
| |
| A number of changes to the Windows build system are in development. |
| The following are currently in place. |
| |
| • Installation using external binary distributions of zlib, bzip2, |
| liblzma, pcre, libpng, jpeglib and libtiff is now required, and |
| the build instructions have been revised. |
| |
| • A new make target rsync-extsoft has been added to obtain copies |
| of the external libraries from CRAN. |
| |
| • Building the manuals now requires texi2any from texinfo 5.1 or |
| later. CRAN binary builds include the manuals, but by default |
| builds from source will not, and they will be accessed from CRAN. |
| See the comments in src/gnuwin32/MkRules.dist for how to specify |
| the location of texi2any. |
| |
| • (Windows) Changes have been made to support an experimental |
| Windows toolchain based on GCC 4.9.2. The default toolchain |
| continues to be based on GCC 4.6.3, as the new toolchain is not |
| yet stable enough. A change to a new toolchain is expected |
| during the R 3.2.x lifetime. |
| |
| PACKAGE INSTALLATION: |
| |
| • (Windows) The use of macro ZLIB_LIBS in file src/Makevars.win |
| (which has not been documented for a long time) now requires an |
| external libz.a to be available (it is part of the ‘goodies’ used |
| to compile Windows binary packages). It would be simpler to use |
| -lz instead. |
| |
| • The default for option pkgType on platforms using binary packages |
| is now "both", so source packages will be tried if binary |
| versions are not available or not up to date. |
| |
| There are options for what install.packages(type = "both") |
| (possibly called _via_ update.packages()) will do if compilation |
| of a source package is desirable: see ?options (under utils). |
| |
| If you intend not to accept updates as source packages, you |
| should use update.packages(type = "binary"). |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • download.file(method = "lynx") is defunct. |
| |
| • Building R using the included versions of zlib, bzip2, xz and |
| PCRE is deprecated: these are frozen (bar essential bug-fixes) |
| and will be removed for R 3.3.0. |
| |
| • The configure option --with-valgrind-instrumentation=3 has been |
| withdrawn, as it did not work with recent valgrind headers: it is |
| now treated as level 2. |
| |
| • The MethodsList class in package methods had been deprecated in R |
| 2.11.0 and is defunct now. Functions using it are defunct if |
| they had been deprecated in R 2.11.0, and are deprecated now, |
| otherwise. |
| |
| BUG FIXES: |
| |
| • Fixed two obscure bugs in pairlist subassignment, reported by |
| Radford Neal as part of pqR issue 16. |
| |
| • Fixes for bugs in handling empty arguments and argument matching |
| by name in log(). |
| |
| • all.equal() gains methods for environments and refClasses. |
| |
| • [<- and [[<- gain S4 data.frame methods to avoid corruption of S4 |
| class information by the S3 methods. |
| |
| • callNextMethod() should now work within a .local call when ... is |
| absent from formals(.local). |
| |
| • dput(pairlist(x)) generates a call to the pairlist constructor |
| instead of the list constructor. |
| |
| • Fix missing() when arguments are propagated through ... . |
| (PR#15707) |
| |
| • eigen(m) now defaults to symmetric = TRUE even when the dimnames |
| are asymmetric if the matrix is otherwise symmetric. (PR#16151) |
| |
| • Fix issues with forwarding ... through callGeneric() and |
| callNextMethod(). (PR#16141) |
| |
| • callGeneric() now works after a callNextMethod(). |
| |
| • Subclass information is kept consistent when replacing an |
| ordinary S4 class with an “old class” _via_ the S4Class argument |
| to setOldClass(). Thus, for example, a data.frame is valid for a |
| list argument in the signature, and a factor is valid for vector |
| arguments. |
| |
| • In qbeta() the inversion of pbeta() is much more sophisticated. |
| This works better in corner cases some of which failed completely |
| previously (PR#15755), or were using too many iterations. |
| |
| • Auto-printing no longer duplicates objects when printing is |
| dispatched to a method. |
| |
| • kmeans(x, k) would fail when nrow(x) >= 42949673. (Comment 6 of |
| PR#15364) |
| |
| • ‘Abbreviated’ locale-specific day and month names could have been |
| truncated in those rare locales where there are the same as the |
| full names. |
| |
| • An irrelevant warning message from updating subclass information |
| was silenced (the namespace would not be writable in this case). |
| |
| CHANGES IN R 3.1.3: |
| |
| NEW FEATURES: |
| |
| • The internal method of download.file() can now handle files |
| larger than 2GB on 32-bit builds which support such files (tested |
| on 32-bit R running on 64-bit Windows). |
| |
| • kruskal.test() warns on more types of suspicious input. |
| |
| • The as.dendrogram() method for "hclust" objects gains a check |
| argument protecting against memory explosion for invalid inputs. |
| |
| • capabilities() has a new item long.double which indicates if the |
| build uses a long double type which is longer than double. |
| |
| • nlm() no longer modifies the callback argument in place (a new |
| vector is allocated for each invocation, which mimics the |
| implicit duplication that occurred in R < 3.1.0); note that this |
| is a change from the previously documented behavior. (PR#15958) |
| |
| • icuSetCollate() now accepts locale = "ASCII" which uses the basic |
| C function strcmp and so collates strings byte-by-byte in |
| numerical order. |
| |
| • sessionInfo() tries to report the OS version in use (not just |
| that compiled under, and including details of Linux |
| distributions). |
| |
| • model.frame() (used by lm() and many other modelling functions) |
| now warns when it drops contrasts from factors. (Wish of |
| PR#16119) |
| |
| • install.packages() and friends now accept the value type = |
| "binary" as a synonym for the native binary type on the platform |
| (if it has one). |
| |
| • Single source or binary files can be supplied for |
| install.packages(type = "both") and the appropriate type and |
| repos = NULL will be inferred. |
| |
| • New function pcre_config() to report on some of the configuration |
| options of the version of PCRE in use. In particular, this |
| reports if regular expressions using \p{xx} are supported. |
| |
| • (Windows.) download.file(cacheOK = FALSE) is now supported when |
| internet2.dll is used. |
| |
| • browseURL() has been updated to work with Firefox 36.0 which has |
| dropped support for the -remote interface. |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The included version of PCRE has been updated to 8.36. |
| |
| • configure accepts MAKEINFO=texi2any as another way to ensure |
| texinfo 5.x is used when both 5.x and 4.x are installed. |
| |
| UTILITIES: |
| |
| • R CMD check now checks the packages used in \donttest sections of |
| the examples are specified in the DESCRIPTION file. (These are |
| needed to run the examples interactively.) |
| |
| • R CMD check checks for the undeclared use of GNU extensions in |
| Makefiles, and for Makefiles with a missing final linefeed. |
| |
| R CMD build will correct line endings in all Makefiles, not just |
| those in the src directory. |
| |
| • R CMD check notes uses of library() and require() in package |
| code: see the section ‘Suggested packages’ of ‘Writing R |
| Extensions’ for good practice. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • The configure option --with-valgrind-instrumentation=3 is |
| deprecated and will be removed in R 3.2.0. |
| |
| BUG FIXES: |
| |
| • (Windows.) Rscript.exe was missing a manifest specifying the |
| modern style for common controls (e.g., the download progress |
| bar). |
| |
| • If a package had extra documentation files but no vignette, the |
| HTML help system produced an empty index page. |
| |
| • The parser now gives an error if a null character is included in |
| a string using Unicode escapes. (PR#16046) |
| |
| • qr.Q() failed on complex arguments due to pre-3.0(!) typo. |
| (PR#16054) |
| |
| • abs() failed with named arguments when the argument was complex. |
| (PR#16047) |
| |
| • "noquote" objects may now be used as columns in data frames. |
| (PR#15997) |
| |
| • Some values with extremely long names were printed incorrectly. |
| (PR#15999) |
| |
| • Extremely large exponents on zero expressed in scientific |
| notation (e.g. 0.0e50000) could give NaN. (PR#15976) |
| |
| • download.file() reported downloaded sizes as 0KB if less than |
| 1MB, only for R 3.1.2 and only on big-endian platforms. |
| |
| • prompt() did not escape percent signs in the automatically |
| generated usage section of help files. |
| |
| • drop.terms() dropped some of the attributes of the object it was |
| working with. (PR#16029) |
| |
| • (Windows.) The command completion in Rgui.exe messed up the |
| console. (PR#15791) |
| |
| • (Windows.) The choose.files() command returned a blank string |
| when the user asked for a single file but cancelled the request. |
| (PR#16074) |
| |
| • Math2 S4 group generics failed to correctly dispatch "structure"- |
| and "nonStructure"-derived classes. |
| |
| • loadNamespace() imposed undocumented restrictions on the |
| versionCheck parameter. (Reported by Geoff Lee.) |
| |
| • Rare over-runs detected by AddressSanitizer in substr() and its |
| replacement version have been avoided. |
| |
| _Inter alia_ that fix gives the documented behaviour for |
| substr(x, 1, 2) <- "" (subsequently reported as PR#16214). |
| |
| • Loading packages incorrectly defining an S4 generic followed by a |
| function of the same name caused an erroneous cyclic namespace |
| dependency error. |
| |
| • Declared vignette encodings are now always passed to the vignette |
| engine. |
| |
| • Port Tomas Kalibera's fix from R-devel that restores the |
| loadMethod() fast path, effectively doubling the speed of S4 |
| dispatch. |
| |
| • power.t.test() and power.prop.test() now make use of the |
| extendInt option of uniroot() and hence work in more extreme |
| cases. (PR#15792) |
| |
| • If a package was updated and attached when its namespace was |
| already loaded, it could end up with parts from one version and |
| parts from the other. (PR#16120) |
| |
| • tools:::.Rdconv() didn't accept --encoding= due to a typo. |
| (PR#16121) |
| |
| • Unix-alike builds without a suitable makeinfo were documented to |
| link the missing HTML manuals to CRAN, but did not. |
| |
| • save(*, ascii=TRUE) and load() now correctly deal with NaN's. |
| (PR#16137) |
| |
| • split.Date() retains fractional representations while avoiding |
| incomplete class propagation. |
| |
| • R_ext/Lapack.h had not been updated for changes made by LAPACK to |
| the argument lists of its (largely internal) functions dlaed2 and |
| dlaed3. (PR#16157) |
| |
| • RShowDoc("NEWS", "txt") had not been updated for the layout |
| changes of R 3.1.0. |
| |
| • The xtfrm() method for class "Surv" has been corrected and its |
| description expanded. |
| |
| • mode(x) <- y would incorrectly evaluate x before changing its |
| mode. (PR#16215) |
| |
| • besselJ(1, 2^64) and besselY(..) now signal a warning, returning |
| NaN instead of typically segfaulting. (Issue 3 of PR#15554) |
| |
| • HTML conversion of \href markup in .Rd files did not remove the |
| backslash from \% and so gave an invalid URL. In a related |
| change, the \ escape is now required in such URLs. |
| |
| CHANGES IN R 3.1.2: |
| |
| NEW FEATURES: |
| |
| • embedFonts() now defaults to format = "ps2write" for .ps and .eps |
| files. This is available in Ghostscript 9.x (since 2010) whereas |
| the previous default, format = "pswrite", was removed in |
| Ghostscript 9.10. |
| |
| • For consistency with [dpqr]norm(), [dp]lnorm(sdlog = 0) model a |
| point mass at exp(mulog) rather than return NaN (for an error). |
| |
| • capabilities() now reports if ICU is compiled in for use for |
| collation (it is only actually used if a suitable locale is set |
| for collation, and never for a C locale). |
| |
| • (OS X only.) Package tcltk checks when loaded if it is linked |
| against the CRAN X11-based Tcl/Tk and if so that the Tcl/Tk |
| component and the X11 libraries are installed. This allows more |
| informative error messages to be given advising the installation |
| of the missing component or of XQuartz. |
| |
| The X11() device and X11-based versions of the data editor and |
| viewer (invoked by edit() and View() for data frames and matrices |
| from command-line R) check that the X11 libraries are installed |
| and if not advises installing XQuartz. |
| |
| • icuSetCollate() allows locale = "default", and locale = "none" to |
| use OS services rather than ICU for collation. |
| |
| Environment variable R_ICU_LOCALE can be used to set the default |
| ICU locale, in case the one derived from the OS locale is |
| inappropriate (this is currently necessary on Windows). |
| |
| • New function icuGetCollate() to report on the ICU collation |
| locale in use (if any). |
| |
| • utils::URLencode() was updated to use unreserved and reserved |
| characters from RFC 3986 (<URL: |
| http://tools.ietf.org/html/rfc3986>) instead of RFC 1738. |
| |
| • unique(warnings()) and c(warnings()) are now supported. |
| |
| • The Bioconductor ‘version’ used by setRepositories() now defaults |
| to 3.0. (It can be set at runtime _via_ environment variable |
| R_BIOC_VERSION.) |
| |
| • Omegahat is no longer listed as providing Windows binary |
| packages, e.g. by setRepositories(). It has no binary packages |
| available for R 3.1.x and those for earlier versions were 32-bit |
| only. |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The configure script reports on the more important |
| capabilities/options which will not be compiled in. |
| |
| More types of external BLAS are recognized by name in that |
| report. |
| |
| • When building R as a shared library, the -L${R_HOME}/lib${R_ARCH} |
| flag is placed earlier in the link commands used during |
| installation and when packages are installed: this helps ensure |
| that the current build has priority if an R shared library has |
| already been installed by e.g. install-libR in a library |
| mentioned in LDFLAGS (and not in ‘your system's library |
| directory’ as documented). (Wish of PR#15790.) |
| |
| • LaTeX package upquote is no longer required for R's use of |
| inconsolata. |
| |
| • (Windows only) If both 32- and 64-bit versions of R are |
| installed, the bin/R.exe and bin/Rscript.exe executables now run |
| 64-bit R. (To run 32-bit R, overwrite these files with copies of |
| bin/i386/Rfe.exe.) |
| |
| UTILITIES: |
| |
| • Running R CMD check with _R_CHECK_DEPENDS_ONLY_ true now makes |
| the VignetteBuilder packages available even if they are listed in |
| Suggests, since they are needed to recognise and process |
| non-Sweave vignettes. |
| |
| • R CMD check now reports empty importFrom declarations in a |
| NAMESPACE file, as these are common errors (writing |
| importFrom(Pkg) where import(Pkg) was intended). |
| |
| • R CMD check now by default checks code usage directly on the |
| package namespace without loading and attaching the package and |
| its suggests and enhances. For good practice with packages in |
| the Suggests field, see §1.1.3.1 of ‘Writing R Extensions’. For |
| use of lazy-data objects in the package's own code, see ?data. |
| |
| BUG FIXES: |
| |
| • dmultinom() did not handle non-finite probabilities correctly. |
| |
| • prettyNum(x, zero.print=*) now also works when x contains NAs. |
| |
| • A longstanding bug exhibited by nlminb() on Windows was traced to |
| a compiler bug in gcc 4.6.3; a workaround has been put in place. |
| (PR#15244 and PR#15914). |
| |
| • Rendering of \command in HTML versions of help pages has been |
| improved: this is particularly evident on the help page for |
| INSTALL. |
| |
| • as.hexmode(x) and as.octmode(x) now behave correctly for some |
| numeric x, e.g., c(NA, 1) or c(1, pi). |
| |
| • drop1() failed if the scope argument had no variables to drop. |
| (PR#15935) |
| |
| • edit() (and hence fix()) failed if an object had a non-character |
| attribute named "source" (an attribute that had been used in R |
| prior to version 2.14.0). |
| |
| • callGeneric() could fail if the generic had ... as a formal |
| argument. (PR#15937). |
| |
| • Forking in package parallel called C entry point exit in the |
| child. This was unsafe (_exit should have been called), and |
| could flush stdin of the main R process (seen most often on |
| Solaris). |
| |
| As good practice, stdout is now flushed before forking a child. |
| |
| • R objects such as list(`a\b` = 1) now print correctly. |
| |
| • getAnywhere("C_pbinom") now returns correctly a single object |
| (rather than unlisting it). |
| |
| • The confint() method for nls() fits failed it these has specified |
| parameter limits despite using an algorithm other than "port". |
| (PR#15960) |
| |
| • Subclassing an S4 class failed if the class required arguments to |
| the generator, through its initialize() method. |
| |
| • removeSource() did not properly handle expressions containing |
| arguments that were supplied as missing, e.g. x[i,]. (PR#15957) |
| |
| • as.environment(list()) now works, and as.list() of such an |
| environment is now the same as list(). (PR#15926) |
| |
| • Several tcltk functions failed when run in unusual environments. |
| (PR#15970) |
| |
| • options(list()) now works (trivially). (PR#15979) |
| |
| • merge(<dendrogram>, ..) now works correctly for two `independent' |
| dendrograms (PR#15648), and still compatibly _via_ adjust = |
| "auto" e.g. for two branches of an existing dendrogram. |
| |
| • The plot method for "hclust" objects gets an optional argument |
| check; when that is true (the default) it checks more carefully |
| for valid input. |
| |
| • (Windows only) If a user chose to install 64 bit R but not 32 bit |
| R, the bin/R and bin/Rscript executables failed to run. |
| (PR#15981) |
| |
| • Various possible buffer overruns have been prevented, and missed |
| memory protection added. (PR#15990) |
| |
| • Rscript no longer passes --args to R when there are no extra |
| (“user”) arguments. |
| |
| • objects like getClass("refClass")@prototype now print() and str() |
| without error. |
| |
| • identical() now also looks at the S4 bit. |
| |
| • hist(x, breaks) is more robust in adding a small fuzz to few |
| breaks when some are very large. (PR#15988) |
| |
| • sub() and gsub() did not handle regular expressions like "\s{2,}" |
| properly if the text contained NA or non-ASCII elements in a |
| UTF-8 locale. Part of this was due to a bug in the TRE library. |
| (PR#16009) |
| |
| • RShowDoc("NEWS") now displays the PDF version. |
| |
| • Matrices and arrays with last dimension zero did not print at all |
| or incompletely. (PR#16012) |
| |
| • plot.histogram() and hence hist() now respect the xaxs, yaxs and |
| lab graphics parameters. (PR#16021) |
| |
| • bw.SJ(x) and other bw.*() no longer segfault when x contains |
| non-finite values. (PR#16024) |
| |
| • R CMD Rd2pdf unintentionally ignored its --os option. |
| |
| • The internal method of download.file() was not reporting file |
| sizes and progress correctly on files larger than 2GB (inherited |
| from libxml2). This is corrected for 64-bit builds (32-bit |
| platforms may not support such files, but where possible will be |
| supported in future versions of R). |
| |
| • Work around a bug in OS X Yosemite where key environment |
| variables may be duplicated causing issues in subprocesses. The |
| duplicates are now removed on R startup (_via_ Rprofile). |
| (PR#16042) |
| |
| • Adjust X11 auto-launch detection in DISPLAY on OS X to recognize |
| latest XQuartz. |
| |
| CHANGES IN R 3.1.1: |
| |
| NEW FEATURES: |
| |
| • When attach() reports conflicts, it does so compatibly with |
| library() by using message(). |
| |
| • R CMD Sweave no longer cleans any files by default, compatibly |
| with versions of R prior to 3.1.0. There are new options |
| --clean, --clean=default and --clean=keepOuts. |
| |
| • tools::buildVignette() and tools::buildVignettes() with clean = |
| FALSE no longer remove any created files. buildvignette() gains |
| a keep argument for more cleaning customization. |
| |
| • The Bioconductor ‘version’ used by setRepositories() can now be |
| set by environment variable R_BIOC_VERSION at runtime, not just |
| when R is installed. (It has been stated that Bioconductor will |
| switch from ‘version’ 2.14 to ‘version’ 3.0 during the lifetime |
| of the R 3.1 series.) |
| |
| • Error messages from bugs in embedded Sexpr code in Sweave |
| documents now report the source location. |
| |
| • type.convert(), read.table() and similar read.*() functions get a |
| new numerals argument, specifying how numeric input is converted |
| when its conversion to double precision loses accuracy. The |
| default value, "allow.loss" allows accuracy loss, as in R |
| versions before 3.1.0. |
| |
| • For some compilers, integer addition could overflow without a |
| warning. R's internal code for both integer addition and |
| subtraction is more robust now. (PR#15774) |
| |
| • The function determining the default number of knots for |
| smooth.spline() is now exported, as .nknots.smspl(). |
| |
| • dbeta(, a,b), pbeta(), qbeta() and rbeta() are now defined also |
| for a = 0, b = 0, or infinite a and b (where they typically |
| returned NaN before). |
| |
| • Many package authors report that the RStudio graphics device does |
| not work correctly with their package's use of dev.new(). The |
| new option dev.new(noRStudioGD = TRUE) replaces the RStudio |
| override by the default device as selected by R itself, still |
| respecting environment variables R_INTERACTIVE_DEVICE and |
| R_DEFAULT_DEVICE. |
| |
| • readRDS() now returns visibly. |
| |
| • Modifying internal logical scalar constants now results in an |
| error instead of a warning. |
| |
| • install.packages(repos = NULL) now accepts http:// or ftp:// URLs |
| of package archives as well as file paths, and will download as |
| required. In most cases repos = NULL can be deduced from the |
| extension of the URL. |
| |
| • The warning when using partial matching with the $ operator on |
| data frames is now only given when |
| options("warnPartialMatchDollar") is TRUE. |
| |
| • Package help requests like package?foo now try the package foo |
| whether loaded or not. |
| |
| • General help requests now default to trying all loaded packages, |
| not just those on the search path. |
| |
| • Added a new function promptImport(), to generate a help page for |
| a function that was imported from another package (and presumably |
| re-exported, or help would not be needed). |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • configure option --with-internal-tzcode can now be used with |
| variable rsharedir. |
| |
| • The included version of PCRE has been updated to 8.35. |
| |
| • There is a new target make uninstall-libR to remove an installed |
| shared/static libR. |
| |
| make install-libR now works if a sub-architecture is used, |
| although the user will need to specify libdir differently for |
| different sub-architectures. |
| |
| • There is more extensive advice on which LaTeX packages are |
| required to install R or to make package manuals (as done by R |
| CMD check) in the ‘Writing R Extensions’ manual. |
| |
| • Compilers/linkers were handling the visibility control in |
| src/extra/xz inconsistently (and apparently in some cases |
| incorrectly), so it has been simplified. (PR#15327) |
| |
| • (Windows) There is updated support for the use of ICU for |
| collation: see the ‘R Installation and Administration Manual’. |
| |
| BUG FIXES: |
| |
| • dbinom(x, n), pbinom(), dpois(), etc, are slightly less |
| restrictive in checking if n is integer-valued. (Wish of |
| PR#15734.) |
| |
| • pchisq(x, df, ncp, log.p = TRUE) is more accurate and no longer |
| underflows for small x and ncp < 80, e.g, for pchisq(1e-5, df = |
| 100, ncp = 1, log = TRUE). (Based on PR#15635 and a suggestion |
| by Roby Joehanes.) |
| |
| • The s (“step into”) command in the debugger would cause R to step |
| into expressions evaluated there, not just into functions being |
| debugged. (PR#15770) |
| |
| • The C code used by strptime() rejected time-zone offsets of more |
| than +1200 (+1245, +1300 and +1400 can occur). (PR#15768) |
| |
| • (Windows only.) png(type = "cairo", antialias = "gray") was not |
| accepted. (PR#15760) |
| |
| • Use of save(..., envir=) with named objects could fail. |
| (PR#15758) |
| |
| • Sweave() mis-parsed Sexpr expressions that contained backslashes. |
| (PR#15779) |
| |
| • The return value from options(foo = NULL) was not the previous |
| value of the option. (PR#15781) |
| |
| • enc2utf8() and enc2native() did not always mark the encoding of |
| the return values when it was known. |
| |
| • dnbinom(x, size = <large>, mu, log = TRUE) no longer underflows |
| to -Inf for large mu, thanks to a suggestion from Alessandro |
| Mammana (MPI MolGen, Berlin). |
| |
| • pbeta(x, a, b, log = TRUE) no longer behaves discontinuously (in |
| a small x-region) because of denormalized numbers. Also, |
| pbeta(1-1e-12, 1e30, 1.001, log=TRUE) now terminates “in real |
| time”. |
| |
| • The "CRAN" filter (see available.packages()) no longer removes |
| duplicates other than of packages on CRAN, and does not fail if |
| there is no CRAN repository in getOption("repos"). |
| |
| • The device listing from dev2bitmap() and bitmap() was truncated |
| to 1000 characters: modern versions of GhostScript on most |
| platforms have many more devices. |
| |
| • (Windows.) Commands such as Sys.which() and pipe() which needed |
| to find the full path to a command could segfault if the ‘long’ |
| path name was much longer than the ‘short’ path name (which |
| Sys.which() returns), as the behaviour of the Windows API call |
| had changed. |
| |
| • R CMD build will fail with an error if one of the packages |
| specified in the VignetteBuilder field is not installed. |
| (Without loading those packages it cannot be ascertained which |
| files are intended to be vignettes. This means that the |
| VignetteBuilder packages have to be installed for package |
| checking too.) (Wish of PR#15775.) |
| |
| • Misguided attempts to use chull() with non-finite points now give |
| an error (related to PR#15777). |
| |
| • For a formula with exactly 32 variables the 32nd variable was |
| aliased to the intercept in some C-level computations of terms, |
| so that for example attempting to remove it would remove the |
| intercept instead (and leave a corrupt internal structure). |
| (PR#15735) |
| |
| • anyDuplicated() silently returned wrong values when the first |
| duplicate was at an index which was too large to be stored in an |
| integer vector (although a lot of RAM and patience would have |
| been needed to encounter this). |
| |
| • tools::Rd2ex(commentDontrun = FALSE) failed if the block had only |
| one line. |
| |
| • Hexadecimal constants such as 0x110p-5L which were incorrectly |
| qualified by L were parsed incorrectly since R 3.0.0, with a |
| slightly garbled warning. (PR#15753) |
| |
| • system() returned success on some platforms even if the system |
| was unable to launch a process. (PR#15796) |
| |
| • (Windows Rgui console.) Unbuffered output was sometimes not |
| output immediately if the prompt was not on the last line of the |
| console. |
| |
| • The built-in help server did not declare the encoding for the |
| DESCRIPTION or other text files to be the package encoding, so |
| non-ASCII characters could be displayed incorrectly. |
| |
| • R is now trying harder to not cleanup child processes that were |
| not spawned by mcparallel() on platforms that provide information |
| about the source process of the SIGCHLD signal. This allows 3rd |
| party libraries to manage the exit status of children that they |
| spawn without R interfering. |
| |
| • mcmapply() was only parallelizing if the number of jobs was |
| bigger than the number of cores. It now parallelizes if the |
| number of jobs is more than one. |
| |
| • Auto-printing would re-evaluate its argument when trying to |
| dispatch to a print method. This is now avoided when possible. |
| |
| • Unserializing (including load() and readRDS()) could silently |
| return incorrect numeric values from ASCII saves if there was a |
| read error. |
| |
| • getParseData() could return incorrect values for the parents of |
| some elements. (Reported by Andrew Redd.) |
| |
| • Attempting to use data frames of 2^31 or more rows with merge() |
| or to create a merged data frame of that size now gives a clearer |
| error message. |
| |
| • parse() did not check its file argument was a connection if it |
| was not a character string, so e.g. parse(FALSE) attempted to |
| read from stdin. |
| |
| Nor did dump() and dput(). |
| |
| • The "help.try.all.packages" option was ignored when the shortcut |
| syntax for help was used, e.g. ?foo. |
| |
| • A potential segfault in string allocation has been fixed. (Found |
| by Radford Neal.) |
| |
| • Potential memory protection errors in sort() and D() have been |
| fixed. (Found by Radford Neal.) |
| |
| • Fixed a lack of error checking in graphics event functions. |
| (Found by Radford Neal; a different patch used here than the one |
| in pqR.) |
| |
| • numericDeriv() sometimes miscalculated the gradient. (PR#15849, |
| reported originally by Radford Neal) |
| |
| CHANGES IN R 3.1.0: |
| |
| NEW FEATURES: |
| |
| • type.convert() (and hence by default read.table()) returns a |
| character vector or factor when representing a numeric input as a |
| double would lose accuracy. Similarly for complex inputs. |
| |
| If a file contains numeric data with unrepresentable numbers of |
| decimal places that are intended to be read as numeric, specify |
| colClasses in read.table() to be "numeric". |
| |
| • tools::Rdiff(useDiff = FALSE) is closer to the POSIX definition |
| of diff -b (as distinct from the description in the man pages of |
| most systems). |
| |
| • New function anyNA(), a version of any(is.na(.)) which is fast |
| for atomic vectors, based on a proposal by Tim Hesterberg. (Wish |
| of PR#15239.) |
| |
| • arrayInd(*, useNames = TRUE) and, analogously, which(*, arr.ind = |
| TRUE) now make use of names(.dimnames) when available. |
| |
| • is.unsorted() now also works for raw vectors. |
| |
| • The "table" method for as.data.frame() (also useful as |
| as.data.frame.table()) now passes sep and base arguments to |
| provideDimnames(). |
| |
| • uniroot() gets new optional arguments, notably extendInt, |
| allowing to auto-extend the search interval when needed. The |
| return value has an extra component, init.it. |
| |
| • switch(f, ...) now warns when f is a factor, as this typically |
| happens accidentally where the useR meant to pass a character |
| string, but f is treated as integer (as always documented). |
| |
| • The parser has been modified to use less memory. |
| |
| • The way the unary operators (+ - !) handle attributes is now more |
| consistent. If there is no coercion, all attributes (including |
| class) are copied from the input to the result: otherwise only |
| names, dims and dimnames are. |
| |
| • colorRamp() and colorRampPalette() now allow non-opaque colours |
| and a ramp in opacity _via_ the new argument alpha = TRUE. |
| (Suggested by Alberto Krone-Martins, but optionally as there are |
| existing uses which expect only RGB values.) |
| |
| • grid.show.layout() and grid.show.viewport() get an optional vp.ex |
| argument. |
| |
| • There is a new function find_gs_cmd() in the tools package to |
| locate a GhostScript executable. (This is an enhanced version of |
| a previously internal function there.) |
| |
| • object.size() gains a format() method. |
| |
| • There is a new family, "ArialMT", for the pdf() and postscript() |
| devices. This will only be rendered correctly on viewers which |
| have access to Monotype TrueType fonts (which are sometimes |
| requested by journals). |
| |
| • The text and PDF news files, including NEWS and NEWS.2, have been |
| moved to the doc directory. |
| |
| • combn(x, simplify = TRUE) now gives a factor result for factor |
| input x (previously user error). (Related to PR#15442.) |
| |
| • Added utils::fileSnapshot() and utils::changedFiles() functions |
| to allow snapshots and comparison of directories of files. |
| |
| • make.names(names, unique=TRUE) now tries to preserve existing |
| names. (Suggestion of PR#15452.) |
| |
| • New functions cospi(x), sinpi(x), and tanpi(x), for more accurate |
| computation of cos(pi*x), etc, both in R and the C API. Using |
| these gains accuracy in some cases, e.g., inside lgamma() or |
| besselI(). (Suggested by Morten Welinder in PR#15529.) |
| |
| • print.table(x, zero.print = ".") now also has an effect when x is |
| not integer-valued. |
| |
| • There is more support to explore the system's idea of time-zone |
| names. Sys.timezone() tries to give the current system setting |
| by name (and succeeds at least on Linux, OS X, Solaris and |
| Windows), and OlsonNames() lists the names in the system's Olson |
| database. Sys.timezone(location = FALSE) gives the previous |
| behaviour. |
| |
| • Platforms with a 64-bit time_t type are allowed to handle |
| conversions between the "POSIXct" and "POSIXlt" classes for |
| date-times outside the 32-bit range (before 1902 or after 2037): |
| the existing workarounds are used on other platforms. (Note that |
| time-zone information for post-2037 is speculative at best, and |
| the OS services are tested for known errors and so not used on OS |
| X.) |
| |
| Currently time_t is usually long and hence 64-bit on Unix-alike |
| 64-bit platforms: however in several cases the time-zone database |
| is 32-bit. For R for Windows it is 64-bit (for both |
| architectures as from this version). |
| |
| • The "save.defaults" option can include a value for |
| compression_level. (Wish of PR#15579.) |
| |
| • colSums() and friends now have support for arrays and data-frame |
| columns with 2^31 or more elements. |
| |
| • as.factor() is faster when f is an unclassed integer vector (for |
| example, when called from tapply()). |
| |
| • fft() now works with longer inputs, from the 12 million |
| previously supported up to 2 billion. (PR#15593) |
| |
| • Complex svd() now uses LAPACK subroutine ZGESDD, the complex |
| analogue of the routine used for the real case. |
| |
| • Sweave now outputs .tex files in UTF-8 if the input encoding is |
| declared to be UTF-8, regardless of the local encoding. The |
| UTF-8 encoding may now be declared using a LaTeX comment |
| containing the string %\SweaveUTF8 on a line by itself. |
| |
| • file.copy() gains a copy.date argument. |
| |
| • Printing of date-times will make use of the time-zone |
| abbreviation in use at the time, if known. For example, for |
| Paris pre-1940 this could be LMT, PMT, WET or WEST. To enable |
| this, the "POSIXlt" class has an optional component "zone" |
| recording the abbreviation for each element. |
| |
| For platforms which support it, there is also a component |
| "gmtoff" recording the offset from GMT where known. |
| |
| • (On Windows, by default on OS X and optionally elsewhere.) The |
| system C function strftime has been replaced by a more |
| comprehensive version with closer conformance to the POSIX 2008 |
| standard. |
| |
| • dnorm(x, log = FALSE) is more accurate (but somewhat slower) for |
| |x| > 5; as suggested in PR#15620. |
| |
| • Some versions of the tiff() device have further compression |
| options. |
| |
| • read.table(), readLines() and scan() have a new argument to |
| influence the treatment of embedded nuls. |
| |
| • Avoid duplicating the right hand side values in complex |
| assignments when possible. This reduces copying of replacement |
| values in expressions such as Z$a <- a0 and ans[[i]] <- tmp: some |
| package code has relied on there being copies. |
| |
| Also, a number of other changes to reduce copying of objects; all |
| contributed by or based on suggestions by Michael Lawrence. |
| |
| • The fast argument of KalmanLike(), KalmanRun() and |
| KalmanForecast() has been replaced by update, which instead of |
| updating mod in place, optionally returns the updated model in an |
| attribute "mod" of the return value. |
| |
| • arima() and makeARIMA() get a new optional argument SSinit, |
| allowing the choice of a different *s*tate *s*pace initialization |
| which has been observed to be more reliable close to |
| non-stationarity: see PR#14682. |
| |
| • warning() has a new argument noBreaks., to simplify |
| post-processing of output with options(warn = 1). |
| |
| • pushBack() gains an argument encoding, to support reading of |
| UTF-8 characters using scan(), read.table() and related functions |
| in a non-UTF-8 locale. |
| |
| • all.equal.list() gets a new argument use.names which by default |
| labels differing components by names (if they match) rather than |
| by integer index. Saved R output in packages may need to be |
| updated. |
| |
| • The methods for all.equal() and attr.all.equal() now have |
| argument check.attributes after ... so it cannot be partially nor |
| positionally matched (as it has been, unintentionally). |
| |
| A side effect is that some previously undetected errors of |
| passing empty arguments (no object between commas) to all.equal() |
| are detected and reported. |
| |
| There are explicit checks that check.attributes is logical, |
| tolerance is numeric and scale is NULL or numeric. This catches |
| some unintended positional matching. |
| |
| The message for all.equal.numeric() reports a "scaled difference" |
| only for scale != 1. |
| |
| • all.equal() now has a "POSIXt" method replacing the "POSIXct" |
| method. |
| |
| • The "Date" and "POSIXt" methods of seq() allows by = "quarter" |
| for completeness (by = "3 months" always worked). |
| |
| • file.path() removes any trailing separator on Windows, where they |
| are invalid (although sometimes accepted). This is intended to |
| enhance the portability of code written by those using POSIX file |
| systems (where a trailing / can be used to confine path matching |
| to directories). |
| |
| • New function agrepl() which like grepl() returns a logical |
| vector. |
| |
| • fifo() is now supported on Windows. (PR#15600) |
| |
| • sort.list(method = "radix") now allows negative integers (wish of |
| PR#15644). |
| |
| • Some functionality of print.ts() is now available in |
| .preformat.ts() for more modularity. |
| |
| • mcparallel() gains an option detach = TRUE which allows execution |
| of code independently of the current session. It is based on a |
| new estranged = TRUE argument to mcfork() which forks child |
| processes such that they become independent of the parent |
| process. |
| |
| • The pdf() device omits circles and text at extremely small sizes, |
| since some viewers were failing on such files. |
| |
| • The rightmost break for the "months", "quarters" and "years" |
| cases of hist.POSIXlt() has been increased by a day. (Inter |
| alia, fixes PR#15717.) |
| |
| • The handling of DF[i,] <- a where i is of length 0 is improved. |
| (Inter alia, fixes PR#15718.) |
| |
| • hclust() gains a new method "ward.D2" which implements Ward's |
| method correctly. The previous "ward" method is "ward.D" now, |
| with the old name still working. Thanks to research and |
| proposals by Pierre Legendre. |
| |
| • The sunspot.month dataset has been amended and updated from the |
| official source, whereas the sunspots and sunspot.year datasets |
| will remain immutable. The documentation and source links have |
| been updated correspondingly. |
| |
| • The summary() method for "lm" fits warns if the fit is |
| essentially perfect, as most of the summary may be computed |
| inaccurately (and with platform-dependent values). |
| |
| Programmers who use summary() in order to extract just a |
| component which will be reliable (e.g., $cov.unscaled) should |
| wrap their calls in suppressWarnings(). |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The included version of LAPACK has been updated to 3.5.0. |
| |
| • There is some support for parallel testing of an installation, by |
| setting TEST_MC_CORES to an integer greater than one to indicate |
| the maximum number of cores to be used in parallel. (It is worth |
| specifying at least 8 cores if available.) Most of these require |
| a make program (such as GNU make and dmake) which supports the |
| $MAKE -j nproc syntax. |
| |
| Except on Windows: the tests of standard package examples in make |
| check are done in parallel. This also applies to running |
| tools::testInstalledPackages(). |
| |
| The more time-consuming regression tests are done in parallel. |
| |
| The package checks in make check-devel and make check-recommended |
| are done in parallel. |
| |
| • More of make check will work if recommended packages are not |
| installed: but recommended packages remain needed for thorough |
| checking of an R build. |
| |
| • The version of tzcode included in src/extra/tzone has been |
| updated. (Formerly used only on Windows.) |
| |
| • The included (64-bit) time-zone conversion code and Olson |
| time-zone database can be used instead of the system version: use |
| configure option --with-internal-tzcode. This is the default on |
| Windows and OS X. (Note that this does not currently work if a |
| non-default rsharedir configure variable is used.) |
| |
| (It might be necessary to set environment variable TZ on OSes |
| where this is not already set, although the system timezone is |
| deduced correctly on at least Linux, OS X and Windows.) |
| |
| This option also switches to the version of strftime included in |
| directory src/extra/tzone. |
| |
| • configure now tests for a C++11-compliant compiler by testing |
| some basic features. This by default tries flags for the |
| compiler specified by CXX, but an alternative compiler, options |
| and standard can be specified by variables CXX1X, CXX1XFLAGS and |
| CXX1XSTD (e.g., -std=gnu++11). |
| |
| • R can now optionally be compiled to use reference counting |
| instead of the NAMED mechanism by defining SWITCH_TO_REFCNT in |
| Rinternals.h. This may become the default in the future. |
| |
| • There is a new option --use-system-tre to use a suitable system |
| tre library: at present this means a version from their git |
| repository, after corrections. (Wish of PR#15660.) |
| |
| PACKAGE INSTALLATION: |
| |
| • The CRANextra repository is no longer a default repository on |
| Windows: all the binary versions of packages from CRAN are now on |
| CRAN, although CRANextra contains packages from Omegahat and |
| elsewhere used by CRAN packages. |
| |
| • Only vignettes sources in directory vignettes are considered to |
| be vignettes and hence indexed as such. |
| |
| • In the DESCRIPTION file, |
| |
| License: X11 |
| |
| is no longer recognized as valid. Use MIT or BSD_2_clause |
| instead, both of which need + file LICENSE. |
| |
| • For consistency, entries in .Rinstignore are now matched |
| case-insensitively on all platforms. |
| |
| • Help for S4 methods with very long signatures now tries harder to |
| split the description in the Usage field to no more than 80 |
| characters per line (some packages had over 120 characters). |
| |
| • R CMD INSTALL --build (not Windows) now defaults to the internal |
| tar() unless R_INSTALL_TAR is set. |
| |
| • There is support for compiling C++11 code in packages on suitable |
| platforms: see ‘Writing R Extensions’. |
| |
| • Fake installs now install the contents of directory inst: some |
| packages use this to install e.g. C++ headers for use by other |
| packages that are independent of the package itself. Option |
| --no-inst can be used to get the previous behaviour. |
| |
| DEBUGGING: |
| |
| • The behaviour of the code browser has been made more consistent, |
| in part following the suggestions in PR#14985. |
| |
| • Calls to browser() are now consistent with calls to the browser |
| triggered by debug(), in that Enter will default to n rather than |
| c. |
| |
| • A new browser command s has been added, to “step into” function |
| calls. |
| |
| • A new browser command f has been added, to “finish” the current |
| loop or function. |
| |
| • Within the browser, the command help will display a short list of |
| available commands. |
| |
| UTILITIES: |
| |
| • Only vignettes sources in directory vignettes are considered to |
| be vignettes by R CMD check. That has been the preferred |
| location since R 2.14.0 and is now obligatory. |
| |
| • For consistency, R CMD build now matches entries in .Rbuildignore |
| and vignettes/.install_extras case-insensitively on all platforms |
| (not just on Windows). |
| |
| • checkFF() (called by R CMD check by default) can optionally check |
| foreign function calls for consistency with the registered type |
| and argument count. This is the default for R CMD check |
| --as-cran or can be enabled by setting environment variable |
| _R_CHECK_FF_CALLS_ to registration (but is in any case suppressed |
| by --install=no). Because this checks calls in which .NAME is an |
| R object and not just a literal character string, some other |
| problems are detected for such calls. |
| |
| Functions suppressForeignCheck() and dontCheck() have been added |
| to allow package authors to suppress false positive reports. |
| |
| • R CMD check --as-cran warns about a false value of the |
| DESCRIPTION field BuildVignettes for Open Source packages, and |
| ignores it. (An Open Source package needs to have complete |
| sources for its vignettes which should be usable on a suitably |
| well-equipped system). |
| |
| • R CMD check --no-rebuild-vignettes is defunct: |
| R CMD check --no-build-vignettes has been preferred since R |
| 3.0.0. |
| |
| • R CMD build --no-vignettes is defunct: |
| R CMD build --no-build-vignettes has been preferred since R |
| 3.0.0. |
| |
| • R CMD Sweave and R CMD Stangle now process both Sweave and |
| non-Sweave vignettes. The tools::buildVignette() function has |
| been added to do the same tasks from within R. |
| |
| • The flags returned by R CMD config --ldflags and (where |
| installed) pkg-config --libs libR are now those needed to link a |
| front-end against the (shared or static) R library. |
| |
| • Sweave.sty has a new option [inconsolata]. |
| |
| • R CMD check customizations such as _R_CHECK_DEPENDS_ONLY_ make |
| available packages only in LinkingTo only for installation, and |
| not for loading/runtime tests. |
| |
| • tools::checkFF() reports on .C and .Fortran calls with DUP = |
| FALSE if argument check_DUP is true. This is selected by R CMD |
| check by default. |
| |
| • R CMD check --use-gct can be tuned to garbage-collect less |
| frequently using gctorture2() _via_ the setting of environment |
| variable _R_CHECK_GCT_N_. |
| |
| • Where supported, tools::texi2dvi() limits the number of passes |
| tried to 20. |
| |
| C-LEVEL FACILITIES: |
| |
| • (Windows only) A function R_WaitEvent() has been added (with |
| declaration in headerR.h) to block execution until the next event |
| is received by R. |
| |
| • Remapping in the Rmath.h header can be suppressed by defining |
| R_NO_REMAP_RMATH. |
| |
| • The remapping of rround() in header Rmath.h has been removed: use |
| fround() instead. |
| |
| • ftrunc() in header Rmath.h is now a wrapper for the C99 function |
| trunc(), which might as well be used in C code: ftrunc() is still |
| needed for portable C++ code. |
| |
| • The never-documented remapping of prec() to fprec() in header |
| Rmath.h has been removed. |
| |
| • The included LAPACK subset now contains ZGESDD and ZGELSD. |
| |
| • The function LENGTH() now checks that it is only applied to |
| vector arguments. However, in packages length() should be used. |
| (In R itself LENGTH() is a macro without the function overhead of |
| length().) |
| |
| • Calls to SET_VECTOR_ELT() and SET_STRING_ELT() are now checked |
| for indices which are in-range: several packages were writing one |
| element beyond the allocated length. |
| |
| • allocVector3 has been added which allows custom allocators to be |
| used for individual vector allocations. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • chol(pivot = TRUE, LINPACK = TRUE) is defunct. |
| |
| Arguments EISPACK for eigen() and LINPACK for chol(), chol2inv(), |
| solve() and svd() are ignored: LAPACK is always used. |
| |
| • .find.package() and .path.package() are defunct: only the |
| versions without the initial dot introduced in R 2.13.0 have ever |
| been in the API. |
| |
| • Partial matching when using the $ operator _on data frames_ now |
| throws a warning and may become defunct in the future. If partial |
| matching is intended, replace foo$bar by foo[["bar", exact = |
| FALSE]]. |
| |
| • The long-deprecated use of \synopsis in the Usage section of .Rd |
| files has been removed: such sections are now ignored (with a |
| warning). |
| |
| • package.skeleton()'s deprecated argument namespace has been |
| removed. |
| |
| • Many methods are no longer exported by package stats. They are |
| all registered on their generic, which should be called rather |
| than calling a method directly. |
| |
| • Functions readNEWS() and checkNEWS() in package tools are |
| defunct. |
| |
| • download.file(method = "lynx") is deprecated. |
| |
| • .C(DUP = FALSE) and .Fortran(DUP = FALSE) are now deprecated, and |
| may be disabled in future versions of R. As their help has long |
| said, .Call() is much preferred. |
| |
| R CMD check notes such usages (by default). |
| |
| • The workaround of setting R_OSX_VALGRIND has been removed: it is |
| not needed in current valgrind. |
| |
| BUG FIXES: |
| |
| • Calling lm.wfit() with no non-zero weights gave an array-overrun |
| in the Fortran code and a not very sensible answer. It is now |
| special-cased with a simpler answer (no qr component). |
| |
| • Error messages involving non-syntactic names (e.g., as produced |
| by `\r` when that object does not exist) now encode the control |
| characters. (Reported by Hadley Wickham.) |
| |
| • getGraphicsEvent() caused 100% usage of one CPU in Windows. |
| (PR#15500) |
| |
| • nls() with no start argument may now work inside another function |
| (scoping issue). |
| |
| • pbeta() and similar work better for very large (billions) ncp. |
| |
| • Where time zones have changed abbreviations over the years, the |
| software tries to more consistently use the abbreviation |
| appropriate to the time or if that is unknown, the current |
| abbreviation. On some platforms where the C function localtime |
| changed the tzname variables the reported abbreviation could have |
| been that of the last time converted. |
| |
| • all.equal(list(1), identity) now works. |
| |
| • Bug fix for pushing viewports in grid (reported by JJ Allaire and |
| Kevin Ushey). |
| |
| NOTE for anyone poking around within the graphics engine display |
| list (despite the warnings not to) that this changes what is |
| recorded by grid on the graphics engine display list. |
| |
| • Extra checks have been added for unit resolution and conversion |
| in grid, to catch instances of division-by-zero. This may |
| introduce error messages in existing code and/or produce a |
| different result in existing code (but only where a non-finite |
| location or dimension may now become zero). |
| |
| • Some bugs in TRE have been corrected by updating from the git |
| repository. This allows R to be installed on some platforms for |
| which this was a blocker (PR#15087 suggests Linux on ARM and |
| HP-UX). |
| |
| • ? applied to a call to an S4 generic failed in several cases. |
| (PR#15680) |
| |
| • The implicit S4 generics for primitives with ... in their |
| argument list were incorrect. (PR#15690) |
| |
| • Bug fixes to methods::callGeneric(). (PR#15691) |
| |
| • The bug fix to aggregrate() in PR#15004 introduced a new bug in |
| the case of no grouping variables. (PR#15699) |
| |
| • In rare cases printing deeply nested lists overran a buffer by |
| one byte and on a few platforms segfaulted. (PR#15679) |
| |
| • The dendrogram method of as.dendrogram() was hidden accidentally, |
| (PR#15703), and order.dendrogram(d) gave too much for a leaf d. |
| (PR#15702) |
| |
| • R would try to kill processes on exit that have pids ever used by |
| a child process spawned by mcparallel even though the current |
| process with that pid was not actually its child. |
| |
| • cophenetic() applied to a "dendrogram" object sometimes |
| incorrectly returned a "Labels" attribute with dimensions. |
| (PR#15706) |
| |
| • printCoefmat() called from quite a few print() methods now obeys |
| small getOption("width") settings, line wrapping the "signif. |
| codes" legend appropriately. (PR#15708) |
| |
| • model.matrix() assumed that the stored dimnames for a matrix was |
| NULL or length 2, but length 1 occurred. |
| |
| • The clipping region for a device was sometimes used in base |
| graphics before it was set. |
| |
| CHANGES IN R 3.0.3: |
| |
| NEW FEATURES: |
| |
| • On Windows there is support for making .texi manuals using |
| texinfo 5.0 or later: the setting is in file |
| src/gnuwin32/MkRules.dist. |
| |
| A packaging of the Perl script and modules for texinfo 5.2 has |
| been made available at <URL: |
| http://www.stats.ox.ac.uk/pub/Rtools/>. |
| |
| • write.table() now handles matrices of 2^31 or more elements, for |
| those with large amounts of patience and disc space. |
| |
| • There is a new function, La_version(), to report the version of |
| LAPACK in use. |
| |
| • The HTML version of ‘An Introduction to R’ now has links to PNG |
| versions of the figures. |
| |
| • There is some support to produce manuals in ebook formats. (See |
| doc/manual/Makefile. Suggested by Mauro Cavalcanti.) |
| |
| • On a Unix-alike Sys.timezone() returns NA if the environment |
| variable TZ is unset, to distinguish it from an empty string |
| which on some OSes means the UTC time zone. |
| |
| • The backtick may now be escaped in strings, to allow names |
| containing them to be constructed, e.g. `\``. (PR#15621) |
| |
| • read.table(), readLines() and scan() now warn when an embedded |
| nul is found in the input. (Related to PR#15625 which was |
| puzzled by the behaviour in this unsupported case.) |
| |
| • (Windows only.) file.symlink() works around the undocumented |
| restriction of the Windows system call to backslashes. (Wish of |
| PR#15631.) |
| |
| • KalmanForecast(fast = FALSE) is now the default, and the help |
| contains an example of how fast = TRUE can be used in this |
| version. (The usage will change in 3.1.0.) |
| |
| • strptime() now checks the locale only when locale-specific |
| formats are used and caches the locale in use: this can halve the |
| time taken on OSes with slow system functions (e.g., OS X). |
| |
| • strptime() and the format() methods for classes "POSIXct", |
| "POSIXlt" and "Date" recognize strings with marked encodings: |
| this allows, for example, UTF-8 French month names to be read on |
| (French) Windows. |
| |
| • iconv(to = "utf8") is now accepted on all platforms (some |
| implementations did already, but GNU libiconv did not: however |
| converted strings were not marked as being in UTF-8). The |
| official name, "UTF-8" is still preferred. |
| |
| • available.packages() is better protected against corrupt metadata |
| files. (A recurring problem with Debian package shogun-r: |
| PR#14713.) |
| |
| • Finalizers are marked to be run at garbage collection, but run |
| only at a somewhat safer later time (when interrupts are |
| checked). This circumvents some problems with finalizers running |
| arbitrary code during garbage collection (the known instances |
| being running options() and (C-level) path.expand() |
| re-entrantly). |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The included version of PCRE has been updated to 8.34. This |
| fixes bugs and makes the behaviour closer to Perl 5.18. In |
| particular, the concept of ‘space’ includes VT and hence agrees |
| with POSIX's. |
| |
| PACKAGE INSTALLATION: |
| |
| • The new field SysDataCompression in the DESCRIPTION file allows |
| user control over the compression used for sysdata.rda objects in |
| the lazy-load database. |
| |
| • install.packages(dependencies = value) for value = NA (the |
| default) or value = TRUE omits packages only in LinkingTo for |
| binary package installs. |
| |
| C-LEVEL FACILITIES: |
| |
| • The long undocumented remapping of rround() to Rf_fround() in |
| header Rmath.h is now formally deprecated: use fround() directly. |
| |
| • Remapping of prec() and trunc() in the Rmath.h header has been |
| disabled in C++ code (it has caused breakage with libc++ |
| headers). |
| |
| BUG FIXES: |
| |
| • getParseData() truncated the imaginary part of complex number |
| constants. (Reported by Yihui Xie.) |
| |
| • dbeta(x, a, b) with a or b within a factor of 2 of the largest |
| representable number could infinite-loop. (Reported by Ioannis |
| Kosmidis.) |
| |
| • provideDimnames() failed for arrays with a 0 dimension. |
| (PR#15465) |
| |
| • rbind() and cbind() did not handle list objects correctly. |
| (PR#15468) |
| |
| • replayPlot() now checks if it is replaying a plot from the same |
| session. |
| |
| • rasterImage() and grid.raster() now give error on an empty |
| (zero-length) raster. (Reported by Ben North.) |
| |
| • plot.lm() would sometimes scramble the labels in plot type 5. |
| (PR#15458 and PR#14837) |
| |
| • min() did not handle NA_character_ values properly. (Reported by |
| Magnus Thor Torfason.) |
| |
| • (Windows only.) readRegistry() would duplicate default values |
| for keys. (PR#15455) |
| |
| • str(..., strict.width = "cut") did not handle it properly when |
| more than one line needed to be cut. (Reported by Gerrit |
| Eichner.) |
| |
| • Removing subclass back-references when S4 classes were removed or |
| their namespace unloaded had several bugs (e.g., PR#15481). |
| |
| • aggregate() could fail when there were too many levels present in |
| the by argument. (PR#15004) |
| |
| • namespaceImportFrom() needed to detect primitive functions when |
| checking for duplicated imports (reported by Karl Forner). |
| |
| • getGraphicsEvent() did not exit when a user closed the graphics |
| window. (PR#15208) |
| |
| • Errors in vignettes were not always captured and displayed |
| properly. (PR#15495) |
| |
| • contour() could fail when dealing with extremely small z values. |
| (PR#15454) |
| |
| • Several functions did not handle zero-length vectors properly, |
| including browseEnv(), format(), gl(), relist() and |
| summary.data.frame(). (E.g., PR#15499) |
| |
| • Sweave() did not restore the R output to the console if it was |
| interrupted by a user in the middle of evaluating a code chunk. |
| (Reported by Michael Sumner.) |
| |
| • Fake installs of packages with vignettes work again. |
| |
| • Illegal characters in the input caused parse() (and thus |
| source()) to segfault. (PR#15518) |
| |
| • The nonsensical use of nmax = 1 in duplicated() or unique() is |
| now silently ignored. |
| |
| • qcauchy(p, *) is now fully accurate even when p is very close to |
| 1. (PR#15521) |
| |
| • The validmu() and valideta() functions in the standard glm() |
| families now also report non-finite values, rather than failing. |
| |
| • Saved vignette results (in a .Rout.save file) were not being |
| compared to the new ones during R CMD check. |
| |
| • Double-clicking outside of the list box (e.g., on the scrollbar) |
| of a Tk listbox widget generated by tk_select.list() no longer |
| causes the window to close. (PR#15407) |
| |
| • Improved handling of edge cases in parallel::splitindices(). |
| (PR#15552) |
| |
| • HTML display of results from help.search() and ?? sometimes |
| contained badly constructed links. |
| |
| • c() and related functions such as unlist() converted raw vectors |
| to invalid logical vectors. (PR#15535) |
| |
| • (Windows only) When a call to system2() specified one of stdin, |
| stdout or stderr to be a file, but the command was not found |
| (e.g., it contained its arguments, or the program was not on the |
| PATH), it left the file open and unusable until R terminated. |
| (Reported by Mathew McLean.) |
| |
| • The bmp() device was not recording res = NA correctly: it is now |
| recorded as 72 ppi. |
| |
| • Several potential problems with compiler-specific behaviour have |
| been identified using the ‘Undefined Behaviour Sanitizer’ in |
| conjunction with the clang compiler. |
| |
| • hcl() now honours NA inputs (previously they were mapped to |
| black). |
| |
| • Some translations in base packages were being looked up in the |
| main catalog rather than that for the package. |
| |
| • As a result of the 3.0.2 change about ‘the last second before the |
| epoch’, most conversions which should have given NA returned that |
| time. (The platforms affected include Linux and OS X, but not |
| Windows nor Solaris.) |
| |
| • rowsum() has more support for matrices and data frames with 2^31 |
| or more elements. (PR#15587) |
| |
| • predict(<lm object>, interval = "confidence", scale = |
| <something>) now works. (PR#15564) |
| |
| • The bug fix in 3.0.2 for PR#15411 was too aggressive, and |
| sometimes removed spaces that should not have been removed. |
| (PR#15583) |
| |
| • Running R code in a tcltk callback failed to set the busy flag, |
| which will be needed to tell OS X not to ‘App Nap’. |
| |
| • The code for date-times before 1902 assumed that the offset from |
| GMT in 1902 was a whole number of minutes: that was not true of |
| Paris (as recorded on some platforms). |
| |
| • Using Sys.setlocale to set LC_NUMERIC to "C" (to restore the sane |
| behavior) no longer gives a warning. |
| |
| • deparse() now deparses complex vectors in a way that re-parses to |
| the original values. (PR#15534, patch based on code submitted by |
| Alex Bertram.) |
| |
| • In some extreme cases (more than 10^15) integer inputs to |
| dpqrxxx() functions might have been rounded up by one (with a |
| warning about being non-integer). (PR#15624) |
| |
| • Plotting symbol pch = 14 had the triangle upside down on some |
| devices (typically screen devices). The triangle is supposed to |
| be point up. (Reported by Bill Venables.) |
| |
| • getSrcref() did not work on method definitions if |
| rematchDefinition() had been used. |
| |
| • KalmanForecast(fast = FALSE) reported a (harmless) stack |
| imbalance. |
| |
| • The count of observations used by KalmanRun() did not take |
| missing values into account. |
| |
| • In locales where the abbreviated name of one month is a partial |
| match for the full name of a later one, the %B format in |
| strptime() could fail. An example was French on OS X, where juin |
| is abbreviated to jui and partially matches juillet. Similarly |
| for weekday names. |
| |
| • pbeta(x, a, b, log.p = TRUE) sometimes underflowed to zero for |
| very small and very differently sized a, b. (PR#15641) |
| |
| • approx() and approxfun() now handle infinite values with the |
| "constant" method. (PR#15655) |
| |
| • stripchart() again respects reversed limits in xlim and ylim. |
| (PR#15664) |
| |
| CHANGES IN R 3.0.2: |
| |
| NEW FEATURES: |
| |
| • The NEWS files have been re-organized. |
| |
| This file contains news for R >= 3.0.0: news for the 0.x.y, 1.x.y |
| and 2.x.y releases is in files NEWS.0, NEWS.1 and NEWS.2. The |
| latter files are now installed when R is installed. An HTML |
| version of news from 2.10.0 to 2.15.3 is available as |
| doc/html/NEWS.2.html. |
| |
| • sum() for integer arguments now uses an integer accumulator of at |
| least 64 bits and so will be more accurate in the very rare case |
| that a cumulative sum exceeds 2^53 (necessarily summing more than |
| 4 million elements). |
| |
| • The example() and tools::Rd2ex() functions now have parameters to |
| allow them to ignore \dontrun markup in examples. (Suggested by |
| Peter Solymos.) |
| |
| • str(x) is considerably faster for very large lists, or factors |
| with 100,000 levels, the latter as in PR#15337. |
| |
| • col2rgb() now converts factors to character strings not integer |
| codes (suggested by Bryan Hanson). |
| |
| • tail(warnings()) now works, _via_ the new `[` method. |
| |
| • There is now support for the LaTeX style file zi4.sty which has |
| in some distributions replaced inconsolata.sty. |
| |
| • unlist(x) now typically returns all non-list xs unchanged, not |
| just the “vector” ones. Consequently, format(lst) now also works |
| when the list lst has non-vector elements. |
| |
| • The tools::getVignetteInfo() function has been added to give |
| information about installed vignettes. |
| |
| • New assertCondition(), etc. utilities in tools, useful for |
| testing. |
| |
| • Profiling now records non-inlined calls from byte-compiled code |
| to BUILTIN functions. |
| |
| • Various functions in stats and elsewhere that use non-standard |
| evaluation are now more careful to follow the namespace scoping |
| rules. E.g., stats::lm() can now find stats::model.frame() even |
| if stats is not on the search path or if some package defines a |
| function of that name. |
| |
| • If an invalid/corrupt .Random.seed object is encountered in the |
| workspace it is ignored with a warning rather than giving an |
| error. (This allows R itself to rely on a working RNG, e.g. to |
| choose a random port.) |
| |
| • seq() and seq.int() give more explicit error messages if called |
| with invalid (e.g., NaN) inputs. |
| |
| • When parse() finds a syntax error, it now makes partial parse |
| information available up to the location of the error. (Request |
| of Reijo Sund.) |
| |
| • Methods invoked by NextMethod() had a different dynamic parent to |
| the generic. This was causing trouble where S3 methods invoked |
| _via_ lazy evaluation could lose track of their generic. |
| (PR#15267) |
| |
| • Code for the negative binomial distribution now treats the case |
| size == 0 as a one-point distribution at zero. |
| |
| • abbreviate() handles without warning non-ASCII input strings |
| which require no abbreviation. |
| |
| • read.dcf() no longer has a limit of 8191 bytes per line. (Wish of |
| PR#15250.) |
| |
| • formatC(x) no longer copies the class of x to the result, to |
| avoid misuse creating invalid objects as in PR#15303. A warning |
| is given if a class is discarded. |
| |
| • Dataset npk has been copied from MASS to allow more tests to be |
| run without recommended packages being installed. |
| |
| • The initialization of the regression coefficients for |
| non-degenerate differenced models in arima() has been changed and |
| in some examples avoids a local maximum. (PR#15396) |
| |
| • termplot() now has an argument transform.x to control the display |
| of individual terms in the plot. (PR#15329) |
| |
| • format() now supports digits = 0, to display nsmall decimal |
| places. |
| |
| • There is a new read-only par() parameter called "page", which |
| returns a logical value indicating whether the next plot.new() |
| call will start a new page. |
| |
| • Processing Sweave and Rd documents to PDF now renders backticks |
| and single quotes better in several instances, including in \code |
| and \samp expressions. |
| |
| • utils::modifyList() gets a new argument keep.null allowing NULL |
| components in the replacement to be retained, instead of causing |
| corresponding components to be deleted. |
| |
| • tools::pkgVignettes() gains argument check; if set to TRUE, it |
| will warn when it appears a vignette requests a non-existent |
| vignette engine. |
| |
| UTILITIES: |
| |
| • R CMD check --as-cran checks the line widths in usage and |
| examples sections of the package Rd files. |
| |
| • R CMD check --as-cran now implies --timings. |
| |
| • R CMD check looks for command gfile if a suitable file is not |
| found. (Although file is not from GNU, OpenCSW on Solaris |
| installs it as gfile.) |
| |
| • R CMD build (with the internal tar) checks the permissions of |
| configure and cleanup files and adds execute permission to the |
| recorded permissions for these files if needed, with a warning. |
| This is useful on OSes and file systems which do not support |
| execute permissions (notably, on Windows). |
| |
| • R CMD build now weaves and tangles all vignettes, so suggested |
| packages are not required during package installation if the |
| source tarball was prepared with current R CMD build. |
| |
| • checkFF() (used by R CMD check) does a better job of detecting |
| calls from other packages, including not reporting those where a |
| function has been copied from another namespace (e.g., as a |
| default method). It now reports calls where .NAME is a symbol |
| registered in another package. |
| |
| • On Unix-alike systems, R CMD INSTALL now installs packages group |
| writably whenever the library (lib.loc) is group writable. |
| Hence, update.packages() works for other group members (suggested |
| originally and from a patch by Dirk Eddelbuettel). |
| |
| • R CMD javareconf now supports the use of symbolic links for |
| JAVA_HOME on platforms which have realpath. So it is now |
| possible to use |
| |
| R CMD javareconf JAVA_HOME=/usr/lib/jvm/java-1.7.0 |
| |
| on a Linux system and record that value rather than the |
| frequently-changing full path such as |
| /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64. |
| |
| • (Windows only.) Rscript -e requires a non-empty argument for |
| consistency with Unix versions of R. (Also Rterm -e and R -e.) |
| |
| • R CMD check does more thorough checking of declared packages and |
| namespaces. It reports |
| |
| • packages declared in more than one of the Depends, Imports, |
| Suggests and Enhances fields of the DESCRIPTION file. |
| |
| • namespaces declared in Imports but not imported from, neither |
| in the NAMESPACE file nor using the :: nor ::: operators. |
| |
| • packages which are used in library() or requires() calls in |
| the R code but were already put on the search path _via_ |
| Depends. |
| |
| • packages declared in Depends not imported _via_ the NAMESPACE |
| file (except the standard packages). Objects used from |
| Depends packages should be imported to avoid conflicts and to |
| allow correct operation when the namespace is loaded but not |
| attached. |
| |
| • objects imported _via_ ::: calls where :: would do. |
| |
| • objects imported by :: which are not exported. |
| |
| • objects imported by ::: calls which do not exist. |
| |
| See ‘Writing R Extensions’ for good practice. |
| |
| • R CMD check optionally checks for non-standard top-level files |
| and directories (which are often mistakes): this is enabled for |
| --as-cran. |
| |
| • LaTeX style file upquote.sty is no longer included (the version |
| was several years old): it is no longer used in R. A much later |
| version is commonly included in LaTeX distributions but does not |
| play well with the ae fonts which are the default for Sweave |
| vignettes. |
| |
| • R CMD build makes more use of the build sub-directory of package |
| sources, for example to record information about the vignettes. |
| |
| • R CMD check analyses ::: calls. |
| |
| INSTALLATION and INCLUDED SOFTWARE: |
| |
| • The macros used for the texinfo manuals have been changed to work |
| better with the incompatible changes made in texinfo 5.x. |
| |
| • The minimum version for a system xz library is now 5.0.3 (was |
| 4.999). This is in part to avoid 5.0.2, which can compress in |
| ways other versions cannot decompress. |
| |
| • The included version of PCRE has been updated to 8.33. |
| |
| • The included version of zlib has been updated to 1.2.8, a bug-fix |
| release. |
| |
| • The included version of xz utils's liblzma has been updated to |
| 5.0.5. |
| |
| • Since javareconf (see above) is used when R is installed, a |
| stable link for JAVA_HOME can be supplied then. |
| |
| • Configuring with --disable-byte-compilation will override the |
| DESCRIPTION files of recommended packages, which typically |
| require byte-compilation. |
| |
| • More of the installation and checking process will work even when |
| TMPDIR is set to a path containing spaces, but this is not |
| recommended and external software (such as texi2dvi) may fail. |
| |
| PACKAGE INSTALLATION: |
| |
| • Installation is aborted immediately if a LinkingTo package is not |
| installed. |
| |
| • R CMD INSTALL has a new option --no-byte-compile which will |
| override a ByteCompile field in the package's DESCRIPTION file. |
| |
| • License BSD is deprecated: use BSD_3_clause or BSD_2_clause |
| instead. |
| |
| License X11 is deprecated: use MIT or BSD_2_clause instead. |
| |
| • Version requirements for LinkingTo packages are now recognized: |
| they are checked at installation. (Fields with version |
| requirements were previously silently ignored.) |
| |
| • The limit of 500 S3method entries in a NAMESPACE file has been |
| removed. |
| |
| • The default ‘version’ of Bioconductor for its packages has been |
| changed to the upcoming 2.13, but this can be set by the |
| environment variable R_BIOC_VERSION when R is installed. |
| |
| C-LEVEL FACILITIES: |
| |
| • Rdefines.h has been tweaked so it can be included in C++ code |
| after R_ext/Boolean.h (which is included by R.h). |
| |
| Note that Rdefines.h is not kept up-to-date, and Rinternals.h is |
| preferred for new code. |
| |
| • eval and applyClosure are now protected against package code |
| supplying an invalid rho. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • The unused namespace argument to package.skeleton() is now |
| formally deprecated and will be removed in R 3.1.0. |
| |
| • plclust() is deprecated: use the plot() method for class "hclust" |
| instead. |
| |
| • Functions readNEWS() and checkNEWS() in package tools are |
| deprecated (and they have not worked with current NEWS files for |
| a long time). |
| |
| DOCUMENTATION: |
| |
| • ‘An Introduction to R’ has a new chapter on using R as a |
| scripting language including interacting with the OS. |
| |
| BUG FIXES: |
| |
| • help.request() could not determine the current version of R on |
| CRAN. (PR#15241) |
| |
| • On Windows, file.info() failed on root directories unless the |
| path was terminated with an explicit ".". (PR#15302) |
| |
| • The regmatches<-() replacement function mishandled results coming |
| from regexpr(). (PR#15311) |
| |
| • The help for setClass() and representation() still suggested the |
| deprecated argument representation=. (PR#15312) |
| |
| • R CMD config failed in an installed build of R 3.0.1 (only) when |
| a sub-architecture was used. (Reported by Berwin Turlach.) |
| |
| • On Windows, the installer modified the etc/Rconsole and |
| etc/Rprofile.site files even when default options were chosen, so |
| the MD5 sums did not refer to the installed versions. (Reported |
| by Tal Galili.) |
| |
| • plot(hclust(), cex =) respects cex again (and possibly others |
| similarly). (Reported by Peter Langfelder.) |
| |
| • If multiple packages were checked by R CMD check, and one was |
| written for a different OS, it would set --no-install for all |
| following packages as well as itself. |
| |
| • qr.coef() and related functions did not properly coerce real |
| vectors to complex when necessary. (PR#15332) |
| |
| • ftable(a) now fixes up empty dimnames such that the result is |
| printable. |
| |
| • package.skeleton() was not starting its search for function |
| objects in the correct place if environment was supplied. |
| (Reported by Karl Forner.) |
| |
| • Parsing code was changing the length field of vectors and |
| confusing the memory manager. (PR#15345) |
| |
| • The Fortran routine ZHER2K in the reference BLAS had a |
| comment-out bug in two places. This caused trouble with eigen() |
| for Hermitian matrices. (PR#15345 and report from Robin Hankin) |
| |
| • vignette() and browseVignettes() did not display non-Sweave |
| vignettes properly. |
| |
| • Two warning/error messages have been corrected: the (optional) |
| warning produced by a partial name match with a pairlist, the |
| error message from a zero-length argument to the : operator. |
| (Found by Radford Neal; PR#15358, PR#15356) |
| |
| • svd() returned NULL rather than omitting components as |
| documented. (Found by Radford Neal; PR#15360) |
| |
| • mclapply() and mcparallel() with silent = TRUE could break a |
| process that uses stdout output unguarded against broken pipes |
| (e.g., zip will fail silently). To work around such issues, they |
| now replace stdout with a descriptor pointed to /dev/null |
| instead. For this purpose, internal closeStdout and closeStderr |
| functions have gained the to.null flag. |
| |
| • log(), signif() and round() now raise an error if a single named |
| argument is not named x. (PR#15361) |
| |
| • deparse() now deparses raw vectors in a form that is |
| syntactically correct. (PR#15369) |
| |
| • The jpeg driver in Sweave created a JPEG file, but gave it a .png |
| extension. (PR#15370) |
| |
| • Deparsing of infix operators with named arguments is improved. |
| (PR#15350) |
| |
| • mget(), seq.int() and numericDeriv() did not duplicate arguments |
| properly. (PR#15352, PR#15353, PR#15354) |
| |
| • kmeans(algorithm = "Hartigan-Wong") now always stops iterating in |
| the QTran stage. (PR#15364). |
| |
| • read.dcf() re-allocated incorrectly and so could segfault when |
| called on a file with lines of more than 100 bytes. |
| |
| • On systems where mktime() does not set errno, the last second |
| before the epoch could not be converted from POSIXlt to POSIXct. |
| (Reported by Bill Dunlap.) |
| |
| • add1.glm() miscalculated F-statistics when df > 1. (Bill Dunlap, |
| PR#15386). |
| |
| • stem() now discards infinite inputs rather than hanging. |
| (PR#15376) |
| |
| • The parser now enforces C99 syntax for floating point hexadecimal |
| constants (e.g., 0x1.1p0), rather than returning unintended |
| values for malformed constants. (PR#15234) |
| |
| • model.matrix() now works with very long LHS names (more than 500 |
| bytes). (PR#15377) |
| |
| • integrate() reverts to the pre-2.12.0 behaviour: from 2.12.0 to |
| 3.0.1 it sometimes failed to achieve the requested tolerance and |
| reported error estimates that were exceeded. (PR#15219) |
| |
| • strptime() now handles %W fields with value 0. (PR#15915) |
| |
| • R is now better protected against people trying to interact with |
| the console in startup code. (PR#15325) |
| |
| • Subsetting 1D arrays often lost dimnames (PR#15301). |
| |
| • Unary + on a logical vector did not coerce to integer, although |
| unary - did. |
| |
| • na.omit() and na.exclude() added a row to a zero-row data frame. |
| (PR#15399) |
| |
| • All the (where necessary cut-down) vignettes are installed if R |
| was configured with --without-recommended-packages. |
| |
| • source() did not display filenames when reporting syntax errors. |
| |
| • Syntax error reports misplaced the caret pointing out the bad |
| token. |
| |
| • (Windows only) Starting R with R (instead of Rterm or Rgui) would |
| lose any zero-length strings from the command line arguments. |
| (PR#15406) |
| |
| • Errors in the encoding specified on the command line _via_ |
| --encoding=foo were not handled properly. (PR#15405) |
| |
| • If x is a symbol, is.vector(x, "name") now returns TRUE, since |
| "name" and "symbol" should be synonyms. (Reported by Hervé |
| Pagès.) |
| |
| • R CMD rtags works on platforms (such as OS X) with a |
| XSI-conformant shell command echo. (PR#15231) |
| |
| • is.unsorted(NA) returns false as documented (rather than NA). |
| |
| • R CMD LINK did not know about sub-architectures. |
| |
| • system() and system2() are better protected against users who |
| misguidedly have spaces in the temporary directory path. |
| |
| • file.show() and edit() are now more likely to work on file paths |
| containing spaces. (Where external utilities are used, not the |
| norm on Windows nor in R.app which should previously have |
| worked.) |
| |
| • Packages using the methods package are more likely to work when |
| they import it but it is not attached. (Several parts of its C |
| code were looking for its R functions on the search path rather |
| than in its namespace.) |
| |
| • lgamma(-x) is no longer NaN for very small x. |
| |
| • (Windows) system2() now respects specifying stdout and stderr as |
| files if called from Rgui. (PR#15393) |
| |
| • Closing an x11() device whilst locator() or identify() is in |
| progress no longer hangs R. (PR#15253) |
| |
| • list.dirs(full.names = FALSE) was not implemented. (PR#15170) |
| |
| • format() sometimes added unnecessary spaces. (PR#15411) |
| |
| • all.equal(check.names = FALSE) would ignore the request to ignore |
| the names and would check them as attributes. |
| |
| • The symbol set by tools::Rd2txt_options(itemBullet=) was not |
| respected in some locales. (PR#15435) |
| |
| • mcMap() was not exported by package parallel. (PR#15439) |
| |
| • plot() for TukeyHSD objects did not balance dev.hold() and |
| dev.flush() calls on multi-page plots. (PR#15449) |
| |
| CHANGES IN R 3.0.1: |
| |
| NEW FEATURES: |
| |
| • chooseCRANmirror() and chooseBioCmirror() gain an ind argument |
| (like setRepositories()). |
| |
| • mcparallel has a new argument mc.interactive which can modify the |
| interactive flag in the child process. The new default is FALSE |
| which makes child processes non-interactive by default (this |
| prevents lock-ups due to children waiting for interactive input). |
| |
| • scan() now warns when end-of-file occurs within a quoted string. |
| |
| • count.fields() is now consistent with scan() in its handling of |
| newlines in quoted strings. Instead of triggering an error, this |
| results in the current line receiving NA as the field count, with |
| the next line getting the total count of the two lines. |
| |
| • The default method of image() will plot axes of the class of xlim |
| and ylim (and hence of x and y if there is a suitable range() |
| method). Based on a suggestion of Michael Sumner. |
| |
| • load() now has a verbose argument for debugging support, to print |
| the names of objects just before loading them. |
| |
| • When loading a serialized object encounters a reference to a |
| namespace which cannot be loaded, this is replaced by a reference |
| to the global environment, with a warning. |
| |
| • pairs() gains a line.main option for title placement. |
| |
| • The remaining instances in which serialization to a raw vector |
| was limited to 2GB have been unlimited on a 64-bit platform, and |
| in most cases serialization to a vector of more than 1GB will be |
| substantially faster. |
| |
| UTILITIES: |
| |
| • R CMD config now make use of personal Makevars files under ~/.R |
| and a site file Makevars.site, in the same way as R CMD SHLIB and |
| R CMD INSTALL. This makes the utility more useful in package |
| configure scripts. |
| |
| On Windows finding the personal files may require the environment |
| variable HOME set. |
| |
| The old behaviour can be obtained with the new options |
| --no-user-files and --no-site-files. |
| |
| PACKAGE INSTALLATION: |
| |
| • Alternatives to the site and user customization files |
| Makevars.site and ~/.R/Makevars can be specified _via_ the |
| environment variables R_MAKEVARS_SITE and R_MAKEVARS_USER |
| respectively. These can be used to suppress the use of the |
| default files by setting an empty value (where possible) or a |
| non-existent path. |
| |
| BUG FIXES: |
| |
| • sys.source() did not report error locations when keep.source = |
| TRUE. |
| |
| • as.POSIXct.numeric was coercing origin using the tz argument and |
| not "GMT" as documented (PR#14973). |
| |
| • The active binding to assign fields in reference classes has been |
| cleaned up to reduce dependence on the class' package |
| environment, also fixing bug in initializing read-only fields |
| (inspired by a report from Hadley Wickham). |
| |
| • str(d) no longer gives an error when names(d) contain illegal |
| multibyte strings (PR#15247). |
| |
| • Profiling of built-in functions with line.profiling= TRUE did not |
| record the line from which they were called. |
| |
| • citation(pkg) dropped the header and footer specified in the |
| CITATION file (PR#15257). |
| |
| • Quotes were handled differently when reading the first line and |
| reading the rest, so read.table() misread some files that |
| contained quote characters (PR#15245). |
| |
| • cat() with sep a character vector of length greater than one and |
| more than one argument was using separators inconsistently |
| (PR#15261). |
| |
| • On Windows in R 3.0.0, savePlot() failed because of an incorrect |
| check on the argument count. |
| |
| • unzip(list = TRUE) returned Names as a factor and not a character |
| vector (as documented) for the internal method. (Noticed by Sean |
| O'Riordain.) |
| |
| • contourLines() now checks more comprehensively for conformance of |
| its x, y and z arguments (it was used incorrectly in package |
| R2G2). |
| |
| • Saved graphics display lists are R version-specific. Attempting |
| to load workspaces containing them (or some other |
| version-specific objects) aborted the load in R 3.0.0 and |
| earlier; now it does a partial load and generates a warning |
| instead. |
| |
| • In R 3.0.0, identify() and locator() did not record information |
| correctly, so replaying a graph (e.g., by copying it to another |
| device) would fail. (PR#15271) |
| |
| • Calling file.copy() or dirname() with the invalid input "" (which |
| was being used in packages, despite not being a file path) could |
| have caused a segfault. |
| |
| dirname("") is now "" rather than "." (unless it segfaulted). |
| |
| • supsmu() could read/write outside its input vectors for very |
| short inputs (seen in package rms for n = 4). |
| |
| • as.dendrogram()'s hclust method uses less memory and hence gets |
| considerably faster for large (n ~ 1000) clusterings, thanks to |
| Daniel Müllner. (PR#15174) |
| |
| • The return value when all workers failed from |
| parallel::mclapply(mc.preschedule = TRUE) was a list of strings |
| and not of error objects. (Spotted by Karl Forner and Bernd |
| Bischl.) |
| |
| • In R 3.0.0, when help() found multiple pages with the same alias, |
| the HTML display of all the selections was not produced. |
| (PR#15282) |
| |
| • splinefun(method="monoH.FC") now produces a function with first |
| argument named x and allows deriv=3, as documented. (PR#15273) |
| |
| • summaryRprof() would only read the first chunksize lines of an |
| Rprof file produced with line.profiling=TRUE. By default, this is |
| the first 100 seconds. (PR#15288) |
| |
| • lsfit() produced an incorrect error message when argument x had |
| more columns than rows or x had a different number of rows than |
| y. (Spotted by Renaud Gaujoux.) |
| |
| • Binary operations on equal length vectors copied the class name |
| from the second operand when the first had no class name, but did |
| not set the object bit. (PR#15299) |
| |
| • The trace() method for reference generator objects failed after |
| those objects became function definitions. |
| |
| • write.table() did not check that factors were constructed |
| correctly, and so caused a segment fault when writing bad ones. |
| (PR#15300) |
| |
| • The internal HTTP server no longer chokes on POST requests |
| without body. It will also pass-through other request types for |
| custom handlers (with the method stored in Request-Method header) |
| instead of failing. |
| |
| CHANGES IN R 3.0.0: |
| |
| SIGNIFICANT USER-VISIBLE CHANGES: |
| |
| • Packages need to be (re-)installed under this version (3.0.0) of |
| R. |
| |
| • There is a subtle change in behaviour for numeric index values |
| 2^31 and larger. These never used to be legitimate and so were |
| treated as NA, sometimes with a warning. They are now legal for |
| long vectors so there is no longer a warning, and x[2^31] <- y |
| will now extend the vector on a 64-bit platform and give an error |
| on a 32-bit one. |
| |
| • It is now possible for 64-bit builds to allocate amounts of |
| memory limited only by the OS. It may be wise to use OS |
| facilities (e.g., ulimit in a bash shell, limit in csh), to set |
| limits on overall memory consumption of an R process, |
| particularly in a multi-user environment. A number of packages |
| need a limit of at least 4GB of virtual memory to load. |
| |
| 64-bit Windows builds of R are by default limited in memory usage |
| to the amount of RAM installed: this limit can be changed by |
| command-line option --max-mem-size or setting environment |
| variable R_MAX_MEM_SIZE. |
| |
| • Negative numbers for colours are consistently an error: |
| previously they were sometimes taken as transparent, sometimes |
| mapped into the current palette and sometimes an error. |
| |
| NEW FEATURES: |
| |
| • identical() has a new argument, ignore.environment, used when |
| comparing functions (with default FALSE as before). |
| |
| • There is a new option, options(CBoundsCheck=), which controls how |
| .C() and .Fortran() pass arguments to compiled code. If true |
| (which can be enabled by setting the environment variable |
| R_C_BOUNDS_CHECK to yes), raw, integer, double and complex |
| arguments are always copied, and checked for writing off either |
| end of the array on return from the compiled code (when a second |
| copy is made). This also checks individual elements of character |
| vectors passed to .C(). |
| |
| This is not intended for routine use, but can be very helpful in |
| finding segfaults in package code. |
| |
| • In layout(), the limits on the grid size have been raised |
| (again). |
| |
| • New simple provideDimnames() utility function. |
| |
| • Where methods for length() return a double value which is |
| representable as an integer (as often happens for package |
| Matrix), this is converted to an integer. |
| |
| • Matrix indexing of data frames by two-column numeric indices is |
| now supported for replacement as well as extraction. |
| |
| • setNames() now has a default for its object argument, useful for |
| a character result. |
| |
| • StructTS() has a revised additive constant in the loglik |
| component of the result: the previous definition is returned as |
| the loglik0 component. However, the help page has always warned |
| of a lack of comparability of log-likelihoods for non-stationary |
| models. (Suggested by Jouni Helske.) |
| |
| • The logic in aggregate.formula() has been revised. It is now |
| possible to use a formula stored in a variable; previously, it |
| had to be given explicitly in the function call. |
| |
| • install.packages() has a new argument quiet to reduce the amount |
| of output shown. |
| |
| • Setting an element of the graphics argument lwd to a negative or |
| infinite value is now an error. Lines corresponding to elements |
| with values NA or NaN are silently omitted. |
| |
| Previously the behaviour was device-dependent. |
| |
| • Setting graphical parameters cex, col, lty, lwd and pch in par() |
| now requires a length-one argument. Previously some silently |
| took the first element of a longer vector, but not always when |
| documented to do so. |
| |
| • Sys.which() when used with inputs which would be unsafe in a |
| shell (e.g., absolute paths containing spaces) now uses |
| appropriate quoting. |
| |
| • as.tclObj() has been extended to handle raw vectors. Previously, |
| it only worked in the other direction. (Contributed by Charlie |
| Friedemann, PR#14939.) |
| |
| • New functions cite() and citeNatbib() have been added, to allow |
| generation of in-text citations from "bibentry" objects. A |
| cite() function may be added to bibstyle() environments. |
| |
| • A sort() method has been added for "bibentry" objects. |
| |
| • The bibstyle() function now defaults to setting the default |
| bibliography style. The getBibstyle() function has been added to |
| report the name of the current default style. |
| |
| • scatter.smooth() now has an argument lpars to pass arguments to |
| lines(). |
| |
| • pairs() has a new log argument, to allow some or all variables to |
| be plotted on logarithmic scale. (In part, wish of PR#14919.) |
| |
| • split() gains a sep argument. |
| |
| • termplot() does a better job when given a model with interactions |
| (and no longer attempts to plot interaction terms). |
| |
| • The parser now incorporates code from Romain Francois' parser |
| package, to support more detailed computation on the code, such |
| as syntax highlighting, comment-based documentation, etc. |
| Functions getParseData() and getParseText() access the data. |
| |
| • There is a new function rep_len() analogous to rep.int() for when |
| speed is required (and names are not). |
| |
| • The undocumented use rep(NULL, length.out = n) for n > 0 (which |
| returns NULL) now gives a warning. |
| |
| • demo() gains an encoding argument for those packages with |
| non-ASCII demos: it defaults to the package encoding where there |
| is one. |
| |
| • strwrap() converts inputs with a marked encoding to the current |
| locale: previously it made some attempt to pass through as bytes |
| inputs invalid in the current locale. |
| |
| • Specifying both rate and scale to [dpqr]gamma is a warning (if |
| they are essentially the same value) or an error. |
| |
| • merge() works in more cases where the data frames include |
| matrices. (Wish of PR#14974.) |
| |
| • optimize() and uniroot() no longer use a shared parameter object |
| across calls. (nlm(), nlminb() and optim() with numerical |
| derivatives still do, as documented.) |
| |
| • The all.equal() method for date-times is now documented: times |
| are regarded as equal (by default) if they differ by up to 1 |
| msec. |
| |
| • duplicated() and unique() gain a nmax argument which can be used |
| to make them much more efficient when it is known that there are |
| only a small number of unique entries. This is done |
| automatically for factors. |
| |
| • Functions rbinom(), rgeom(), rhyper(), rpois(), rnbinom(), |
| rsignrank() and rwilcox() now return integer (not double) |
| vectors. This halves the storage requirements for large |
| simulations. |
| |
| • sort(), sort.int() and sort.list() now use radix sorting for |
| factors of less than 100,000 levels when method is not supplied. |
| So does order() if called with a single factor, unless na.last = |
| NA. |
| |
| • diag() as used to generate a diagonal matrix has been re-written |
| in C for speed and less memory usage. It now forces the result |
| to be numeric in the case diag(x) since it is said to have ‘zero |
| off-diagonal entries’. |
| |
| • backsolve() (and forwardsolve()) are now internal functions, for |
| speed and support for large matrices. |
| |
| • More matrix algebra functions (e.g., chol() and solve()) accept |
| logical matrices (and coerce to numeric). |
| |
| • sample.int() has some support for n >= 2^31: see its help for the |
| limitations. |
| |
| A different algorithm is used for (n, size, replace = FALSE, prob |
| = NULL) for n > 1e7 and size <= n/2. This is much faster and |
| uses less memory, but does give different results. |
| |
| • approxfun() and splinefun() now return a wrapper to an internal |
| function in the stats namespace rather than a .C() or .Call() |
| call. This is more likely to work if the function is saved and |
| used in a different session. |
| |
| • The functions .C(), .Call(), .External() and .Fortran() now give |
| an error (rather than a warning) if called with a named first |
| argument. |
| |
| • Sweave() by default now reports the locations in the source |
| file(s) of each chunk. |
| |
| • clearPushBack() is now a documented interface to a long-existing |
| internal call. |
| |
| • aspell() gains filters for R code, Debian Control Format and |
| message catalog files, and support for R level dictionaries. In |
| addition, package utils now provides functions |
| aspell_package_R_files() and aspell_package_C_files() for spell |
| checking R and C level message strings in packages. |
| |
| • bibentry() gains some support for “incomplete” entries with a |
| crossref field. |
| |
| • gray() and gray.colors() finally allow alpha to be specified. |
| |
| • monthplot() gains parameters to control the look of the reference |
| lines. (Suggestion of Ian McLeod.) |
| |
| • Added support for new %~% relation (“is distributed as”) in |
| plotmath. |
| |
| • domain = NA is accepted by gettext() and ngettext(), analogously |
| to stop() etc. |
| |
| • termplot() gains a new argument plot = FALSE which returns |
| information to allow the plots to be modified for use as part of |
| other plots, but does not plot them. (Contributed by Terry |
| Therneau, PR#15076.) |
| |
| • quartz.save(), formerly an undocumented part of R.app, is now |
| available to copy a device to a quartz() device. dev.copy2pdf() |
| optionally does this for PDF output: quartz.save() defaults to |
| PNG. |
| |
| • The default method of pairs() now allows text.panel = NULL and |
| the use of <foo>.panel = NULL is now documented. |
| |
| • setRefClass() and getRefClass() now return class generator |
| functions, similar to setClass(), but still with the reference |
| fields and methods as before (suggestion of Romain Francois). |
| |
| • New functions bitwNot(), bitwAnd(), bitwOr() and bitwXor(), using |
| the internal interfaces previously used for classes "octmode" and |
| "hexmode". |
| |
| Also bitwShiftL() and bitwShiftR() for shifting bits in elements |
| of integer vectors. |
| |
| • New option "deparse.cutoff" to control the deparsing of language |
| objects such as calls and formulae when printing. (Suggested by |
| a comment of Sarah Goslee.) |
| |
| • colors() gains an argument distinct. |
| |
| • New demo(colors) and demo(hclColors), with utility functions. |
| |
| • list.files() (aka dir()) gains a new optional argument no.. which |
| allows to exclude "." and ".." from listings. |
| |
| • Multiple time series are also of class "matrix"; consequently, |
| head(), e.g., is more useful. |
| |
| • encodeString() preserves UTF-8 marked encodings. Thus if factor |
| levels are marked as UTF-8 an attempt is made to print them in |
| UTF-8 in RGui on Windows. |
| |
| • readLines() and scan() (and hence read.table()) in a UTF-8 locale |
| now discard a UTF-8 byte-order-mark (BOM). Such BOMs are allowed |
| but not recommended by the Unicode Standard: however Microsoft |
| applications can produce them and so they are sometimes found on |
| websites. |
| |
| The encoding name "UTF-8-BOM" for a connection will ensure that a |
| UTF-8 BOM is discarded. |
| |
| • mapply(FUN, a1, ..) now also works when a1 (or a further such |
| argument) needs a length() method (which the documented arguments |
| never do). (Requested by Hervé Pagès; with a patch.) |
| |
| • .onDetach() is supported as an alternative to .Last.lib. Unlike |
| .Last.lib, this does not need to be exported from the package's |
| namespace. |
| |
| • The srcfile argument to parse() may now be a character string, to |
| be used in error messages. |
| |
| • The format() method for ftable objects gains a method argument, |
| propagated to write.ftable() and print(), allowing more compact |
| output, notably for LaTeX formatting, thanks to Marius Hofert. |
| |
| • The utils::process.events() function has been added to trigger |
| immediate event handling. |
| |
| • Sys.which() now returns NA (not "") for NA inputs (related to |
| PR#15147). |
| |
| • The print() method for class "htest" gives fewer trailing spaces |
| (wish of PR#15124). |
| |
| Also print output from HoltWinters(), nls() and others. |
| |
| • loadNamespace() allows a version specification to be given, and |
| this is used to check version specifications given in the Imports |
| field when a namespace is loaded. |
| |
| • setClass() has a new argument, slots, clearer and less ambiguous |
| than representation. It is recommended for future code, but |
| should be back-compatible. At the same time, the allowed slot |
| specification is slightly more general. See the documentation |
| for details. |
| |
| • mget() now has a default for envir (the frame from which it is |
| called), for consistency with get() and assign(). |
| |
| • close() now returns an integer status where available, invisibly. |
| (Wish of PR#15088.) |
| |
| • The internal method of tar() can now store paths too long for the |
| ustar format, using the (widely supported) GNU extension. It can |
| also store long link names, but these are much less widely |
| supported. There is support for larger files, up to the ustar |
| limit of 8GB. |
| |
| • Local reference classes have been added to package methods. |
| These are a technique for avoiding unneeded copying of large |
| components of objects while retaining standard R functional |
| behavior. See ?LocalReferenceClasses. |
| |
| • untar() has a new argument restore_times which if false (not the |
| default) discards the times in the tarball. This is useful if |
| they are incorrect (some tarballs submitted to CRAN have times in |
| a local time zone or many years in the past even though the |
| standard required them to be in UTC). |
| |
| • replayplot() cannot (and will not attempt to) replay plots |
| recorded under R < 3.0.0. It may crash the R session if an |
| attempt is made to replay plots created in a different build of R |
| >= 3.0.0. |
| |
| • Palette changes get recorded on the display list, so replaying |
| plots (including when resizing screen devices and using |
| dev.copy()) will work better when the palette is changed during a |
| plot. |
| |
| • chol(pivot = TRUE) now defaults to LAPACK, not LINPACK. |
| |
| • The parse() function has a new parameter keep.source, which |
| defaults to options("keep.source"). |
| |
| • Profiling _via_ Rprof() now optionally records information at the |
| statement level, not just the function level. |
| |
| • The Rprof() function now quotes function names in in its output |
| file on Windows, to be consistent with the quoting in Unix. |
| |
| • Profiling _via_ Rprof() now optionally records information about |
| time spent in GC. |
| |
| • The HTML help page for a package now displays non-vignette |
| documentation files in a more accessible format. |
| |
| • To support options(stringsAsFactors = FALSE), model.frame(), |
| model.matrix() and replications() now automatically convert |
| character vectors to factors without a warning. |
| |
| • The print method for objects of class "table" now detects tables |
| with 0-extents and prints the results as, e.g., < table of extent |
| 0 x 1 x 2 >. (Wish of PR#15198.) |
| |
| • Deparsing involving calls to anonymous functions has been made |
| closer to reversible by the addition of extra parentheses. |
| |
| • The function utils::packageName() has been added as a lightweight |
| version of methods::getPackageName(). |
| |
| • find.package(lib.loc = NULL) now treats loaded namespaces |
| preferentially in the same way as attached packages have been for |
| a long time. |
| |
| • In Windows, the Change Directory dialog now defaults to the |
| current working directory, rather than to the last directory |
| chosen in that dialog. |
| |
| • available.packages() gains a "license/restricts_use" filter which |
| retains only packages for which installation can proceed solely |
| based on packages which are guaranteed not to restrict use. |
| |
| • New check_packages_in_dir() function in package tools for |
| conveniently checking source packages along with their reverse |
| dependencies. |
| |
| • R's completion mechanism has been improved to handle help |
| requests (starting with a question mark). In particular, help |
| prefixes are now supported, as well as quoted help topics. To |
| support this, completion inside quotes are now handled by R by |
| default on all platforms. |
| |
| • The memory manager now allows the strategy used to balance |
| garbage collection and memory growth to be controlled by setting |
| the environment variable R_GC_MEM_GROW. See ?Memory for more |
| details. |
| |
| • (‘For experts only’, as the introductory manual says.) The use |
| of environment variables R_NSIZE and R_VSIZE to control the |
| initial (= minimum) garbage collection trigger for number of cons |
| cels and size of heap has been restored: they can be overridden |
| by the command-line options --min-nsize and --min-vsize; see |
| ?Memory. |
| |
| • On Windows, the device name for bitmap devices as reported by |
| .Device and .Devices no longer includes the file name. This is |
| for consistency with other platforms and was requested by the |
| lattice maintainer. |
| |
| win.metafile() still uses the file name: the exact form is used |
| by package tkrplot. |
| |
| • set.seed(NULL) re-initializes .Random.seed as done at the |
| beginning of the session if not already set. (Suggestion of Bill |
| Dunlap.) |
| |
| • The breaks argument in hist.default() can now be a function that |
| returns the breakpoints to be used (previously it could only |
| return the suggested number of breakpoints). |
| |
| • File share/licenses/licenses.db has some clarifications, |
| especially as to which variants of ‘BSD’ and ‘MIT’ is intended |
| and how to apply them to packages. The problematic licence |
| ‘Artistic-1.0’ has been removed. |
| |
| LONG VECTORS: |
| |
| This section applies only to 64-bit platforms. |
| |
| • There is support for vectors longer than 2^31 - 1 elements. This |
| applies to raw, logical, integer, double, complex and character |
| vectors, as well as lists. (Elements of character vectors remain |
| limited to 2^31 - 1 bytes.) |
| |
| • Most operations which can sensibly be done with long vectors |
| work: others may return the error ‘long vectors not supported |
| yet’. Most of these are because they explicitly work with |
| integer indices (e.g., anyDuplicated() and match()) or because |
| other limits (e.g., of character strings or matrix dimensions) |
| would be exceeded or the operations would be extremely slow. |
| |
| • length() returns a double for long vectors, and lengths can be |
| set to 2^31 or more by the replacement function with a double |
| value. |
| |
| • Most aspects of indexing are available. Generally double-valued |
| indices can be used to access elements beyond 2^31 - 1. |
| |
| • There is some support for matrices and arrays with each dimension |
| less than 2^31 but total number of elements more than that. Only |
| some aspects of matrix algebra work for such matrices, often |
| taking a very long time. In other cases the underlying Fortran |
| code has an unstated restriction (as was found for complex |
| svd()). |
| |
| • dist() can produce dissimilarity objects for more than 65536 rows |
| (but for example hclust() cannot process such objects). |
| |
| • serialize() to a raw vector is unlimited in size (except by |
| resources). |
| |
| • The C-level function R_alloc can now allocate 2^35 or more bytes. |
| |
| • agrep() and grep() will return double vectors of indices for long |
| vector inputs. |
| |
| • Many calls to .C() have been replaced by .Call() to allow long |
| vectors to be supported (now or in the future). Regrettably |
| several packages had copied the non-API .C() calls and so failed. |
| |
| • .C() and .Fortran() do not accept long vector inputs. This is a |
| precaution as it is very unlikely that existing code will have |
| been written to handle long vectors (and the R wrappers often |
| assume that length(x) is an integer). |
| |
| • Most of the methods for sort() work for long vectors. |
| |
| rank(), sort.list() and order() support long vectors (slowly |
| except for radix sorting). |
| |
| • sample() can do uniform sampling from a long vector. |
| |
| PERFORMANCE IMPROVEMENTS: |
| |
| • More use has been made of R objects representing registered entry |
| points, which is more efficient as the address is provided by the |
| loader once only when the package is loaded. |
| |
| This has been done for packages base, methods, splines and tcltk: |
| it was already in place for the other standard packages. |
| |
| Since these entry points are always accessed by the R entry |
| points they do not need to be in the load table which can be |
| substantially smaller and hence searched faster. This does mean |
| that .C / .Fortran / .Call calls copied from earlier versions of |
| R may no longer work - but they were never part of the API. |
| |
| • Many .Call() calls in package base have been migrated to |
| .Internal() calls. |
| |
| • solve() makes fewer copies, especially when b is a vector rather |
| than a matrix. |
| |
| • eigen() makes fewer copies if the input has dimnames. |
| |
| • Most of the linear algebra functions make fewer copies when the |
| input(s) are not double (e.g., integer or logical). |
| |
| • A foreign function call (.C() etc) in a package without a PACKAGE |
| argument will only look in the first DLL specified in the |
| NAMESPACE file of the package rather than searching all loaded |
| DLLs. A few packages needed PACKAGE arguments added. |
| |
| • The @<- operator is now implemented as a primitive, which should |
| reduce some copying of objects when used. Note that the operator |
| object must now be in package base: do not try to import it |
| explicitly from package methods. |
| |
| PACKAGE INSTALLATION: |
| |
| • The transitional support for installing packages without |
| namespaces (required since R 2.14.0) has been removed. R CMD |
| build will still add a namespace, but a .First.lib() function |
| will need to be converted. |
| |
| R CMD INSTALL no longer adds a namespace (so installation will |
| fail), and a .First.lib() function in a package will be ignored |
| (with an installation warning for now). |
| |
| As an exception, packages without a R directory and no NAMESPACE |
| file can still be installed. |
| |
| • Packages can specify in their DESCRIPTION file a line like |
| |
| Biarch: yes |
| |
| to be installed on Windows with --force-biarch. |
| |
| • Package vignettes can now be processed by other engines besides |
| Sweave; see ‘Writing R Extensions’ and the tools::vignetteEngine |
| help topic for details. |
| |
| • The *.R tangled source code for vignettes is now included in |
| tarballs when R CMD build is used to produce them. In R 3.0.0, |
| *.R files not in the sources will be produced at install time, |
| but eventually this will be dropped. |
| |
| • The package type "mac.binary" now looks in a path in the |
| repository without any Mac subtype (which used to be universal or |
| leopard): it looks in bin/macosx/contrib/3.0 rather than |
| bin/macosx/leopard/contrib/2.15). This is the type used for the |
| CRAN binary distribution for OS X as from R 3.0.0. |
| |
| • File etc/Makeconf makes more use of the macros $(CC), $(CXX), |
| $(F77) and $(FC), so the compiler in use can be changed by |
| setting just these (and if necessary the corresponding flags and |
| FLIBS) in file ~/.R/Makevars. |
| |
| This is convenient for those working with binary distributions of |
| R, e.g. on OS X. |
| |
| UTILITIES: |
| |
| • R CMD check now gives a warning rather than a note if it finds |
| calls to abort, assert or exit in compiled code, and has been |
| able to find the .o file in which the calls occur. |
| |
| Such calls can terminate the R process which loads the package. |
| |
| • The location of the build and check environment files can now be |
| specified by the environment variables R_BUILD_ENVIRON and |
| R_CHECK_ENVIRON, respectively. |
| |
| • R CMD Sweave gains a --compact option to control possibly |
| reducing the size of the PDF file it creates when --pdf is given. |
| |
| • R CMD build now omits Eclipse's .metadata directories, and R CMD |
| check warns if it finds them. |
| |
| • R CMD check now does some checks on functions defined within |
| reference classes, including of .Call() etc calls. |
| |
| • R CMD check --as-cran notes assignments to the global |
| environment, calls to data() which load into the global |
| environment, and calls to attach(). |
| |
| • R CMD build by default uses the internal method of tar() to |
| prepare the tarball. This is more likely to produce a tarball |
| compatible with R CMD INSTALL and R CMD check: an external tar |
| program, including options, can be specified _via_ the |
| environment variable R_BUILD_TAR. |
| |
| • tools::massageExamples() is better protected against packages |
| which re-define base functions such as cat() and get() and so can |
| cause R CMD check to fail when checking examples. |
| |
| • R CMD javareconf has been enhanced to be more similar to the code |
| used by configure. |
| |
| There is now a test that a JNI program can be compiled (like |
| configure did) and only working settings are used. |
| |
| It makes use of custom settings from configuration recorded in |
| etc/javaconf. |
| |
| • The --no-vignettes argument of R CMD build has been renamed to |
| the more accurate --no-build-vignettes: its action has always |
| been to (re)build vignettes and never omitted them. |
| |
| R CMD check accepts --no-build-vignettes as a preferred synonym |
| for --no-rebuild-vignettes. |
| |
| DEPRECATED AND DEFUNCT: |
| |
| • The ENCODING argument to .C() is defunct. Use iconv() instead. |
| |
| • The .Internal(eval.with.vis) non-API function has been removed. |
| |
| • Support for the converters for use with .C() has been removed, |
| including the oft misused non-API header R_ext/RConverters.h. |
| |
| • The previously deprecated uses of array() with a 0-length dim |
| argument and tapply() with a 0-length INDEX list are now errors. |
| |
| • Translation packages are defunct. |
| |
| • Calling rep() or rep.int() on a pairlist or other non-vector |
| object is now an error. |
| |
| • Several non-API entry points have been transferred to packages |
| (e.g., R_zeroin2) or replaced by different non-API entry points |
| (e.g., R_tabulate). |
| |
| • The ‘internal’ graphics device invoked by |
| .Call("R_GD_nullDevice", package = "grDevices") has been removed: |
| use pdf(file = NULL) instead. |
| |
| • The .Fortran() entry point "dqrls" which has not been used by R |
| since version 2.15.1 is no longer available. |
| |
| • Functions traceOn() and traceOff() in package methods are now |
| defunct. |
| |
| • Function CRAN.packages() is finally defunct. |
| |
| • Use of col2rgb(0) is defunct: use par("bg") or NA instead. |
| |
| • The long-defunct functions Rd_parse(), anovalist.lm(), |
| categpry(), clearNames(), gammaCody(), glm.fit.null(), |
| lm.fit.null(), lm.wfit.null(), manglePackageNames(), |
| mauchley.test(), package.contents(), print.coefmat(), |
| reshapeLong(), reshapeWide(), tkclose(), tkcmd(), tkfile.dir(), |
| tkfile.tail(), tkopen(), tkputs(), tkread(), trySilent() and |
| zip.file.extract() have been removed entirely (but are still |
| documented in the help system). |
| |
| • The unused dataPath argument to attachNamespace() has been |
| removed. |
| |
| • grid.prompt() has been removed: use devAskNewPage() instead. |
| |
| • The long-deprecated intensities component is no longer returned |
| by hist(). |
| |
| • mean() for data frames and sd() for data frames and matrices are |
| defunct. |
| |
| • chol(pivot = FALSE, LINPACK = TRUE), ch2inv(LINPACK = TRUE), |
| eigen(EISPACK = TRUE), solve(LINPACK = TRUE) and svd(LINPACK = |
| TRUE) are defunct: LAPACK will be used, with a warning. |
| |
| • The keep.source argument to library() and require() is defunct. |
| This option needs to be set at install time. |
| |
| • Documentation for real(), as.real() and is.real() has been moved |
| to ‘defunct’ and the functions removed. |
| |
| • The maxRasters argument of pdf() (unused since R 2.14.0) has been |
| removed. |
| |
| • The unused fontsmooth argument has been removed from the quartz() |
| device. |
| |
| • All the (non-API) EISPACK entry points in R have been removed. |
| |
| • chol(pivot = TRUE, LINPACK = TRUE) is deprecated. |
| |
| • The long-deprecated use of \synopsis in the Usage section of .Rd |
| files will be removed in R 3.1.0. |
| |
| • .find.package() and .path.package() are deprecated: only the |
| public versions without the dot have ever been in the API. |
| |
| • In a package's DESCRIPTION file, |
| |
| License: X11 |
| |
| is deprecated, since it includes ‘Copyright (C) 1996 X |
| Consortium’ which cannot be appropriate for a current R package. |
| Use ‘MIT’ or ‘BSD_2_clause’ instead. |
| |
| CODE MIGRATION: |
| |
| • The C code underlying base graphics has been migrated to the |
| graphics package (and hence no longer uses .Internal() calls). |
| |
| • Most of the .Internal() calls used in the stats package have been |
| migrated to C code in that package. |
| |
| This means that a number of .Internal() calls which have been |
| used by packages no longer exist, including .Internal(cor) |
| .Internal(cov), .Internal(optimhess) and |
| .Internal(update.formula). |
| |
| • Some .External() calls to the base package (really to the R |
| executable or shared library) have been moved to more appropriate |
| packages. Packages should not have been using such calls, but |
| some did (mainly those used by integrate()). |
| |
| PACKAGE parallel: |
| |
| • There is a new function mcaffinity() which allows getting or |
| setting the CPU affinity mask for the current R process on |
| systems that supports this (currently only Linux has been tested |
| successfully). It has no effect on systems which do not support |
| process affinity. Users are not expected to use this function |
| directly (with the exception of fixing libraries that break |
| affinity settings like OpenBLAS) - the function is rather |
| intended to support affinity control in high-level parallel |
| functions. In the future, R may supplement lack of affinity |
| control in the OS by its own bookkeeping _via_ mcaffinity() |
| related to processes and threads it spawns. |
| |
| • mcparallel() has a new argument mc.affinity which attempts to set |
| the affinity of the child process according to the specification |
| contained therein. |
| |
| • The port used by socket clusters is chosen randomly: this should |
| help to avoid clashes observed when two users of a multi-user |
| machine try to create a cluster at the same time. To reproduce |
| the previous behaviour set environment variable R_PARALLEL_PORT |
| to 10187. |
| |
| C-LEVEL FACILITIES: |
| |
| • There has been some minor re-organization of the non-API header |
| files. In particular, Rinternals.h no longer includes the |
| non-API header R_exts/PrtUtil.h, and that no longer includes |
| R_exts/Print.h. |
| |
| • Passing NULL to .C() is now an error. |
| |
| • .C() and .Fortran() now warn if "single" arguments are used with |
| DUP = FALSE, as changes to such arguments are not returned to the |
| caller. |
| |
| • C entry points R_qsort and R_qsort_I now have start and end as |
| size_t to allow them to work with longer vectors on 64-bit |
| platforms. Code using them should be recompiled. |
| |
| • A few recently added C entry points were missing the remapping to |
| Rf_, notably [dpq]nbinom_mu. |
| |
| • Some of the interface pointers formerly available only to R.app |
| are now available to front-ends on all Unix-alikes: one has been |
| added for the interface to View(). |
| |
| • PACKAGE = "" is now an error in .C() etc calls: it was always |
| contrary to the documentation. |
| |
| • Entry point rcont2 has been migrated to package stats and so is |
| no longer available. |
| |
| • R_SVN_REVISION in Rversion.h is now an integer (rather than a |
| string) and hence usable as e.g. #if R_SVN_REVISION < 70000. |
| |
| • The entry points rgb2hsv and hsv2rgb have been migrated to |
| package grDevices and so are no longer available. |
| |
| • R_GE_version has been increased to 10 and name2col removed (use |
| R_GE_str2col instead). R internal colour codes are now defined |
| using the typedef rcolor. |
| |
| • The REPROTECT macro now checks that the protect index is valid. |
| |
| • Several non-API entry points no longer used by R have been |
| removed, including the Fortran entry points chol, chol2inv, cg, |
| ch and rg, and the C entry points Brent_fmin, fft_factor and |
| fft_work. |
| |
| • If a .External call is registered with a number of arguments |
| (other than -1), the number of arguments passed is checked for |
| each call (as for other foreign function calls). |
| |
| • It is now possible to write custom connection implementations |
| outside core R using R_ext/Connections.h. Please note that the |
| implementation of connections is still considered internal and |
| may change in the future (see the above file for details). |
| |
| INTERNATIONALIZATION: |
| |
| • The management of translations has been converted to R code: see |
| ?tools::update_pkg_po. |
| |
| • The translations for the R interpreter and RGui.exe are now part |
| of the base package (rather than having sources in directory po |
| and being installed to share/locale). Thus the base package |
| supports three translation domains, R-base, R and RGui. |
| |
| • The compiled translations which ship with R are all installed to |
| the new package translations for easier updating. The first |
| package of that name found on .libPaths() at the start of the R |
| session will be used. (It is possible messages will be used |
| before .libPaths() is set up in which case the default |
| translations will be used: set environment variable |
| R_TRANSLATIONS to point to the location of the intended |
| translations package to use this right from the start.) |
| |
| • The translations form a separate group in the Windows installer, |
| so can be omitted if desired. |
| |
| • The markup for many messages has been changed to make them easier |
| to translate, incorporating suggestions from Łukasz Daniel. |
| |
| INSTALLATION: |
| |
| • There is again support for building without using the C ‘long |
| double’ type. This is required by C99, but system |
| implementations can be slow or flawed. Use configure option |
| --disable-long-double. |
| |
| • make pdf and make install-pdf now make and install the full |
| reference index (including all base and recommended packages). |
| |
| • The 'reference manual' on the Windows GUI menu and included in |
| the installer is now the full reference index, including all base |
| and recommended packages. |
| |
| • R help pages and manuals have no ISBNs because ISBN rules no |
| longer allow constantly changing content to be assigned an ISBN. |
| |
| • The Windows installer no longer installs a Start Menu link to the |
| static help pages; as most pages are generated dynamically, this |
| led to a lot of broken links. |
| |
| • Any custom settings for Java configuration are recorded in file |
| etc/javaconf for subsequent use by R CMD javareconf. |
| |
| • There is now support for makeinfo version 5.0 (which requires a |
| slightly different .texi syntax). |
| |
| • The minimum versions for --use-system-zlib and --use-system-pcre |
| are now tested as 1.2.5 and 8.10 respectively. |
| |
| • On Windows, the stack size is reduced to 16MB on 32-bit systems: |
| misguided users were launching many threads without controlling |
| the stack size. |
| |
| • configure no longer looks for file ~/.Rconfig: ~/.R/config has |
| long been preferred. |
| |
| BUG FIXES: |
| |
| • When R CMD build is run in an encoding other than the one |
| specified in the package's DESCRIPTION file it tries harder to |
| expand the authors@R field in the specified encoding. (PR#14958) |
| |
| • If R CMD INSTALL is required to expand the authors@R field of the |
| DESCRIPTION file, it tries harder to do so in the encoding |
| specified for the package (rather than using ASCII escapes). |
| |
| • Fix in package grid for pushing a viewport into a layout cell, |
| where the layout is within a viewport that has zero physical |
| width OR where the layout has zero total relative width (likewise |
| for height). The layout column widths (or row heights) in this |
| case were being calculated with non-finite values. (Reported by |
| Winston Chang.) |
| |
| • solve(A, b) for a vector b gave the answer names from colnames(A) |
| for LINPACK = TRUE but not in the default case. |
| |
| • La.svd() accepts logical matrices (as documented, and as svd() |
| did). |
| |
| • legend() now accepts negative pch values, in the same way |
| points() long has. |
| |
| • Parse errors when installing files now correctly display the name |
| of the file containing the bad code. |
| |
| • In Windows, tcltk windows were not always properly constructed. |
| (PR#15150) |
| |
| • The internal functions implementing parse(), tools::parseLatex() |
| and tools::parse_Rd() were not reentrant, leading to errors in |
| rare circumstances such as a garbage collection triggering a |
| recursive call. |
| |
| • Field assignments in reference class objects _via_ $<- were not |
| being checked because the magic incantation to turn methods on |
| for that primitive operator had been inadvertently omitted. |
| |
| • setHook(hookname, value, action="replace") set the hook to be the |
| value, rather than a list containing the value as documented. |
| (PR#15167) |
| |
| • If a package used a NEWS.Rd file, the main HTML package index |
| page did not link to it. (Reported by Dirk Eddelbuettel.) |
| |
| • The primitive implementation of @<- was not checking the class of |
| the replacement. It now does a check, quicker but less general |
| than slot<-. See the help. |
| |
| • split(x, f) now recycles classed objects x in the same way as |
| vectors. (Reported by Martin Morgan.) |
| |
| • pbeta(.28, 1/2, 2200, lower.tail=FALSE, log.p=TRUE) is no longer |
| -Inf; ditto for corresponding pt() and pf() calls, such as pt(45, |
| df=5000, lower.tail=FALSE, log.p=TRUE). (PR#15162) |
| |
| • The Windows graphics device would crash R if a user attempted to |
| load the graphics history from a variable that was not a saved |
| history. (PR#15230) |
| |
| • The workspace size for the predict() method for loess() could |
| exceed the maximum integer size. (Reported by Hiroyuki |
| Kawakatsu.) |
| |
| • ftable(x, row.vars, col.vars) now also works when the *.vars |
| arguments are (integer or character vectors) of length zero. |
| |
| • Calling cat() on a malformed UTF-8 string could cause the Windows |
| GUI to lock up. (PR#15227) |
| |
| • removeClass(cc) gave "node stack overflow" for some class |
| definitions containing "array" or "matrix". |
| |
| CHANGES in previous versions: |
| |
| • Older news can be found in text format in files NEWS.0, NEWS.1 and |
| NEWS.2 in the doc directory. News in HTML format for R versions |
| from 2.10.0 to 2.15.3 is in doc/html/NEWS.2.html. |
| |