Dear Emacs, please make this -*-Text-*- mode!
This file covers NEWS for R 2.x.y.
See 'NEWS' (or doc/html/NEWS.html or doc/NEWS.Rd) for
subsequent changes and NEWS.0 and NEWS.1 for earlier ones.
There is a change in format at 2.10.0: entries from
then on are generated from doc/NEWS.2.Rd.
CHANGES IN R VERSION 2.15.3:
NEW FEATURES:
• lgamma(x) for very small x (in the denormalized range) is no
longer Inf with a warning.
• image() now sorts an unsorted breaks vector, with a warning.
• The internal methods for tar() and untar() do a slightly more
general job for ‘ustar’-style handling of paths of more than 100
bytes.
• Packages compiler and parallel have been added to the reference
index (refman.pdf).
• untar(tar = "internal") has some support for pax headers as
produced by e.g. gnutar --posix (which seems prevalent on
OpenSUSE 12.2) or bsdtar --format pax, including long path and
link names.
• sQuote() and dQuote() now handle 0-length inputs. (Suggestion of
Ben Bolker.)
• summaryRprof() returns zero-row data frames rather than throw an
error if no events are recorded, for consistency.
• The included version of PCRE has been updated to 8.32.
• The tcltk namespace can now be re-loaded after unloading.
The Tcl/Tk event loop is inhibited in a forked child from package
parallel (as in e.g. mclapply()).
• parallel::makeCluster() recognizes the value random for the
environment variable R_PARALLEL_PORT: this chooses a random value
for the port and reduces the chance of conflicts when multiple
users start a cluster at the same time.
UTILITIES:
• The default for TAR on Windows for R CMD build has been changed
to be internal if no tar command is on the path.
This enables most packages to be built ‘out of the box’ without
Rtools: the main exceptions are those which need to be installed
to re-build vignettes and need Rtools for installation (usually
because they contain compiled code).
C-LEVEL FACILITIES:
• On a 64-bit Windows platform with enough RAM, R_alloc can now
allocate up to just under 32GB like other 64-bit platforms.
DEPRECATED AND DEFUNCT:
• Use of col2rgb(0) is deprecated (see the help page for its
limitations).
• The deprecated intensities component returned by hist() is no
longer recognized by the plot() method and will be removed in R
3.0.0.
• real(), as.real() and is.real() are now formally deprecated and
give a warning.
• This is formal notice that the non-API EISPACK entry points in R
will be removed shortly.
INSTALLATION:
• The configure tests for Objective C and Objective C++ now work on
Mac OS 10.8 with Xcode 4.5.2 (PR#15107).
• The cairo-based versions of X11() now work with current versions
of cairographics (e.g. 1.12.10). (PR#15168)
A workaround for earlier versions of R is to use X11.options(type
= "nbcairo").
• Configuration and R CMD javareconf now come up with a smaller set
of library paths for Java on Oracle-format JDK (including
OpenJDK). This helps avoid conflicts between libraries (such as
libjpeg) supplied in the JDK and system libraries. This can
always be overridden if needed: see the ‘R Installation and
Administration’ manual.
BUG FIXES:
• beta(a, b) could overflow to infinity in its calculations when
one of a and b was less than one. (PR#15075)
• lbeta(a, b) no longer gives NaN if a or b is very small (in the
denormalized range).
• bquote() is now able to substitute default arguments in
single-argument functions. (PR#15077)
• browseEnv(html = FALSE) would segfault if called from R (not
R.app) on a CRAN-style Mac OS X build of R.
• [[= 3.8.1.
• The model.frame() method for "lm" uses xlevels: this is safer if
data was supplied or model = FALSE was used and the levels of
factors used in the fit had been re-ordered since fitting.
Similarly, model.frame(fm, data=) copies across the
variables used for safe prediction from the fit.
• Functions such as parLapply() in package parallel can make use of
a default cluster if one is set. (Reported by Martin Morgan.)
• chol(pivot = TRUE, LINPACK = FALSE) is now available using LAPACK
3.2 subroutine DPSTRF.
• The functions .C(), .Call(), .External() and .Fortran() now check
that they are called with an unnamed first argument: the formal
arguments were changed from name= to .NAME= in R 2.13.0, but some
packages were still using the old name. This is currently a
warning, but will be an error in future.
• step() no longer tries to improve a model with AIC of -Inf (a
perfect fit).
• spline() and splinefun() gain a new method "hyman", an
implementation of Hyman's method of constructing monotonic
interpolation splines. (Based on contributions of Simon Wood and
Rob Hyndman.)
• On Windows, the C stack size has been increased to 64MB (it has
been 10MB since the days of 32MB RAM systems).
PERFORMANCE IMPROVEMENTS:
• array() is now implemented in C code (for speed) when data is
atomic or an unclassed list (so it is known that as.vector(data)
will have no class to be used by rep()).
• rep() is faster and uses less memory, substantially so in some
common cases (e.g. if times is of length one or length.out is
given, and each = 1).
• findInterval(), tabulate(), cut(), hist() and image.default() all
use .Call() and are more efficient.
• duplicated(), unique() and similar now support vectors of lengths
above 2^29 on 64-bit platforms.
• Omitting PACKAGE in .C() etc calls was supposed to make use of
the DLL from the namespace within which the enclosing function
was defined. It was less successful in doing so than it might
be, and gave no indication it had failed.
A new search strategy is very successful and gives a warning when
it fails. In most cases this is because the entry point is not
actually provided by that package (and so PACKAGE should be used
to indicate which package is intended) but in some the namespace
does not have a DLL specified by a useDynLib() directive so
PACKAGE is required.
UTILITIES:
• R CMD check now checks if a package can be loaded by
library(pkgname, lib.loc = "somewhere") without being on the
library search path (unless it is already installed in .Library,
when it always will be).
• R CMD check --as-cran notes ‘hidden’ files and directories (with
names starting with a dot) that are not needed for the operation
of R CMD INSTALL or R CMD build: such files should be excluded
from the published tarball.
• R CMD check (if checking subdirectories) checks that the R code
in any demos is ASCII and can be parsed, and warns if not.
• When R CMD Rd2pdf is used with inputenx.sty, it allows further
characters (mainly for Eastern European languages) by including
ix-utf8enc.dfu (if available). (Wish of PR#14989.)
• R CMD build now omits several types of hidden files/directories,
including inst/doc/.Rinstignore, vignettes/.Rinstignore,
(.Rinstignore should be at top level), .deps under src,
.Renviron, .Rprofile, .Rproj.user, .backups, .cvsignore,
.cproject, .directory, .dropbox, .exrc, .gdb.history,
.gitattributes, .gitignore, .gitmodules, .hgignore, .hgtags,
.htaccess, .latex2html-init, .project, .seed, .settings,
.tm_properties and various leftovers.
• R CMD check now checks for .C(), .Call(), .External() and
.Fortran() calls in other packages, and gives a warning on those
found from R itself (which are not part of the API and change
without notice: many will be changed for R 3.0.0).
C-LEVEL FACILITIES:
• The limit for R_alloc on 64-bit platforms has been raised to just
under 32GB (from just under 16GB).
• The misuse of .C("name", ..., PACKAGE = foo) where foo is an
arbitrary R object is now an error.
The misuse .C("name",..., PACKAGE = "") is now warned about in R
CMD check, and will be an error in future.
DEPRECATED AND DEFUNCT:
• Use of array() with a 0-length dim argument is deprecated with a
warning (and was contrary to the documentation).
• Use of tapply() with a 0-length INDEX list is deprecated with a
warning.
• Translation packages are deprecated.
• Calling rep() or rep.int() on a pairlist is deprecated and will
give a warning. In any case, rep() converted a pairlist to a
list so you may as well do that explicitly.
• Entry point rcont2 is no longer part of the API, and will move to
package stats in R 3.0.0.
• The ‘internal’ graphics device invoked by
.Call("R_GD_nullDevice", package = "grDevices") is about to be
removed: use pdf(file = NULL) instead.
• eigen(EISPACK = TRUE), chol(pivot = FALSE, LINPACK = TRUE),
chol2inv(LINPACK = TRUE), solve(LINPACK = TRUE) and svd(LINPACK =
TRUE) are deprecated and give a warning.
They were provided for compatibility with R 1.7.0 (Mar 2003)!
• The ‘internal function’ kappa.tri() has been renamed to
.kappa_tri() so it is not inadvertently called as a method for
class "tri".
• Functions sessionData() and browseAll() in package methods are on
a help page describing them as ‘deprecated’ and are now formally
deprecated.
PACKAGE INSTALLATION:
• For a Windows or Mac OS X binary package install,
install.packages() will check if a source package is available on
the same repositories, and report if it is a later version or
there is a source package but no binary package available.
This check can be suppressed: see the help page.
• install.packages(type = "both") has been enhanced. In
interactive use it will ask whether to choose the source version
of a package if the binary version is older and contains compiled
code, and also asks if source packages with no binary version
should be installed).
INSTALLATION:
• There is a new configure option --with-libtiff (mainly in case
the system installation needs to be avoided).
• LAPACK 3.4.1 does use some Fortran 90 features, so g77 no longer
suffices.
• If an external LAPACK is used, it must be version 3.2 or later.
BUG FIXES:
• On Windows, starting Rterm via R.exe caused Ctrl-C to misbehave.
(PR#14948)
• The tools::latexToUtf8() function missed conversions that were
contained within braces.
• Long timezone specifications (such as a file name preceded by :)
could crash as.POSIXlt. (PR#14945)
• R CMD build --resave-data could fail if there was no data
directory but there was an R/sysdata.rda file. (PR#14947)
• is.na() misbehaved on a 0-column data frame. (PR#14959)
• anova.lmlist() failed if test was supplied. (PR#14960)
It was unable to compute Cp tests for object of class "lm" (it
assumed class "glm").
• The formula method for sunflowerplot() now allows xlab and ylab
to be set. (Reported by Gerrit Eichner.)
• The "POSIXt" and "Date" methods for hist() could fail on Windows
where adjustments to the right-hand boundary crossed a DST
transition time.
• On Windows, the code in as.POSIXct() to handle incorrectly
specified isdst fields might have resulted in NA being returned.
• aov() and manova() gave spurious warning about singular error
model in the multiresponse case.
• In ns() and bs(), specifying knots = NULL is now equivalent to
omitting it, also when df is specified. (PR#14970)
• sprintf() did not accept numbered arguments ending in zero.
(PR#14975)
• rWishart() could overflow the C stack and maybe crash the R
process for dimensions of several hundreds or more. (Reported by
Michael Braun on R-sig-mac.)
• Base package vignettes (e.g. vignette("Sweave")) were not fully
installed in builds of R from the tarball.
• lchoose() and choose() could overflow the C stack and crash R.
• When given a 0-byte file and asked to keep source references,
parse() read input from stdin() instead.
• pdf(compress = TRUE) did not delete temporary files it created
until the end of the R session. (PR#14991)
• logLik() did not detect the error of applying it to a
multiple-response linear model. (PR#15000)
• file.copy(recursive = TRUE) did not always report FALSE for a
failure two or more directories deep.
• qgeom() could return -1 for extremely small q. (PR#14967)
• smooth.spline() used DUP = FALSE which allowed its compiled C
code to change the function: this was masked by the default
byte-compilation. (PR#14965)
• In Windows, the GUI preferences for foreground color were not
always respected. (Reported by Benjamin Wells.)
• On OS X, the Quartz versions of the bitmap devices did not
respect antialias = "none". (PR#15006)
• unique() and similar would infinite-loop if called on a vector of
length > 2^29 (but reported that the vector was too long for 2^30
or more).
• parallel::stopCluster() now works with MPI clusters without snow
being on the search path.
• terms.formula() could exhaust the stack, and the stack check did
not always catch this before the segfault. (PR#15013)
• sort.list(method = "radix") could give incorrect results on
certain compilers (seen with clang on Mac OS 10.7 and Xcode
4.4.1).
• backsolve(T, b) gave incorrect results when nrows(b) > ncols(T)
and b had more than one column.
It could segfault or give nonsense if k was specified as more
than ncols(T).
• smooth.spline() did not check that a specified numeric spar was
of length 1, and gave corrupt results if it was of length 0.
• Protection added to do_system. (PR#15025)
• Printing of vectors with names > 1000 characters now works
correctly rather than truncating. (PR#15028)
• qr() for a complex matrix did not pivot the column names.
• --with-blas='-framework vecLib' now also works on OS X 10.8.
• R CMD check no longer fails with an error if a DESCRIPTION file
incorrectly contains a blank line. (Reported by Bill Dunlap.)
• install.packages(type = "both") could call chooseCRANmirror()
twice.
• lm.wfit() could segfault in R 2.15.1 if all the weights were
zero. (PR#15044)
• A malformed package name could cause R CMD INSTALL to write
outside the target library.
• Some of the quality control functions (e.g. tools::checkFF())
were wrongly identifying the source of S4 methods in a package
and so not checking them.
• The default type of display by browseEnv() when using R.app on
Mac OS X has been incorrect for a long time.
• The implementation of importMethodsFrom in a NAMESPACE file could
be confused and fail to find generics when importing from
multiple packages (reported and fixed by Michael Lawrence).
• The detection of the C stack direction is better protected
against compiler optimization. (PR#15011)
• Long custom line types would sometimes segfault on the
cairographics-based devices. (PR#15055)
• tools::checkPoFile() unprotected too early in its C code and so
segfaulted from time to time.
• The Fortran code underlying nlminb() could infinite-loop if any
of the input functions returned NA or NaN. This is now an error
for the gradient or Hessian, and a warning for the function (with
the value replaced by Inf). (In part, PR#15052.)
• The code for creating coerce() methods could generate false notes
about ambiguous selection; the notes have been suppressed for
this function.
• arima.sim() could give too long an output in some corner cases
(in part, PR#15068).
• anova.glm() with test = "Rao" didn't work when models included an
offset. (Reported by Søren Feodor Nielsen.)
• as.data.frame.matrix() could return invalid data frame with no
row.names attribute for 0-row matrix. (Reported by Hervé Pagès.)
• Compilation with the vecLib or Accelerate frameworks on OS X
without using that also for LAPACK is more likely to be
successful.
CHANGES IN R VERSION 2.15.1:
NEW FEATURES:
• source() now uses withVisible() rather than
.Internal(eval.with.vis). This sometimes alters tracebacks
slightly.
• install.packages("pkg_version.tgz") on Mac OS X now has sanity
checks that this is actually a binary package (as people have
tried it with incorrectly named source packages).
• splineDesign() and spline.des() in package splines have a new
option sparse which can be used for efficient construction of a
sparse B-spline design matrix (_via_ Matrix).
• norm() now allows type = "2" (the ‘spectral’ or 2-norm) as well,
mainly for didactical completeness.
• pmin() and pmax()) now also work when one of the inputs is of
length zero and others are not, returning a zero-length vector,
analogously to, say, +.
• colorRamp() (and hence colorRampPalette()) now also works for the
boundary case of just one color when the ramp is flat.
• .C() gains some protection against the misuse of character vector
arguments. (An all too common error is to pass character(N),
which initializes the elements to "", and then attempt to edit
the strings in-place, sometimes forgetting to terminate them.)
• Calls to the new function globalVariables() in package utils
declare that functions and other objects in a package should be
treated as globally defined, so that CMD check will not note
them.
• print(packageDescription(*)) trims the Collate field by default.
• The included copy of zlib has been updated to version 1.2.7.
• A new option "show.error.locations" has been added. When set to
TRUE, error messages will contain the location of the most recent
call containing source reference information. (Other values are
supported as well; see ?options.)
• The NA warning messages from e.g. pchisq() now report the call to
the closure and not that of the .Internal.
• Added Polish translations by Łukasz Daniel.
PERFORMANCE IMPROVEMENTS:
• In package parallel, makeForkCluster() and the multicore-based
functions use native byte-order for serialization (deferred from
2.15.0).
• lm.fit(), lm.wfit(), glm.fit() and lsfit() do less copying of
objects, mainly by using .Call() rather than .Fortran().
• .C() and .Fortran() do less copying: arguments which are raw,
logical, integer, real or complex vectors and are unnamed are not
copied before the call, and (named or not) are not copied after
the call. Lists are no longer copied (they are supposed to be
used read-only in the C code).
• tabulate() makes use of .C(DUP = FALSE) and hence does not copy
bin. (Suggested by Tim Hesterberg.) It also avoids making a
copy of a factor argument bin.
• Other functions (often or always) doing less copying include
cut(), dist(), the complex case of eigen(), hclust(), image(),
kmeans(), loess(), stl() and svd(LINPACK = TRUE).
• There is less copying when using primitive replacement functions
such as names(), attr() and attributes().
DEPRECATED AND DEFUNCT:
• The converters for use with .C() (see ?getCConverterDescriptions)
are deprecated: use the .Call() interface instead. There are no
known examples (they were never fully documented).
UTILITIES:
• For R CMD check, a few people have reported problems with
junctions on Windows (although they were tested on Windows 7, XP
and Server 2008 machines and it is unknown under what
circumstances the problems occur). Setting the environment
variable R_WIN_NO_JUNCTIONS to a non-empty value (e.g. in
~/.R/check.Renviron) will force copies to be used instead.
INSTALLATION:
• R CMD INSTALL with _R_CHECK_INSTALL_DEPENDS_ set to a true value
(as done by R CMD check --as-cran) now restricts the packages
available when lazy-loading as well as when test-loading (since
packages such as ETLUtils and agsemisc had top-level calls to
library() for undeclared packages).
This check is now also available on Windows.
C-LEVEL FACILITIES:
• C entry points mkChar and mkCharCE now check that the length of
the string they are passed does not exceed 2^31-1 bytes: they
used to overflow with unpredictable consequences.
• C entry points R_GetCurrentSrcref and R_GetSrcFilename have been
added to the API to allow debuggers access to the source
references on the stack.
WINDOWS-SPECIFIC CHANGES:
• Windows-specific changes will now be announced in this file
(NEWS). Changes up and including R 2.15.0 remain in the CHANGES
file.
• There are two new environment variables which control the
defaults for command-line options.
If R_WIN_INTERNET2 is set to a non-empty value, it is as if
--internet2 was used.
If R_MAX_MEM_SIZE is set, it gives the default memory limit if
--max-mem-size is not specified: invalid values being ignored.
BUG FIXES:
• lsfit() lost the names from the residuals.
• More cases in which merge() could create a data frame with
duplicate column names now give warnings. Cases where names
specified in by match multiple columns are errors.
• Nonsense uses such as seq(1:50, by = 5) (from package plotrix)
and seq.int(1:50, by = 5) are now errors.
• The residuals in the 5-number summary printed by summary() on an
"lm" object are now explicitly labelled as weighted residuals
when non-constant weights are present. (Wish of PR#14840.)
• tracemem() reported that all objects were copied by .C() or
.Fortran() whereas only some object types were ever copied.
It also reported and marked as copies _some_ transformations such
as rexp(n, x): it no longer does so.
• The plot() method for class "stepfun" only used the optional xval
argument to compute xlim and not the points at which to plot (as
documented). (PR#14864)
• Names containing characters which need to be escaped were not
deparsed properly. (PR#14846)
• Trying to update (recommended) packages in R_HOME/library without
write access is now dealt with more gracefully. Further, such
package updates may be skipped (with a warning), when a newer
installed version is already going to be used from .libPaths().
(PR#14866)
• hclust() is now fast again (as up to end of 2003), with a
different fix for the "median"/"centroid" problem. (PR#4195).
• get_all_vars() failed when the data came entirely from vectors in
the global environment. (PR#14847)
• R CMD check with _R_CHECK_NO_RECOMMENDED_ set to a true value (as
done by the --as-cran option) could issue false errors if there
was an indirect dependency on a recommended package.
• formatC() uses the C entry point str_signif which could write
beyond the length allocated for the output string.
• Missing default argument added to implicit S4 generic for
backsolve(). (PR#14883)
• Some bugs have been fixed in handling load actions that could
fail to export assigned items or generate spurious warnings in
CMD check on loading.
• For tiff(type = "windows"), the numbering of per-page files
except the last was off by one.
• On Windows, loading package stats (which is done for a default
session) would switch line endings on stdout and stderr from CRLF
to LF. This affected Rterm and R CMD BATCH.
• On Windows, the compatibility function x11() had not kept up with
changes to windows(), and issued warnings about bad parameters.
(PR#14880)
• On Windows, the Sys.glob() function did not handle UNC paths as
it was designed to try to do. (PR#14884)
• In package parallel, clusterApply() and similar failed to handle
a (pretty pointless) length-1 argument. (PR#14898)
• Quartz Cocoa display reacted asynchronously to dev.flush() which
means that the redraw could be performed after the plot has been
already modified by subsequent code. The redraw is now done
synchronously in dev.flush() to allow animations without sleep
cycles.
• Source locations reported in traceback() were incorrect when
byte-compiled code was on the stack.
• plogis(x, lower = FALSE, log.p = TRUE) no longer underflows early
for large x (e.g. 800).
• ?Arithmetic's “1 ^ y and y ^ 0 are 1, _always_” now also applies
for integer vectors y.
• X11-based pixmap devices like png(type = "Xlib") were trying to
set the cursor style, which triggered some warnings and hangs.
• Code executed by the built-in HTTP server no longer allows other
HTTP clients to re-enter R until the current worker evaluation
finishes, to prevent cascades.
• The plot() and Axis() methods for class "table" now respect
graphical parameters such as cex.axis. (Reported by Martin
Becker.)
• Under some circumstances package.skeleton() would give out
progress reports that could not be translated and so were
displayed by question marks. Now they are always in English.
(This was seen for CJK locales on Windows, but may have occurred
elsewhere.)
• The evaluator now keeps track of source references outside of
functions, e.g. when source() executes a script.
• The replacement method for window() now works correctly for
multiple time series of class "mts". (PR#14925)
• is.unsorted() gave incorrect results on non-atomic objects such
as data frames. (Reported by Matthew Dowle.)
• The value returned by tools::psnice() for invalid pid values was
not always NA as documented.
• Closing an X11() window while locator() was active could abort
the R process.
• getMethod(f, sig) produced an incorrect error message in some
cases when f was not a string).
• Using a string as a “call” in an error condition with
options(showErrorCalls=TRUE) could cause a segfault. (PR#14931)
• The string "infinity" allowed by C99 was not accepted as a
numerical string value by e.g. scan() and as.numeric().
(PR#14933)
• In legend(), setting some entries of lwd to NA was inconsistent
(depending on the graphics device) in whether it would suppress
those lines; now it consistently does so. (PR#14926)
• by() failed for a zero-row data frame. (Reported by Weiqiang
Qian.)
• The Yates' correction in chisq.test() could be bigger than the
terms it corrected, previously leading to an infinite test
statistic in some corner cases which are now reported as NaN.
• xgettext() and related functions sometimes returned items that
were not strings for translation. (PR#14935)
• plot(, which=5) now correctly labels the factor level
combinations for the special case where all h[i,i] are the same.
(PR#14837)
• Sys.glob() caused a segfault if the first element of path was
NA_character. (PR#14990)
CHANGES IN R VERSION 2.15.0:
SIGNIFICANT USER-VISIBLE CHANGES:
• The behaviour of unlink(recursive = TRUE) for a symbolic link to
a directory has changed: it now removes the link rather than the
directory contents (just as rm -r does).
On Windows it no longer follows reparse points (including
junctions and symbolic links).
NEW FEATURES:
• Environment variable RD2DVI_INPUTENC has been renamed to
RD2PDF_INPUTENC.
• .Deprecated() becomes a bit more flexible, getting an old
argument.
• Even data-only packages without R code need a namespace and so
may need to be installed under R 2.14.0 or later.
• assignInNamespace() has further restrictions on use apart from at
top-level, as its help page has warned. Expect it to be disabled
from programmatic use in the future.
• system() and system2() when capturing output report a non-zero
status in the new "status" attribute.
• kronecker() now has an S4 generic in package methods on which
packages can set methods. It will be invoked by X %x% Y if
either X or Y is an S4 object.
• pdf() accepts forms like file = "|lpr" in the same way as
postscript().
• pdf() accepts file = NULL. This means that the device does NOT
create a PDF file (but it can still be queried, e.g., for font
metric info).
• format() (and hence print()) on "bibentry" objects now uses
options("width") to set the output width.
• legend() gains a text.font argument. (Suggested by Tim Paine,
PR#14719.)
• nchar() and nzchar() no longer accept factors (as integer
vectors). (Wish of PR#6899.)
• summary() behaves slightly differently (or more precisely, its
print() method does). For numeric inputs, the number of NAs is
printed as an integer and not a real. For dates and datetimes,
the number of NAs is included in the printed output (the latter
being the wish of PR#14720).
The "data.frame" method is more consistent with the default
method: in particular it now applies zapsmall() to
numeric/complex summaries.
• The number of items retained with options(warn = 0) can be set by
options(nwarnings=).
• There is a new function assignInMyNamespace() which uses the
namespace of the function it is called from.
• attach() allows the default name for an attached file to be
overridden.
• bxp(), the work horse of boxplot(), now uses a more sensible
default xlim in the case where at is specified differently from
1:n, see the discussion on R-devel, .
• New function paste0(), an efficient version of paste(*, sep=""),
to be used in many places for more concise (and slightly more
efficient) code.
• Function setClass() in package methods now returns, invisibly, a
generator function for the new class, slightly preferred to
calling new(), as explained on the setClass help page.
• The "dendrogram" method of str() now takes its default for
last.str from option str.dendrogram.last.
• New simple fitted() method for "kmeans" objects.
• The traceback() function can now be called with an integer
argument, to display a current stack trace. (Wish of PR#14770.)
• setGeneric() calls can be simplified when creating a new generic
function by supplying the default method as the def argument.
See ?setGeneric.
• serialize() has a new option xdr = FALSE which will use the
native byte-order for binary serializations. In scenarios where
only little-endian machines are involved (these days, close to
universal) and (un)serialization takes an appreciable amount of
time this may speed up noticeably transferring data between
systems.
• The internal (un)serialization code is faster for long vectors,
particularly with XDR on some platforms. (Based on a suggested
patch by Michael Spiegel.)
• For consistency, circles with zero radius are omitted by points()
and grid.circle(). Previously this was device-dependent, but
they were usually invisible.
• NROW(x) and NCOL(x) now work whenever dim(x) looks appropriate,
e.g., also for more generalized matrices.
• PCRE has been updated to version 8.30.
• The internal R_Srcref variable is now updated before the browser
stops on entering a function. (Suggestion of PR#14818.)
• There are ‘bare-bones’ functions .colSums(), .rowSums(),
.colMeans() and .rowMeans() for use in programming where ultimate
speed is required.
• The formerly internal function .package_dependencies() from
package tools for calculating (recursive) (reverse) dependencies
on package databases has been renamed to package_dependencies()
and is now exported.
• There is a new function optimHess() to compute the (approximate)
Hessian for an optim() solution if hessian = TRUE was forgotten.
• .filled.contour() is a ‘bare-bones’ function to add a
filled-contour rectangular plot to an already prepared plot
region.
• The stepping in debugging and single-step browsing modes has
changed slightly: now left braces at the start of the body are
stepped over for if statements as well as for for and while
statements. (Wish of PR#14814.)
• library() no longer warns about a conflict with a function from
package:base if the function has the same code as the base one
but with a different environment. (An example is Matrix::det().)
• When deparsing very large language objects, as.character() now
inserts newlines after each line of approximately 500 bytes,
rather than truncating to the first line.
• New function rWishart() generates Wishart-distributed random
matrices.
• Packages may now specify actions to be taken when the package is
loaded (setLoadActions()).
• options(max.print = Inf) and similar now give an error (instead
of warnings later).
• The "difftime" replacement method of units tries harder to
preserve other attributes of the argument. (Wish of PR#14839.)
• poly(raw = TRUE) no longer requires more unique points than the
degree. (Requested by John Fox.)
PACKAGE parallel:
• There is a new function mcmapply(), a parallel version of
mapply(), and a wrapper mcMap(), a parallel version of Map().
• A default cluster can be registered by the new function
setDefaultCluster(): this will be used by default in functions
such as parLapply().
• clusterMap() has a new argument .scheduling to allow the use of
load-balancing.
• There are new load-balancing functions parLapplyLB() and
parSapplyLB().
• makePSOCKCluster() has a new option useXDR = FALSE which can be
used to avoid byte-shuffling for serialization when all the nodes
are known to be little-endian (or all big-endian).
PACKAGE INSTALLATION:
• Non-ASCII vignettes without a declared encoding are no longer
accepted.
• C/C++ code in packages is now compiled with -NDEBUG to mitigate
against the C/C++ function assert being called in production use.
Developers can turn this off during package development with
PKG_CPPFLAGS = -UNDEBUG.
• R CMD INSTALL has a new option --dsym which on Mac OS X (Darwin)
dumps the symbols alongside the .so file: this is helpful when
debugging with valgrind (and especially when installing packages
into R.framework). [This can also be enabled by setting the
undocumented environment variable PKG_MAKE_DSYM, since R 2.12.0.]
• R CMD INSTALL will test loading under all installed
sub-architectures even for packages without compiled code, unless
the flag --no-multiarch is used. (Pure R packages can do things
which are architecture-dependent: in the case which prompted
this, looking for an icon in a Windows R executable.)
• There is a new option install.packages(type = "both") which tries
source packages if binary packages are not available, on those
platforms where the latter is the default.
• The meaning of install.packages(dependencies = TRUE) has changed:
it now means to install the essential dependencies of the named
packages plus the Suggests, but only the essential dependencies
of dependencies. To get the previous behaviour, specify
dependencies as a character vector.
• R CMD INSTALL --merge-multiarch is now supported on OS X and
other Unix-alikes using multiple sub-architectures.
• R CMD INSTALL --libs-only now by default does a test load on
Unix-alikes as well as on Windows: suppress with --no-test-load.
UTILITIES:
• R CMD check now gives a warning rather than a note if it finds
inefficiently compressed datasets. With bzip2 and xz compression
having been available since R 2.10.0, it only exceptionally makes
sense to not use them.
The environment variable _R_CHECK_COMPACT_DATA2_ is no longer
consulted: the check is always done if _R_CHECK_COMPACT_DATA_ has
a true value (its default).
• Where multiple sub-architectures are to be tested, R CMD check
now runs the examples and tests for all the sub-architectures
even if one fails.
• R CMD check can optionally report timings on various parts of the
check: this is controlled by environment variable
_R_CHECK_TIMINGS_ documented in ‘Writing R Extensions’. Timings
(in the style of R CMD BATCH) are given at the foot of the output
files from running each test and the R code in each vignette.
• There are new options for more rigorous testing by R CMD check
selected by environment variables - see the ‘Writing R
Extensions’ manual.
• R CMD check now warns (rather than notes) on undeclared use of
other packages in examples and tests: increasingly people are
using the metadata in the DESCRIPTION file to compute information
about packages, for example reverse dependencies.
• The defaults for some of the options in R CMD check (described in
the ‘R Internals’ manual) have changed: checks for unsafe and
.Internal() calls and for partial matching of arguments in R
function calls are now done by default.
• R CMD check has more comprehensive facilities for checking
compiled code and so gives fewer reports on entry points linked
into .so/.dll files from libraries (including C++ and Fortran
runtimes).
Checking compiled code is now done on FreeBSD (as well as the
existing supported platforms of Linux, Mac OS X, Solaris and
Windows).
• R CMD build has more options for --compact-vignettes: see R CMD
build --help.
• R CMD build has a new option --md5 to add an MD5 file (as done by
CRAN): this is used by R CMD INSTALL to check the integrity of
the distribution.
If this option is not specified, any existing (and probably
stale) MD5 file is removed.
DEPRECATED AND DEFUNCT:
• R CMD Rd2dvi is now defunct: use R CMD Rd2pdf.
• Options such --max-nsize, --max-vsize and the function
mem.limits() are now defunct. (Options --min-nsize and
--min-vsize remain available.)
• Use of library.dynam() without specifying all the first three
arguments is now disallowed.
Use of an argument chname in library.dynam() including the
extension .so or .dll (which was never allowed according to the
help page) is defunct. This also applies to
library.dynam.unload() and to useDynLib directives in NAMESPACE
files.
• The internal functions .readRDS() and .saveRDS() are now defunct.
• The off-line help() types "postscript" and "ps" are defunct.
• Sys.putenv(), replaced and deprecated in R 2.5.0, is finally
removed.
• Some functions/objects which have been defunct for five or more
years have been removed completely. These include .Alias(),
La.chol(), La.chol2inv(), La.eigen(), Machine(), Platform(),
Version, codes(), delay(), format.char(), getenv(), httpclient(),
loadURL(), machine(), parse.dcf(), printNoClass(), provide(),
read.table.url(), restart(), scan.url(), symbol.C(), symbol.For()
and unix().
• The ENCODING argument to .C() is deprecated. It was intended to
smooth the transition to multi-byte character strings, but can be
replaced by the use of iconv() in the rare cases where it is
still needed.
INSTALLATION:
• Building with a positive value of --with-valgrind-instrumentation
now also instruments logical, complex and raw vectors.
C-LEVEL FACILITIES:
• Passing R objects other than atomic vectors, functions, lists and
environments to .C() is now deprecated and will give a warning.
Most cases (especially NULL) are actually coding errors. NULL
will be disallowed in future.
.C() now passes a pairlist as a SEXP to the compiled code. This
is as was documented, but pairlists were in reality handled
differently as a legacy from the early days of R.
• call_R and call_S are deprecated. They still exist in the
headers and as entry points, but are no longer documented and
should not be used for new code.
BUG FIXES:
• str(x, width) now obeys its width argument also for function
headers and other objects x where deparse() is applied.
• The convention for x %/% 0L for integer-mode x has been changed
from 0L to NA_integer_. (PR#14754)
• The exportMethods directive in a NAMESPACE file now exports S4
generics as necessary, as the extensions manual said it does.
The manual has also been updated to be a little more informative
on this point.
It is now required that there is an S4 generic (imported or
created in the package) when methods are to be exported.
• Reference methods cannot safely use non-exported entries in the
namespace. We now do not do so, and warn in the documentation.
• The namespace import code was warning when identical S4 generic
functions were imported more than once, but should not (reported
by Brian Ripley, then Martin Morgan).
• merge() is no longer allowed (in some ways) to create a data
frame with duplicate column names (which confused PR#14786).
• Fixes for rendering raster images on X11 and Windows devices when
the x-axis or y-axis scale is reversed.
• getAnywhere() found S3 methods as seen from the utils namespace
and not from the environment from which it was called.
• selectMethod(f, sig) would not return inherited group methods
when caching was off (as it is by default).
• dev.copy2pdf(out.type = "cairo") gave an error. (PR#14827)
• Virtual classes (e.g., class unions) had a NULL prototype even if
that was not a legal subclass. See ?setClassUnion.
• The C prototypes for zdotc and zdotu in R_ext/BLAS.h have been
changed to the more modern style rather than that used by f2c.
(Patch by Berwin Turlach.)
• isGeneric() produced an error for primitives that can not have
methods.
• .C() or .Fortran() had a lack-of-protection error if the
registration information resulted in an argument being coerced to
another type.
• boxplot(x=x, at=at) with non finite elements in x and non integer
at could not generate a warning but failed.
• heatmap(x, symm=TRUE, RowSideColors=*) no longer draws the colors
in reversed order.
• predict() was incorrect in the multivariate case, for p >= 2.
• print(x, max=m) is now consistent when x is a "Date"; also the
“reached ... max.print ..” messages are now consistently using
single brackets.
• Closed the

tag in pages generated by Rd2HTML(). (PR#14841)
• Axis tick marks could go out of range when a log scale was used.
(PR#14833)
• Signature objects in methods were not allocated as S4 objects
(caused a problem with trace() reported by Martin Morgan).
CHANGES IN R VERSION 2.14.2:
NEW FEATURES:
• The internal untar() (as used by default by R CMD INSTALL) now
knows about some pax headers which bsdtar (e.g., the default tar
for Mac OS >= 10.6) can incorrectly include in tar files, and
will skip them with a warning.
• PCRE has been upgraded to version 8.21: as well as bug fixes and
greater Perl compatibility, this adds a JIT pattern compiler,
about which PCRE's news says ‘large performance benefits can be
had in many situations’. This is supported on most but not all R
platforms.
• Function compactPDF() in package tools now takes the default for
argument gs_quality from environment variable GS_QUALITY: there
is a new value "none", the ultimate default, which prevents
GhostScript being used in preference to qpdf just because
environment variable R_GSCMD is set. If R_GSCMD is unset or set
to "", the function will try to find a suitable GhostScript
executable.
• The included version of zlib has been updated to 1.2.6.
• For consistency with the logLik() method, nobs() for "nls" files
now excludes observations with zero weight. (Reported by Berwin
Turlach.)
UTILITIES:
• R CMD check now reports by default on licenses not according to
the description in ‘Writing R Extensions’.
• R CMD check has a new option --as-cran to turn on most of the
customizations that CRAN uses for its incoming checks.
PACKAGE INSTALLATION:
• R CMD INSTALL will now no longer install certain file types from
inst/doc: these are almost certainly mistakes and for some
packages are wasting a lot of space. These are Makefile, files
generated by running LaTeX, and unless the package uses a
vignettes directory, PostScript and image bitmap files.
Note that only PDF vignettes have ever been supported: some of
these files come from DVI/PS output from the Sweave defaults
prior to R 2.13.0.
BUG FIXES:
• R configured with --disable-openmp would mistakenly set
HAVE_OPENMP (internal) and SUPPORT_OPENMP (in Rconfig.h) even
though no OpenMP flags were populated.
• The getS3method() implementation had an old computation to find
an S4 default method.
• readLines() could overflow a buffer if the last line of the file
was not terminated. (PR#14766)
• R CMD check could miss undocumented S4 objects in packages which
used S4 classes but did not Depends: methods in their DESCRIPTION
file.
• The HTML Help Search page had malformed links. (PR#14769)
• A couple of instances of lack of protection of SEXPs have been
squashed. (PR#14772, PR#14773)
• image(x, useRaster=TRUE) misbehaved on single-column x.
(PR#14774)
• Negative values for options("max.print") or the max argument to
print.default() caused crashes. Now the former are ignored and
the latter trigger an error. (PR#14779)
• The text of a function body containing more than 4096 bytes was
not properly saved by the parser when entered at the console.
• Forgetting the #endif tag in an Rd file could cause the parser to
go into a loop. (Reported by Hans-Jorg Bibiko.)
• str(*, ....., strict.width="cut") now also obeys list.len = n.
(Reported by Sören Vogel.)
• Printing of arrays did not have enough protection (C level),
e.g., in the context of capture.output(). (Reported by Hervé
Pagès and Martin Morgan.)
• pdf(file = NULL) would produce a spurious file named NA.
(PR#14808)
• list2env() did not check the type of its envir argument.
(PR#14807)
• svg() could segfault if called with a non-existent file path.
(PR#14790)
• make install can install to a path containing + characters.
(PR#14798)
• The edit() function did not respect the options("keep.source")
setting. (Reported by Cleridy Lennert.)
• predict.lm(*, type="terms", terms=*, se.fit=TRUE) did not work.
(PR#14817)
• There is a partial workaround for errors in the TRE
regular-expressions engine with named classes and repeat counts
of at least 2 in a MBCS locale (PR#14408): these are avoided when
TRE is in 8-bit mode (e.g. for useBytes = TRUE and when all the
data are ASCII).
• The C function R_ReplDLLdo1() did not call top-level handlers.
• The Quartz device was unable to detect window sessions on Mac OS
X 10.7 (Lion) and higher and thus it was not used as the default
device on the console. Since Lion any application can use window
sessions, so Quartz will now be the default device if the user's
window session is active and R is not run via ssh which is at
least close to the behavior in prior OS X versions.
• mclapply() would fail in code assembling the translated error
message if some (but not all) cores encountered an error.
• format.POSIXlt(x) raised an arithmetic exception when x was an
invalid object of class "POSIXlt" and parts were empty.
• installed.packages() has some more protection against package
installs going on in parallel.
• .Primitive() could be mis-used to call .Internal() entry points.
CHANGES IN R VERSION 2.14.1:
NEW FEATURES:
• parallel::detectCores() is now able to find the number of
physical cores (rather than CPUs) on Sparc Solaris.
It can also do so on most versions of Windows; however the
default remains detectCores(logical = TRUE) on that platform.
• Reference classes now keep a record of which fields are locked.
$lock() with no arguments returns the names of the locked fields.
• HoltWinters() reports a warning rather than an error for some
optimization failures (where the answer might be a reasonable
one).
• tools::dependsOnPkg() now accepts the shorthand dependencies =
"all".
• parallel::clusterExport() now allows specification of an
environment from which to export.
• The quartz() device now does tilde expansion on its file
argument.
• tempfile() on a Unix-alike now takes the process ID into account.
This is needed with multicore (and as part of parallel) because
the parent and all the children share a session temporary
directory, and they can share the C random number stream used to
produce the unique part. Further, two children can call
tempfile() simultaneously.
• Option print in Sweave's RweaveLatex() driver now emulates
auto-printing rather than printing (which can differ for an S4
object by calling show() rather than print()).
• filled.contour() now accepts infinite values: previously it might
have generated invalid graphics files (e.g. containing NaN
values).
INSTALLATION:
• On 64-bit Linux systems, configure now only sets LIBnn to lib64
if /usr/lib64 exists. This may obviate setting LIBnn explicitly
on Debian-derived systems.
It is still necessary to set LIBnn = lib (or lib32) for 32-bit
builds of R on a 64-bit OS on those Linux distributions capable
for supporting that concept.
• configure looks for inconsolata.sty, and if not found adjusts the
default R_RD4PDF to not use it (with a warning, since it is
needed for high-quality rendering of manuals).
PACKAGE INSTALLATION:
• R CMD INSTALL will now do a test load for all sub-architectures
for which code was compiled (rather than just the primary
sub-architecture).
UTILITIES:
• When checking examples under more than one sub-architecture, R
CMD check now uses a separate directory examples_arch for each
sub-architecture, and leaves the output in file
pkgname-Ex_arch.Rout. Some packages expect their examples to be
run in a clean directory ....
BUG FIXES:
• stack() now gives an error if no vector column is selected,
rather than returning a 1-column data frame (contrary to its
documentation).
• summary.mlm() did not handle objects where the formula had been
specified by an expression. (Reported by Helios de Rosario
Martinez).
• tools::deparseLatex(dropBraces=TRUE) could drop text as well as
braces.
• colormodel = "grey" (new in R 2.14.0)) did not always work in
postscript() and pdf().
• file.append() could return TRUE for failures. (PR#14727)
• gzcon() connections are no longer subject to garbage collection:
it was possible for this to happen when unintended (e.g. when
calling load()).
• nobs() does not count zero-weight observations for glm() fits,
for consistency with lm(). This affects the BIC() values
reported for such glm() fits. (Spotted by Bill Dunlap.)
• options(warn = 0) failed to end a (C-level) context with more
than 50 accumulated warnings. (Spotted by Jeffrey Horner.)
• The internal plot.default() code did not do sanity checks on a
cex argument, so invalid input could cause problems. (Reported
by Ben Bolker.)
• anyDuplicated(, MARGIN=0) no longer fails. (Reported by
Hervé Pagès.)
• read.dcf() removes trailing blanks: unfortunately on some
platforms this included \xa0 (non-breaking space) which is the
trailing byte of a UTF-8 character. It now only considers ASCII
space and tab to be ‘blank’.
• There was a sign error in part of the calculations for the
variance returned by KalmanSmooth(). (PR#14738)
• pbinom(10, 1e6, 0.01, log.p = TRUE) was NaN thanks to the buggy
fix to PR#14320 in R 2.11.0. (PR#14739)
• RweaveLatex() now emulates auto-printing rather than printing, by
calling methods::show() when auto-printing would.
• duplicated() ignored fromLast for a one-column data frame.
(PR#14742)
• source() and related functions did not put the correct timestamp
on the source references; srcfilecopy() has gained a new argument
timestamp to support this fix. (PR#14750)
• srcfilecopy() has gained a new argument isFile and now records
the working directory, to allow debuggers to find the original
source file. (PR#14826)
• LaTeX conversion of Rd files did not correctly handle
preformatted backslashes. (PR#14751)
• HTML conversion of Rd files did not handle markup within tabular
cells properly. (PR#14708)
• source() on an empty file with keep.source = TRUE tried to read
from stdin(), in R 2.14.0 only. (PR#14753)
• The code to check Rd files in packages would abort if duplicate
description sections were present.
CHANGES IN R VERSION 2.14.0:
SIGNIFICANT USER-VISIBLE CHANGES:
• All packages must have a namespace, and one is created on
installation if not supplied in the sources. This means that any
package without a namespace must be re-installed under this
version of R (but previously-installed data-only packages without
R code can still be used).
• The yLineBias of the X11() and windows() families of devices has
been changed from 0.1 to 0.2: this changes slightly the vertical
positioning of text in the margins (including axis annotations).
This is mainly for consistency with other devices such as
quartz() and pdf(). (Wish of PR#14538.)
There is a new graphics parameter "ylbias" which allows the
y-line bias of the graphics device to be tweaked, including to
reproduce output from earlier versions of R.
• Labeling of the p-values in various anova tables has been
rationalized to be either "Pr(>F)" or "Pr(>Chi)" (i.e. the
"Pr(F)", "Pr(Chi)" and "P(>|Chi|)" variants have been
eliminated). Code which extracts the p value _via_ indexing by
name may need adjustment.
• :: can now be used for datasets made available for lazy-loading
in packages with namespaces (which makes it consistent with its
use for data-only packages without namespaces in earlier versions
of R).
• There is a new package parallel.
It incorporates (slightly revised) copies of packages multicore
and snow (excluding MPI, PVM and NWS clusters). Code written to
use the higher-level API functions in those packages should work
unchanged (apart from changing any references to their namespaces
to a reference to parallel, and links explicitly to multicore or
snow on help pages).
It also contains support for multiple RNG streams following
L'Ecuyer _et al_ (2002), with support for both mclapply and snow
clusters. This replaces functions like clusterSetupRNG() from
snow (which are not in parallel).
The version released for R 2.14.0 contains base functionality:
higher-level convenience functions are planned (and some are
already available in the ‘R-devel’ version of R).
• Building PDF manuals (for R itself or packages, e.g. _via_ R CMD
check) by default requires the LaTeX package inconsolata: see the
section on ‘Making the manuals’ in the ‘R Installation and
Administration Manual’.
• axTicks(*, log=TRUE) has changed in some cases to satisfy the
documented behavior and be consistent.
NEW FEATURES:
• txtProgressBar() can write to an open connection instead of the
console.
• Non-portable package names ending in . are no longer allowed.
Nor are single-character package names (R was already
disallowed).
• regexpr() and gregexpr() with perl = TRUE allows Python-style
named captures. (Wish and contribution of PR#14518.)
• The placement of ‘plotmath’ text in the margins of plots done by
base graphics now makes the same vertical adjustment as ordinary
text, so using ordinary and plotmath text on the same margin line
will seem better aligned (but not exactly aligned, since ordinary
text has descenders below the baseline and plotmath places them
on the baseline). (Related to PR#14537.)
• sunflowerplot() now has a formula interface. (Wish of PR#14541.)
• iconv() has a new argument toRaw to handle encodings such as
UTF-16 with embedded nuls (as was possible before the CHARSXP
cache was introduced).
It will also accept as input the type of list generated with
toRaw = TRUE.
• Garbage-collecting an unused input text connection no longer
gives a warning (since it ‘connects’ to nothing outside R).
• read.table() and scan() have gained a text argument, to allow
reading data from a (possibly literal) character string.
• optim(*, method = .) now allows method = "Brent" as an interface
to optimize(), for use in cases such as mle() where optim() is
used internally.
• mosaicplot() gains a border argument. (Wish of PR#14550.)
• smooth.spline() gains a tol argument which controls how different
x values need to be to be treated as distinct. The default has
been changed to be more reliable for inputs whose range is small
compared to their maximum absolute value. (Wish of PR#14452.)
• gl() runs faster by avoiding calling factor().
• The print() method for object.size() accepts B as well as b as an
abbreviation for ‘bytes’.
• unlink() gains a force argument to work like rm -f and if
possible override restrictive permissions.
• pbirthday() and qbirthday() now use exact calculations for
coincident = 2.
• unzip() and unz() connections have been updated with support for
more recent Zip64 features (including large file sizes and bzip2
compression, but not UTF-8 file names).
unzip() has a new option to restore file times from those
recorded (in an unknown timezone) in the zip file.
• update.packages() now accepts a character vector of package names
for the oldPkgs argument. (Suggestion of Tal Galili.)
• The special reference class fields .self and .refClassDef are now
read-only to prevent corrupting the object.
• decompose() now returns the original series as part of its value,
so it can be used (rather than reconstructed) when plotting.
(Suggestion of Rob Hyndman.)
• Rao's efficient score test has been implemented for glm objects.
Specifically, the add1, drop1, and anova methods now allow test =
"Rao".
• If a saved workspace (e.g. .RData) contains objects that cannot
be loaded, R will now start with an warning message and an empty
workspace, rather than failing to start.
• strptime() now accepts times such as 24:00 for midnight at the
end of the day, for although these are disallowed by POSIX
1003.1-2008, ISO 8601:2004 allows them.
• Assignment of names() to S4 objects now checks for a
corresponding "names" slot, and generates a warning or an error
if that slot is not defined. See the section on slots in
?Classes.
• The default methods for is.finite(), is.infinite() and is.nan()
now signal an error if their argument is not an atomic vector.
• The formula method for plot() no longer places package stats on
the search path (it loads the namespace instead).
• There now is a genuine "function" method for plot() rather than
the generic dispatching internally to graphics::plot.function().
It is now exported, so can be called directly as plot.function().
• The one-sided ks.test() allows exact = TRUE to be specified in
the presence of ties (but the approximate calculation remains the
default: the ‘exact’ computation makes assumptions known to be
invalid in the presence of ties).
• The behaviour of curve(add = FALSE) has changed: it now no longer
takes the default x limits from the previous plot (if any):
rather they default to c(0, 1) just as the "function" method for
plot(). To get the previous behaviour use curve(add = NA), which
also takes the default for log-scaling of the x-axis from the
previous plot.
• Both curve() and the plot() method for functions have a new
argument xname to facilitate plots such as sin(t) _vs_ t.
• The local argument to source() can specify an environment as well
as TRUE (parent.env()) and FALSE (.GlobalEnv). It gives better
error messages for other values, such as NA.
• vcov() gains methods for classes "summary.lm" and "summary.glm".
• The plot() method for class "profile.nls" gains ylab and lty
arguments, and passes ... on to plot.default.
• Character-string arguments such as the mode argument of vector(),
as.vector() and is.vector() and the description argument of
file() are required to be of length exactly one, rather than any
further elements being silently discarded. This helps catch
incorrect usage in programming.
• The length argument of vector() and its wrappers such as
numeric() is required to be of length exactly one (other values
are now an error rather than giving a warning as previously).
• vector(len) and length(x) foo2.R
• There is a new option pdf.compress controlling whether PDF
figures are generated using Flate compression (they are by
default).
• R CMD Sweave now has a --pdf option to produce a PDF version of
the processed Sweave document.
• It is no longer allowed to have two vignettes with the same
vignette basename (e.g. vig.Rnw and vig.Snw). (Previously one
vignette hid the other in the vignette() function.)
C-LEVEL FACILITIES:
• Function R_tmpnam2 has been added to the API to allow a temporary
filename to include a specified extension.
PACKAGE INSTALLATION:
• Package DESCRIPTION file field KeepSource forces the package to
be installed with keep.source = TRUE (or FALSE). (Suggestion of
Greg Snow. Note that as all packages are lazy-loaded, this is
now only relevant at installation.)
There are corresponding options --with-keep.source and
--without-keep.source for R CMD INSTALL.
• R CMD INSTALL has a new option --byte-compile to byte-compile the
packages during installation (since all packages are now
lazy-loaded). This can be controlled on a per-package basis by
the optional field ByteCompile in the DESCRIPTION file.
• A package R code but without a NAMESPACE file will have a default
one created at R CMD build or R CMD INSTALL time, so all packages
will be installed with namespaces. A consequence of this is that
.First.lib() functions need to be copied to .onLoad() (usually)
or .onAttach(). For the time being, if there is an
auto-generated NAMESPACE file and no .onLoad() nor .onAttach()
function is found but .First.lib() is, it will be run as the
attach hook (unless the package is one of a list of known
exceptions, when it will be run as the load hook).
• A warning is given if test-loading a package changes a locked
binding in a package other than itself. It is likely that this
will be disallowed in future releases. (There are _pro tem_ some
exceptions to the warning.)
• A dependency on SVN revision is allowed for R, e.g. R (>=
r56550). This should be used in conjunction with a version
number, e.g. R (>= 2.14.0), R (>= r56550) to distinguish between
R-patched and R-devel versions with the same SVN revision.
• installed.packages() now hashes the names of its cache files to
avoid very rare problems with excessively long path names.
(PR#14669)
• A top-level COPYING file in a package is no longer installed
(file names LICENSE or LICENCE having long been preferred).
UTILITIES:
• R CMD check now gives an error if the R code in a vignette fails
to run, unless this is caused by a missing package.
• R CMD check now unpacks tarballs in the same way as R CMD
INSTALL, including making use of the environment variable
R_INSTALL_TAR to override the default behaviour.
• R CMD check performs additional code analysis of package startup
functions, and notifies about incorrect argument lists and
(incorrect) calls to functions which modify the search path or
inappropriately generate messages.
• R CMD check now also checks compiled code for symbols
corresponding to functions which might terminate R or write to
stdout/stderr instead of the console.
• R CMD check now uses a pdf() device when checking examples
(rather than postscript()).
• R CMD check now checks line-endings of makefiles and
C/C++/Fortran sources in subdirectories of src as well as in src
itself.
• R CMD check now reports as a NOTE what look like methods
documented with their full names even if there is a namespace and
they are exported. In almost all cases they are intended to be
used only as methods and should use the \method markup. In the
other rare cases the recommended form is to use a function such
as coefHclust which would not get confused with a method,
document that and register it in the NAMESPACE file by
s3method(coef, hclust, coefHclust).
• The default for the environment variable _R_CHECK_COMPACT_DATA2_
is now true: thus if using the newer forms of compression
introduced in R 2.10.0 would be beneficial is now checked (by
default).
• Reference output for a vignette can be supplied when checking a
package by R CMD check: see ‘Writing R Extensions’.
• R CMD Rd2dvi allows the use of LaTeX package inputenx rather than
inputenc: the value of the environment variable RD2DVI_INPUTENC
is used. (LaTeX package inputenx is an optional install which
provides greater coverage of the UTF-8 encoding.)
• Rscript on a Unix-alike now accepts file names containing spaces
(provided these are escaped or quoted in the shell).
• R CMD build on a Unix-alike (only) now tries to preserve dates on
files it copies from its input directory. (This was the
undocumented behaviour prior to R 2.13.0.)
DEPRECATED AND DEFUNCT:
• require() no longer has a save argument.
• The gamma argument to hsv(), rainbow(), and rgb2hsv() has been
removed.
• The --no-docs option for R CMD build --binary is defunct: use
--install-args instead.
• The option --unsafe to R CMD INSTALL is defunct: use the
identical option --no-lock instead.
• The entry point pythag formerly in Rmath.h is defunct: use
instead the C99 function hypot.
• R CMD build --binary is formally defunct: R CMD INSTALL --build
has long been the preferred alternative.
• zip.file.extract() is now defunct: use unzip() or unz() instead.
• R CMD Rd2dvi without the --pdf option is now deprecated: only PDF
output will be supported in future releases (since this allows
the use of fonts only supported for PDF), and only R CMD Rd2pdf
will be available.
• Options such as --max-nsize and the function mem.limits() are now
deprecated: these limits are nowadays almost never used, and are
reported by gc() when they are in use.
• Forms like binomial(link = "link") for GLM families deprecated
since R 2.4.0 are now defunct.
• The declarativeOnly argument to loadNamespace() (not relevant
since R 2.13.0) has been removed.
• Use of library.dynam() without specifying all the first three
arguments is deprecated. (It is often called from a namespace,
and the defaults are only appropriate to a package.)
Use of chname in library.dynam() with the extension .so or .dll
(which is clearly not allowed according to the help page) is
deprecated. This also applies to library.dynam.unload() and
useDynLib directives in NAMESPACE files.
• It is deprecated to use mean(x) and sd(x) directly on data frames
(or also matrices, for sd) x, instead of simply using sapply.
In the same spirit, median(x) now gives an error for a data frame
x (it often gave nonsensical results).
• The keep.source argument to library() and require() is
deprecated: it was only used for packages installed without
lazy-loading, and now all packages are lazy-loaded.
• Using a false value for the DESCRIPTION field LazyLoad is
deprecated.
INSTALLATION:
• The base and recommended packages are now byte-compiled
(equivalent to make bytecode in R 2.13.x).
• Configure option --with-system-zlib now only makes use of the
basic interface of zlib and not the C function gzseek which has
shown erroneous behaviour in zlib 1.2.4 and 1.2.5.
• The zlib in the R sources is now version 1.2.5. (This is safe
even on 32-bit Linux systems because only the basic interface is
now used.)
• The .afm files in package grDevices are now installed as
compressed files (as long done on Windows), saving ca 2MB on the
installed size.
• The non-screen cairo-based devices are no longer in the X11
module and so can be installed without X11. (We have never seen
a Unix-alike system with cairographics installed but not X11, but
a user might select --without-x.)
• Configure will try to use -fobjc-exceptions for the Objective-C
compiler (if present) to ensure that even compilers that do not
enable exceptions by default (such as vanilla gcc) can be used.
(Objective-C is currently only used on Mac OS X.)
• The system call times is required.
• The C99 functions acosh, asinh, atanh, snprintf and vsnprintf are
now required.
• There is no longer support for making DVI manuals _via_ make dvi,
make install-dvi and similar. Only PDF manuals are supported (to
allow the use of fonts which are only available for PDF.)
• The configure arguments used during configuration of R are
included as a comment in Makeconf for informative purposes on
Unix-alikes in a form suitable for shell execution. Note that
those are merely command-line arguments, they do not include
environment variables (one more reason to use configure variables
instead) or site configuration settings.
• Framework installation now supports DESTDIR (Mac OS X only).
• Java detection (R CMD javareconf) works around bogus
java.library.path property in recent Oracle Java binaries.
BUG FIXES:
• The locale category LC_MONETARY was only being set on startup on
Windows: that is now done on Unix-alikes where supported.
• Reference class utilities will detect an attempt to modify
methods or fields in a locked class definition (e.g., in a
namespace) and generate an error.
• The formula methods for lines(), points() and text() now work
even if package stats is not on the search path.
• In principle, S4 classes from different packages could have the
same name. This has not previously worked. Changes have now
been installed that should allow such classes and permit methods
to use them. New functions className() and multipleClasses() are
related tools for programming.
• Work around an issue in Linux (a system select call resetting tv)
which prevented internet operations from timing out properly.
• Several stack trampling and overflow issues have been fixed in
TRE, triggered by agrep and friends with long patterns.
(PR#14627)
• (“design infelicity”) Field assignments in reference classes are
now consistent with slots in S4 classes: the assigned value must
come from the declared class (if any) for the field or from a
subclass.
• The methods objects constructed for "coerce" and "coerce,