Running examples in ‘pacman-Ex.R’ failed
The error most likely occurred in:

> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: p_news
> ### Title: Package/R News
> ### Aliases: p_news
> ### Keywords: news packages
> 
> ### ** Examples
> 
> p_news()
                           Changes in R-devel                           

SIGNIFICANT USER-VISIBLE CHANGES

    o   Serialization format version 3 becomes the default for
	serialization and saving of the workspace (save(), serialize(),
	saveRDS(), 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 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 check 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).

NEW FEATURES

    o   Sys.setFileTime() has been vectorized so arguments path and
	time of length greater than one are now supported.

    o   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.

    o   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.

    o   removeSource() now works not only for functions but also for
	some language objects.

    o   as.call(), rep.int(), rep_len() and nchar() dispatch
	internally.

    o   is(object, class2) looks for class2 in the calling namespace
	after looking in the namespace of class(object).

    o   extendrange(.., f) with a length-2 f now extends separately to
	the left and the right.

    o   lengths() dispatches internally to S4 methods.

    o   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.

    o   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.

    o   There is a new function, nullfile(), to give the file name of
	the null system device (e.g., /dev/null) on the current
	platform.

    o   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.

    o   In rapply(x, ..), x can also be “list-like” and of length >=
	2^{31}.

    o   trimws() gets new optional whitespace argument, allowing more
	extensive definitions of “space”, such as including Unicode
	spaces (as wished in PR#17431).

    o   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.

    o   When loading namespaces, S3 method registrations which
	overwrite previous registrations are now noted by default
	(using packageStartupMessage()).

    o   compiler::cmpfile() gains a version argument, for use when the
	output file should be saved in serialization format 2.

    o   The axis labeling in the default method of pairs() may now be
	toggled by new options horOdd and verOdd.

    o   (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.

    o   The numeric method of all.equal() gets an optional argument
	countEQ.  If that is true, the mean error is more sensible when
	many entries are *eq*ual.

    o   outer(x,y, FUN = "*") is more efficient using tcrossprod(u,v)
	instead of u %*% t(v).

    o   vcov(<mlm>) is more efficient via new optional arguments in
	summary.mlm().

    o   The default method of summary() gets an option to choose the
	_kind_ of quantile()s to use; wish of PR#17438.

    o   Multivariate linear models, lm() now do work with _matrix_
	offsets, as suggested in PR#17407.

    o   The a 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.

    o   news() gains support for NEWS.md files.

INSTALLATION on a UNIX-ALIKE

    o   The C++ compiler defaults to the C++11 standard if supported,
	otherwise to the C++98 standard.

UTILITIES

    o   R CMD check now optionally checks makefiles for correct and
	portable use of the SHLIB_OPENMP_*FLAGS macros.

TESTING

    o   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

    o   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.

    o   substr() and substring() now signal an error when the input is
	invalid UTF-8.

    o   file.copy() now works also when its argument to is of length
	greater than one.

    o   mantelhaen.test() no longer suffers from integer overflow in
	largish cases, thanks to Ben Bolker's PR#17383.

    o   Calling setGeneric("foo") in a package no longer fails when the
	enclosing environment of the implicit generic foo() is
	.GlobalEnv.

    o   untar(file("<some>.tar.gz"), *) now gives a better error
	message, suggesting to use gzfile() instead.

    o   Method dispatch uses more relevant environments when looking up
	class definitions.

    o   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.

    o   order(...., decreasing=c(TRUE,FALSE)) could fail in some cases.
	Reported from StackOverflow via Karl Nordström.

    o   User macros in Rd files now accept empty and multi-line
	arguments.

    o   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.

    o   Calling install.packages() with a length zero pkgs argument now
	is a no-op (PR#17422).

    o   unlist(x) now returns a correct factor when x is a nested list
	with factor leaves, fixing PR#12572 and PR#17419.

    o   The documentation help(family) gives more details about the aic
	component, thanks to Ben Bolker's prompting.

    o   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<-`.

    o   strwidth() now uses par("font") as default font face
	(PR#17352).

    o   plot(<table>, log="x") no longer warns about log.

    o   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).

    o   kruskal.test() and fligner.test() no longer erroneously insists
	on numeric g group arguments (PR#16719).

    o   Printing a news db via the browser now does a much better job
	(PR#17433).

                    Changes in version 3.5.1 patched                    

BUG FIXES

    o   Linear multivariate empty models such as lm(y ~ 0) now have a
	correctly dimensioned empty coefficient matrix; reported by
	Brett Presnell.

    o   vcov(<empty mlm>) and hence confint() now work (via a
	consistency change in summary.lm()).

    o   confint(<multivariate lm()>) now works correctly; reported on
	R-devel by Steven Pav.

    o   quade.test() now also works correctly when its arguments are
	not yet sorted along groups, fixing PR#15842.

    o   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).

    o   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.

    o   hist() no longer integer overflows in very rare cases, fixing
	PR#17450.

                        Changes in version 3.5.1                        

BUG FIXES

    o   file("stdin") is no longer considered seekable.

    o   dput() and dump() are no longer truncating when
	options(deparse.max.lines = *) is set.

    o   Calls with an S3 class are no longer evaluated when printed,
	fixing part of PR#17398, thanks to a patch from Lionel Henry.

    o   Allow file argument of Rscript to include space even when it is
	first on the command line.

    o   callNextMethod() uses the generic from the environment of the
	calling method. Reported by Hervé Pagès with well documented
	examples.

    o   Compressed file connections are marked as blocking.

    o   optim(*, lower = c(-Inf, -Inf)) no longer warns (and switches
	the method), thanks to a suggestion by John Nash.

    o   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.

    o   simulate.lm(glm(*, gaussian(link = <non-default>))) has been
	corrected, fixing PR#17415 thanks to Alex Courtiol.

    o   unlist(x) no longer fails in some cases of nested empty lists.
	Reported by Steven Nydick.

    o   qr.coef(qr(<all 0, w/ colnames>)) now works.  Reported by Kun
	Ren.

    o   The radix sort is robust to vectors with >1 billion elements
	(but long vectors are still unsupported). Thanks to Matt Dowle
	for the fix.

    o   Terminal connections (e.g., stdin) are no longer buffered.
	Fixes PR#17432.

    o   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.

    o   Unbuffered connections now work with encoding conversion.
	Reported by Stephen Berman.

    o   .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.

    o   printCoefmat() now also works with explicit right=TRUE.

    o   print.noquote() now also works with explicit quote=FALSE.

    o   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.

    o   agrep("..|..", .., fixed=FALSE) now matches when it should,
	thanks to a reminder by Andreas Kolter.

    o   str(ch) now works for more invalid multibyte strings.

                        Changes in version 3.5.0                        

SIGNIFICANT USER-VISIBLE CHANGES

    o   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

    o   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.

    o   diag() gets an optional names argument: this may require
	updates to packages defining S4 methods for it.

    o   chooseCRANmirror() and chooseBioCmirror() no longer have a
	useHTTPS argument, not needed now all R builds support https://
	downloads.

    o   New summary() method for warnings() with a (somewhat
	experimental) print() method.

    o   (methods package.) .self is now automatically registered as a
	global variable when registering a reference class method.

    o   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).

    o   New askYesNo() function and "askYesNo" option to ask the user
	binary response questions in a customizable but consistent way.
	(Suggestion of PR#17242.)

    o   New low level utilities ...elt(n) and ...length() for working
	with ... parts inside a function.

    o   isTRUE() is more tolerant and now true in
	
	   x <- rlnorm(99)
	   isTRUE(median(x) == quantile(x)["50%"])
	
	New function isFALSE() defined analogously to isTRUE().

    o   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.)

    o   line() gets a new option iter = 1.

    o   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.

    o   order() is smarter about picking a default sort method when its
	arguments are objects.

    o   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 to 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.

    o   packageStatus()'s upgrade() method no longer ignores its ...
	argument but passes it to install.packages().

    o   installed.packages() gains a ... argument to allow arguments
	(including noCache) to be passed from new.packages(),
	old.packages(), update.packages() and packageStatus().

    o   factor(x, levels, labels) now allows duplicated labels (not
	duplicated levels!).  Hence you can map different values of x
	to the same level directly.

    o   Attempting to use names<-() on an S4 derivative of a basic type
	no longer emits a warning.

    o   The list method of within() gains an option keepAttrs = FALSE
	for some speed-up.

    o   system() and system2() now allow the specification of a maximum
	elapsed time (‘timeout’).

    o   debug() supports debugging of methods on any object of S4 class
	"genericFunction", including group generics.

    o   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.

    o   type.convert() becomes a generic function, with additional
	methods that operate recursively over list and data.frame
	objects. Courtesy of Arni Magnusson (PR#17269).

    o   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.

    o   print() methods for "xgettext" and "xngettext" now use
	encodeString() which keeps, e.g. "\n", visible.  (Wish of
	PR#17298.)

    o   package.skeleton() gains an optional encoding argument.

    o   approx(), spline(), splinefun() and approxfun() also work for
	long vectors.

    o   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)

    o   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.

    o   If multiple on.exit() expressions are set using add = TRUE then
	all expressions will now be run even if one signals an error.

    o   mclapply() gets an option affinity.list which allows more
	efficient execution with heterogeneous processors, thanks to
	Helena Kotthaus.

    o   The character methods for as.Date() and as.POSIXlt() are more
	flexible _via_ new arguments tryFormats and optional: see their
	help pages.

    o   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.)

    o   On Windows, file.rename() internally retries the operation in
	case of error to attempt to recover from possible anti-virus
	interference.

    o   Command line completion on :: now also includes lazy-loaded
	data.

    o   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.

    o   There is now a [ method for class "DLLInfoList".

    o   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.

    o   aspell() gains a filter for Markdown (.md and .Rmd) files.

    o   intToUtf8(multiple = FALSE) gains an argument to allow
	surrogate pairs to be interpreted.

    o   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.

    o   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.

    o   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.

    o   system(*, intern = FALSE), system2() (when not capturing
	output), file.edit() and file.show() now issue a warning when
	the external command cannot be executed.

    o   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).

    o   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.

    o   attach(*, pos = 1) is now an error instead of a warning.

    o   New function getDefaultCluster() in package parallel to get the
	default cluster set via setDefaultCluster().

    o   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.

    o   gc() gets new argument full.

    o   write.dcf() gets optional argument useBytes.

    o   New, partly experimental packageDate() which tries to get a
	valid "Date" object from a package DESCRIPTION file, thanks to
	suggestions in PR#17324.

    o   tools::resaveRdaFiles() gains a version argument, for use when
	packages should remain compatible with earlier versions of R.

    o   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().

    o   New warnErrList() utility (from package nlme, improved).

    o   By default the (arbitrary) signs of the loadings from
	princomp() are chosen so the first element is non-negative.

    o   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.

    o   When a package is found more than once, the warning from
	find.package(*, verbose=TRUE) lists all library locations.

    o   POSIXt objects can now also be rounded or truncated to month or
	year.

    o   stopifnot() can be used alternatively via new argument exprs
	which is nicer and useful when testing several expressions in
	one call.

    o   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.

    o   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.

    o   Single components of "POSIXlt" objects can now be extracted and
	replaced via [ indexing with 2 indices.

    o   S3 method lookup now searches the namespace registry after the
	top level environment of the calling environment.

    o   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.

    o   Finalizers are now run with interrupts suspended.

    o   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).

    o   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.

    o   par*apply and par*applyLB gain an optional argument chunk.size
	which allows to specify the granularity of scheduling.

    o   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.

    o   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.

    o   The "Date" and “date-time” classes "POSIXlt" and "POSIXct" now
	have a working length<-() method, as wished in PR#17387.

    o   optim(*, control = list(warn.1d.NelderMead = FALSE)) allows to
	turn off the warning when applying the default "Nelder-Mead"
	method to 1-dimensional problems.

    o   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.

    o   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.

    o   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

    o   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.

    o   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.

    o   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=).

    o   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.

    o   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

    o   Support for a system Java on macOS has been removed - install a
	fairly recent Oracle Java (see ‘R Installation and
	Administration’ §C.3.2).

    o   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.

    o   C99 functions expm1, hypot, log1p and nearbyint are now
	required.

    o   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

    o   ‘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.

    o   The object header layout has been changed to support merging
	the ALTREP branch. This requires re-installing packages that
	use compiled code.

    o   ‘Writing R Extensions’ now documents the R_tryCatch,
	R_tryCatchError, and R_UnwindProtect functions.

    o   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

    o   Sys.timezone(location = FALSE) is defunct, and is ignored (with
	a warning).

    o   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).

    o   The declaration of pythag() in Rmath.h has been removed - the
	entry point has not been provided since R 2.14.0.

BUG FIXES

    o   printCoefmat() now also works without column names.

    o   The S4 methods on Ops() for the "structure" class no longer
	cause infinite recursion when the structure is not an S4
	object.

    o   nlm(f, ..) for the case where f() has a "hessian" attribute now
	computes LL' = H + µI correctly.  (PR#17249).

    o   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.

    o   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.

    o   Connections are now written correctly with encoding "UTF-16LE".
	(PR#16737).

    o   Evaluation of ..0 now signals an error.  When ..1 is used and
	... is empty, the error message is more appropriate.

    o   (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)

    o   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.

    o   path.expand() on Windows now accepts paths specified as
	UTF-8-encoded character strings even if not representable in
	the current locale.  (PR#17120)

    o   line(x, y) now correctly computes the medians of the left and
	right group's x-values and in all cases reproduces straight
	lines.

    o   Extending S4 classes with slots corresponding to special
	attributes like dim and dimnames now works.

    o   Fix for legend() when fill has multiple values the first of
	which is NA (all colours used to default to par(fg)).
	(PR#17288)

    o   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).

    o   The documentation for installed.packages(noCache = TRUE)
	incorrectly claimed it would refresh the cache.

    o   aggregate(<data.frame>) no longer uses spurious names in some
	cases.  (PR#17283)

    o   object.size() now also works for long vectors.

    o   packageDescription() tries harder to solve re-encoding issues,
	notably seen in some Windows locales.  This fixes the
	citation() issue in PR#17291.

    o   poly(<matrix>, 3) now works, thanks to prompting by Marc
	Schwartz.

    o   readLines() no longer segfaults on very large files with
	embedded '\0' (aka ‘nul’) characters.  (PR#17311)

    o   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.

    o   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.

    o   methods:::cbind() and methods:::rbind() avoid deep recursion,
	thanks to Suharto Anggono via PR#17300.

    o   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).

    o   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.

    o   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.

    o   Reverted unintended change in behavior of return calls in
	on.exit expressions introduced by stack unwinding changes in R
	3.3.0.

    o   Attributes on symbols are now detected and prevented; attempt
	to add an attribute to a symbol results in an error.

    o   fisher.test(*, workspace = <n>) now may also increase the
	internal stack size which allows larger problem to be solved,
	fixing PR#1662.

    o   The methods package no longer directly copies slots
	(attributes) into a prototype that is of an “abnormal”
	(reference) type, like a symbol.

    o   The methods package no longer attempts to call length<-() on
	NULL (during the bootstrap process).

    o   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).

    o   sys.on.exit() is now always evaluated in the right frame. (From
	Lionel Henry.)

    o   seq.POSIXt(*, by = "<n> DSTdays") now should work correctly in
	all cases and is faster.  (PR#17342)

    o   .C() when returning a logical vector now always maps values
	other than FALSE and NA to TRUE (as documented).

    o   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.

    o   (Package parallel.)  mclapply(), pvec() and mcparallel() (when
	mccollect() is used to collect results) no longer leave zombie
	processes behind.

    o   R CMD INSTALL <pkg> now produces the intended error message
	when, e.g., the LazyData field is invalid.

    o   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. .

    o   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)

    o   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).

    o   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.

    o   Calling names() on an S4 object derived from "environment"
	behaves (by default) like calling names() on an ordinary
	environment.

    o   read.table() with a non-default separator now supports quotes
	following a non-whitespace character, matching the behavior of
	scan().

    o   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.

    o   Indexing a list using dollar and empty string (l$"") returns
	NULL.

    o   Using \usage{ data(<name>, package="<pkg>") } no longer
	produces R CMD check warnings.

    o   match.arg() more carefully chooses the environment for
	constructing default choices, fixing PR#17401 as proposed by
	Duncan Murdoch.

    o   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 version 3.4.4                        

NEW FEATURES

    o   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.

    o   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).

    o   parallel::detectCores(logical = FALSE) is ignored on Linux
	systems, since the information is not available with
	virtualized OSes.

INSTALLATION on a UNIX-ALIKE

    o   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

    o   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).

    o   Legacy support of make macros such as CXX1X is formally
	deprecated: use the CXX11 forms instead.

BUG FIXES

    o   power.prop.test() now warns when it cannot solve the problem,
	typically because of impossible constraints. (PR#17345)

    o   removeSource() no longer erroneously removes NULL in certain
	cases, thanks to Dénes Tóth.

    o   nls(`NO [mol/l]` ~ f(t)) and nls(y ~ a) now work.  (Partly from
	PR#17367)

    o   R CMD build checks for GNU cp rather than assuming Linux has
	it.  (PR#17370 says ‘Alpine Linux’ does not.)

    o   Non-UTF-8 multibyte character handling fixed more permanently
	(PR#16732).

    o   sum(<large ints>, <stuff>) is more consistent.  (PR#17372)

    o   rf() and rbeta() now also work correctly when ncp is not
	scalar, notably when (partly) NA.  (PR#17375)

    o   is.na(NULL) no longer warns.  (PR#16107)

    o   R CMD INSTALL now correctly sets C++ compiler flags when all
	source files are in sub-directories of src.

                        Changes in version 3.4.3                        

INSTALLATION on a UNIX-ALIKE

    o   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).

    o   R CMD javareconf has been updated to recognize the use of a
	Java 9 SDK on macOS.

BUG FIXES

    o   raw(0) & raw(0) and raw(0) | raw(0) again return raw(0) (rather
	than logical(0)).

    o   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.)

    o   Fix calling of methods on S4 generics that dispatch on ... when
	the call contains ....

    o   Following Unicode ‘Corrigendum 9’, the UTF-8 representations of
	U+FFFE and U+FFFF are now regarded as valid by utf8ToInt().

    o   range(c(TRUE, NA), finite = TRUE) and similar no longer return
	NA. (Reported by Lukas Stadler.)

    o   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.

    o   The printing of named raw vectors is now formatted nicely as
	for other such atomic vectors, thanks to Lukas Stadler.

                        Changes in version 3.4.2                        

NEW FEATURES

    o   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).

    o   The version of LAPACK included in the sources has been updated
	to 3.7.1, a bug-fix release.

    o   The default for tools::write_PACKAGES(rds_compress=) has been
	changed to "xz" to match the compression used by CRAN.

    o   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

    o   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

    o   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

    o   within(List, rm(x1, x2)) works correctly again, including when
	List[["x2"]] is NULL.

    o   regexec(pattern, text, *) now applies as.character(.) to its
	first two arguments, as documented.

    o   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)

    o   rt() assumed the ncp parameter was a scalar.  (PR#17306)

    o   menu(choices) with more than 10 choices which easily fit into
	one getOption("width")-line no longer erroneously repeats
	choices.  (PR#17312)

    o   length()<- on a pairlist succeeds.  (<URL:
	https://stat.ethz.ch/pipermail/r-devel/2017-July/074680.html>)

    o   Language objects such as quote(("\n")) or R functions are
	correctly printed again, where R 3.4.1 accidentally duplicated
	the backslashes.

    o   Construction of names() for very large objects in c() and
	unlist() now works, thanks to Suharto Anggono's patch proposals
	in PR#17292.

    o   Resource leaks (and similar) reported by Steve Grubb fixed.
	(PR#17314, PR#17316, PR#17317, PR#17318, PR#17319, PR#17320)

    o   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.

    o   sigma(fm) now takes the correct denominator degrees of freedom
	for a fitted model with NA coefficients.  (PR#17313)

    o   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)

    o   callNextMethod() works for ... methods.

    o   qr.coef(qd, y) now has correct names also when qd is a complex
	QR or stems from qr(*, LAPACK=TRUE).

    o   Setting options(device = *) to an invalid function no longer
	segfaults when plotting is initiated.  (PR#15883)

    o   encodeString(<very large string>) no longer segfaults.
	(PR#15885)

    o   It is again possible to use configure --enable-maintainer-mode
	without having installed notangle (it was required in R
	3.4.[01]).

    o   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.

    o   readRDS(textConnection(.)) works again.  (PR#17325)

    o   (1:n)[-n] no longer segfaults for n <- 2.2e9 (on a platform
	with enough RAM).

    o   x <- 1:2; tapply(x, list(x, x), function(x) "")[1,2] now
	correctly returns NA.  (PR#17333)

    o   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.

    o   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").

    o   The X11 device no longer uses the Xlib backing store
	(PR#16497).

    o   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.

    o   splineDesign(.., derivs = 4) no longer segfaults.

    o   fisher.test(*, hybrid=TRUE) now (again) will use the hybrid
	method when Cochran's conditions are met, fixing PR#16654.

                        Changes in version 3.4.1                        

INSTALLATION on a UNIX-ALIKE

    o   The deprecated support for PCRE versions older than 8.20 has
	been removed.

BUG FIXES

    o   getParseData() gave incorrect column information when code
	contained multi-byte characters.  (PR#17254)

    o   Asking for help using expressions like ?stats::cor() did not
	work.  (PR#17250)

    o   readRDS(url(....)) now works.

    o   R CMD Sweave again returns status = 0 on successful completion.

    o   Vignettes listed in .Rbuildignore were not being ignored
	properly.  (PR#17246)

    o   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.

    o   R CMD INSTALL Windows .zip file obeys --lock and --pkglock
	flags.

    o   (Windows only) The choose.files() function could return
	incorrect results when called with multi = FALSE.  (PR#17270)

    o   aggregate(<data.frame>, drop = FALSE) now also works in case of
	near-equal numbers in by.  (PR#16918)

    o   fourfoldplot() could encounter integer overflow when
	calculating the odds ratio. (PR#17286)

    o   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.

    o   print.noquote(x) now always returns its argument x (invisibly).

    o   Non-UTF-8 multibyte character sets were not handled properly in
	source references.  (PR#16732)

                        Changes in version 3.4.0                        

SIGNIFICANT USER-VISIBLE CHANGES

    o   (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").

    o   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.

    o   summary.default() no longer rounds, but its print method does
	resulting in less extraneous rounding, notably of numbers in
	the ten thousands.

    o   factor(x, exclude = L) behaves more rationally when x or L are
	character vectors.  Further, exclude = <factor> now behaves as
	documented for long.

    o   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).

    o   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.

    o   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.

    o   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

    o   User errors such as integrate(f, 0:1, 2) are now caught.

    o   Add signature argument to debug(), debugonce(), undebug() and
	isdebugged() for more conveniently debugging S3 and S4 methods.
	(Based on a patch by Gabe Becker.)

    o   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.)

    o   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.

    o   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.

    o   str(<looooooooong_string>) is no longer very slow; inspired by
	Mikko Korpela's proposal in PR#16527.

    o   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.

    o   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).

    o   The result of eigen() now is of class "eigen" in the default
	case when eigenvectors are computed.

    o   Zero-length date and date-time objects (of classes
	"POSIX[cl]?t") now print() “recognizably”.

    o   xy.coords() and xyz.coords() get a new setLab option.

    o   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.

    o   stopifnot(E, ..) now reports differences when E is a call to
	all.equal() and that is not true.

    o   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.

    o   The plot() method for ppr() has enhanced default labels (xmin
	and main).

    o   sample.int() gains an explicit useHash option (with a back
	compatible default).

    o   identical() gains an ignore.srcref option which drops "srcref"
	and similar attributes when true (as by default).

    o   diag(x, nrow = n) now preserves typeof(x), also for logical,
	integer and raw x (and as previously for complex and numeric).

    o   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.

    o   addNA() is faster now, e.g. when applied twice.  (Part of
	PR#16895.)

    o   New option rstandard(<lm>, type = "predicted") provides the
	“PRESS”-related leave-one-out cross-validation errors for
	linear models.

    o   After seven years of deprecation, duplicated factor levels now
	produce a warning when printed and an error in levels<- instead
	of a warning.

    o   Invalid factors, e.g., with duplicated levels (invalid but
	constructable) now give a warning when printed, _via_ new
	function .valid.factor().

    o   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.

    o   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.)

    o   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.

    o   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.

    o   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.

    o   Speedup in simplify2array() and hence sapply() and mapply()
	(for the case of names and common length > 1), thanks to
	Suharto Anggono's PR#17118.

    o   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.

    o   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.

    o   system.time() now uses message() instead of cat() when
	terminated early, such that suppressMessages() has an effect;
	suggested by Ben Bolker.

    o   citation() supports inst/CITATION files from package source
	trees, with lib.loc pointing to the directory containing the
	package.

    o   try() gains a new argument outFile with a default that can be
	modified _via_ options(try.outFile = .), useful notably for
	Sweave.

    o   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).

    o   Connections now print() without error even if invalid, e.g.
	after having been destroyed.

    o   apropos() and find(simple.words = FALSE) no longer match object
	names starting with . which are known to be internal objects
	(such as .__S3MethodsTable__.).

    o   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.

    o   strcapture() no longer fixes column names nor coerces strings
	to factors (suggested by Bill Dunlap).

    o   strcapture() returns NA for non-matching values in x (suggested
	by Bill Dunlap).

    o   source() gets new optional arguments, notably exprs; this is
	made use of in the new utility function withAutoprint().

    o   sys.source() gets a new toplevel.env argument.  This argument
	is useful for frameworks running package tests; contributed by
	Tomas Kalibera.

    o   Sys.setFileTime() and file.copy(copy.date = TRUE) will set
	timestamps with fractions of seconds on platforms/filesystems
	which support this.

    o   (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.)

    o   The license check enabled by options(checkPackageLicense =
	TRUE) is now done when the package's namespace is first loaded.

    o   ppr() and supsmu() get an optional trace argument, and ppr(..,
	sm.method = ..spline) is no longer limited to sample size n <=
	2500.

    o   The POSIXct method for print() gets optional tz and usetz
	arguments, thanks to a report from Jennifer S. Lyon.

    o   New function check_packages_in_dir_details() in package tools
	for analyzing package-check log files to obtain check details.

    o   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.

    o   The (default) Stangle driver Rtangle allows annotate to be a
	function and gets a new drop.evalFALSE option.

    o   The default method for quantile(x, prob) should now be monotone
	in prob, even in border cases, see PR#16672.

    o   bug.report() now tries to extract an email address from a
	BugReports field, and if there is none, from a Contacts field.

    o   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.)

    o   If a reference class has a validity method, validObject will be
	called automatically from the default initialization method for
	reference classes.

    o   tapply() gets new option default = NA allowing to change the
	previously hardcoded value.

    o   read.dcf() now consistently interprets any ‘whitespace’ to be
	stripped to include newlines.

    o   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.

    o   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.

    o   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.

    o   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.

    o   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).

    o   sessionInfo() shows the full paths to the library or executable
	files providing the BLAS/LAPACK implementations currently in
	use (not available on Windows).

    o   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.)

    o   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).

    o   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.

    o   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)

    o   getGraphicsEvent() now works on X11(type = "cairo") devices.
	Thanks to Frederick Eaton (for reviving an earlier patch).

    o   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.

    o   The deriv() and similar functions now can compute derivatives
	of log1p(), sinpi() and similar one-argument functions, thanks
	to a contribution by Jerry Lewis.

    o   median() gains a formal ... argument, so methods with extra
	arguments can be provided.

    o   strwrap() reduces indent if it is more than half width rather
	than giving an error.  (Suggested by Bill Dunlap.)

    o   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.

    o   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

    o   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.

    o   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.

    o   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.

    o   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.

    o   Headers for Unix-only facilities R_ext/GetX11Image.h,
	R_ext/QuartzDevice.h and R_ext/eventloop.h are no longer
	installed on Windows.

    o   No-longer-installed headers GraphicsBase.h, RGraphics.h,
	Rmodules/RX11.h and Rmodules/Rlapack.h which had a LGPL license
	no longer do so.

    o   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.

    o   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

    o   readline headers (and not just the library) are required unless
	configuring with --with-readline=no.

    o   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.

    o   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.

    o   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).

    o   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.

    o   Support for the defunct IRIX and OSF/1 OSes and Alpha CPU has
	been removed.

    o   configure checks that the compiler specified by $CXX $CXXFLAGS
	is able to compile C++ code.

    o   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.

    o   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.)

    o   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.)

    o   configure tests for a C++17-compliant compiler.  The tests are
	experimental and subject to change in the future.

INCLUDED SOFTWARE

    o   (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.

    o   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

    o   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.

    o   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).

    o   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).

    o   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

    o   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.

    o   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.

    o   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.

    o   R CMD check now checks that output files in inst/doc are newer
	than the source files in vignettes.

    o   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.)

    o   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.

    o   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.)

    o   The new option R CMD check --no-stop-on-test-error allows
	running the remaining tests (under tests/) even if one gave an
	error.

    o   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.

    o   R CMD check now checks any BugReports field to be non-empty and
	a suitable single URL.

    o   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

    o   (Windows only) Function setInternet2() is defunct.

    o   Installation support for readline emulations based on editline
	(aka libedit) is deprecated.

    o   Use of the C/C++ macro NO_C_HEADERS is defunct and silently
	ignored.

    o   unix.time(), a traditional synonym for system.time(), has been
	deprecated.

    o   structure(NULL, ..) is now deprecated as you cannot set
	attributes on NULL.

    o   Header Rconfig.h no longer defines SUPPORT_OPENMP; instead use
	_OPENMP (as documented for a long time).

    o   (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.

    o   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

    o   Getting or setting body() or formals() on non-functions for now
	signals a warning and may become an error for setting.

    o   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.

    o   deparse(<complex>, options = "digits17") prints more nicely
	now, mostly thanks to a suggestion by Richie Cotton.

    o   Rotated symbols in plotmath expressions are now positioned
	correctly on x11(type = "Xlib"). (PR#16948)

    o   as<-() avoids an infinite loop when a virtual class is
	interposed between a subclass and an actual superclass.

    o   Fix level propagation in unlist() when the list contains
	zero-length lists or factors.

    o   Fix S3 dispatch on S4 objects when the methods package is not
	attached.

    o   Internal S4 dispatch sets .Generic in the method frame for
	consistency with standardGeneric().  (PR#16929)

    o   Fix order(x, decreasing = TRUE) when x is an integer vector
	containing MAX_INT.  Ported from a fix Matt Dowle made to
	data.table.

    o   Fix caching by callNextMethod(), resolves PR#16973 and
	PR#16974.

    o   grouping() puts NAs last, to be consistent with the default
	behavior of order().

    o   Point mass limit cases: qpois(-2, 0) now gives NaN with a
	warning and qgeom(1, 1) is 0.  (PR#16972)

    o   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).

    o   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.

    o   droplevels(f) now keeps <NA> levels when present.

    o   In integer arithmetic, NULL is now treated as integer(0)
	whereas it was previously treated as double(0).

    o   The radix sort considers NA_real_ and NaN to be equivalent in
	rank (like the other sort algorithms).

    o   When index.return=TRUE is passed to sort.int(), the radix sort
	treats NAs like sort.list() does (like the other sort
	algorithms).

    o   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)

    o   as.character.factor() respects S4 inheritance when checking the
	type of its argument. (PR#17141)

    o   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.

    o   formatC(x, flag = f) allows two new flags, and signals an error
	for invalid flags also in the case of character formatting.

    o   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>.

    o   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).

    o   Asking for methods() on "|" returns only S3 methods. See <URL:
	https://stat.ethz.ch/pipermail/r-devel/2016-December/073476.html>.

    o   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.)

    o   seq("2", "5") now works too, equivalently to "2":"5" and
	seq.int().

    o   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.

    o   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)

    o   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.

    o   Bandwidth selectors bw.ucv(), bw.bcv() and bw.SJ() now avoid
	integer overflow for large sample sizes.

    o   str() no longer shows "list output truncated", in cases that
	list was not shown at all.  Thanks to Neal Fultz (PR#17219)

    o   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.)

    o   The str() and as.hclust() methods for "dendrogram" now also
	work for deeply nested dendrograms thanks to non-recursive
	implementations by Bradley Broom.

    o   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.

    o   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)

    o   tools::latexToUtf8() infinite looped on certain inputs.
	(PR#17138)

    o   terms.formula() ignored argument names when determining whether
	two terms were identical.  (PR#17235)

    o   callNextMethod() was broken when called from a method that
	augments the formal arguments of a primitive generic.

    o   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).

    o   Fix problems in command completion: Crash (PR#17222) and junk
	display in Windows, handling special characters in filenames on
	all systems.

                        Changes in version 3.3.3                        

NEW FEATURES

    o   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

    o   The configure check for the zlib version is now robust to
	versions longer than 5 characters, including 1.2.11.

UTILITIES

    o   Environmental variable _R_CHECK_TESTS_NLINES_ controls how R
	CMD check reports failing tests (see §8 of the ‘R Internals’
	manual).

DEPRECATED AND DEFUNCT

    o   (C-level Native routine registration.)  The undocumented styles
	field of the components of R_CMethodDef and R_FortranMethodDef
	is deprecated.

BUG FIXES

    o   vapply(x, *) now works with long vectors x.  (PR#17174)

    o   isS3method("is.na.data.frame") and similar are correct now.
	(PR#17171)

    o   grepRaw(<long>, <short>, fixed = TRUE) now works, thanks to a
	patch by Mikko Korpela.  (PR#17132)

    o   Package installation into a library where the package exists
	_via_ symbolic link now should work wherever Sys.readlink()
	works, resolving PR#16725.

    o   "Cincinnati" was missing an "n" in the precip dataset.

    o   Fix buffer overflow vulnerability in pdf() when loading an
	encoding file.  Reported by Talos (TALOS-2016-0227).

    o   getDLLRegisteredRoutines() now produces its warning correctly
	when multiple DLLs match, thanks to Matt Dowle's PR#17184.

    o   Sys.timezone() now returns non-NA also on platforms such as
	Ubuntu 14.04.5 LTS, thanks to Mikko Korpela's PR#17186.

    o   format(x) for an illegal "POSIXlt" object x no longer
	segfaults.

    o   methods(f) now also works for f "(" or "{".

    o   (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)

    o   On some systems, very small hexadecimal numbers in hex notation
	would underflow to zero.  (PR#17199)

    o   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.

    o   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.

    o   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).

    o   findMethod() failed if the active signature had expanded beyond
	what a particular package used. (Example with packages XR and
	XRJulia on CRAN.)

    o   qbeta() underflowed too early in some very asymmetric cases.
	(PR#17178)

    o   R CMD Rd2pdf had problems with packages with non-ASCII titles
	in .Rd files (usually the titles were omitted).

                        Changes in version 3.3.2                        

NEW FEATURES

    o   extSoftVersion() now reports the version (if any) of the
	readline library in use.

    o   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().

    o   Use options(deparse.max.lines=) to limit the number of lines
	recorded in .Traceback and other deparsing activities.

    o   format(<AsIs>) looks more regular, also for non-character
	atomic matrices.

    o   abbreviate() gains an option named = TRUE.

    o   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.

    o   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

    o   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)

    o   configure works better with Oracle Developer Studio 12.5.

UTILITIES

    o   R CMD check reports more dubious flags in files
	src/Makevars[.in], including -w and -g.

    o   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.

    o   R CMD config works better with paths containing spaces, even
	those of home directories (as reported by Ken Beath).

DEPRECATED AND DEFUNCT

    o   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

    o   The check for non-portable flags in R CMD check could be
	stymied by src/Makevars files which contained targets.

    o   (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.)

    o   pretty(d, ..) behaves better for date-time d (PR#16923).

    o   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.

    o   sample(NA_real_) now works.

    o   Packages using non-ASCII encodings in their code did not
	install data properly on systems using different encodings.

    o   merge(df1, df2) now also works for data frames with column
	names "na.last", "decreasing", or "method".  (PR#17119)

    o   contour() caused a segfault if the labels argument had length
	zero.  (Reported by Bill Dunlap.)

    o   unique(warnings()) works more correctly, thanks to a new
	duplicated.warnings() method.

    o   findInterval(x, vec = numeric(), all.inside = TRUE) now returns
	0s as documented.  (Reported by Bill Dunlap.)

    o   (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)

    o   pmax() and pmin() now work with (more ?)  classed objects, such
	as "Matrix" from the Matrix package, as documented for a long
	time.

    o   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.)

    o   str(I(matrix(..))) now looks as always intended.

    o   plot.ts(), the plot() method for time series, now respects cex,
	lwd and lty.  (Reported by Greg Werbin.)

    o   parallel::mccollect() now returns a named list (as documented)
	when called with wait = FALSE.  (Reported by Michel Lang.)

    o   If a package added a class to a class union in another package,
	loading the first package gave erroneous warnings about
	“undefined subclass”.

    o   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 (...).

    o   rbeta(4, NA) and similarly rgamma() and rnbinom() now return
	NaN's with a warning, as other r<dist>(), and as documented.
	(PR#17155)

    o   Using options(checkPackageLicense = TRUE) no longer requires
	acceptance of the licence for non-default standard packages
	such as compiler.  (Reported by Mikko Korpela.)

    o   split(<very_long>, *) now works even when the split off parts
	are long. (PR#17139)

    o   min() and max() now also work correctly when the argument list
	starts with character(0).  (PR#17160)

    o   Subsetting very large matrices (prod(dim(.)) >= 2^31) now works
	thanks to Michael Schubmehl's PR#17158.

    o   bartlett.test() used residual sums of squares instead of
	variances, when the argument was a list of lm objects.
	(Reported by Jens Ledet Jensen).

    o   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)

    o   xtabs(~ exclude) no longer fails from wrong scope, thanks to
	Suharto Anggono's PR#17147.

    o   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).

    o   findInterval(x, vec, left.open = TRUE) misbehaved in some
	cases. (Reported by Dmitriy Chernykh.)

                        Changes in version 3.3.1                        

BUG FIXES

    o   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.

    o   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.)

    o   unloadNamespace(ns) also works again when ns is a ‘namespace’,
	as from getNamespace().

    o   rgamma(1, Inf) or rgamma(1, 0, 0) no longer give NaN but the
	correct limit.

    o   length(baseenv()) is correct now.

    o   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.

    o   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.

    o   as.factor(c(a = 1L)) preserves names() again as in R < 3.1.0.

    o   strtrim(""[0], 0[0]) now works.

    o   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)

    o   diff(<difftime>) now keeps the "units" attribute, as
	subtraction already did, PR#16940.

                        Changes in version 3.3.0                        

SIGNIFICANT USER-VISIBLE CHANGES

    o   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.

    o   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

    o   The print method for methods() gains a byclass argument.

    o   New functions validEnc() and validUTF8() to give access to the
	validity checks for inputs used by grep() and friends.

    o   Experimental new functionality for S3 method checking, notably
	isS3method().
	
	Also, the names of the R ‘language elements’ are exported as
	character vector tools::langElts.

    o   str(x) now displays "Time-Series" also for matrix
	(multivariate) time-series, i.e. when is.ts(x) is true.

    o   (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).

    o   New programmeR's utility function chkDots().

    o   D() now signals an error when given invalid input, rather than
	silently returning NA.  (Request of John Nash.)

    o   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.

    o   New function strrep() for repeating the elements of a character
	vector.

    o   rapply() preserves attributes on the list when how = "replace".

    o   New S3 generic function sigma() with methods for extracting the
	estimated standard deviation aka “residual standard deviation”
	from a fitted model.

    o   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.

    o   as.raster(x) now also accepts raw arrays x assuming values in
	0:255.

    o   Subscripting of matrix/array objects of type "expression" is
	now supported.

    o   type.convert("i") now returns a factor instead of a complex
	value with zero real part and missing imaginary part.

    o   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.

    o   file() gains an explicit method argument rather than implicitly
	using getOption("url.method", "default").

    o   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).

    o   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.)

    o   (Windows only) download.file() with default method = "auto" and
	a ftps:// URL chooses "libcurl" if that is available.

    o   The out-of-the box Bioconductor mirror has been changed to one
	using https://: use chooseBioCmirror() to choose a http://
	mirror if required.

    o   The data frame and formula methods for aggregate() gain a drop
	argument.

    o   available.packages() gains a repos argument.

    o   The undocumented switching of methods for url() on https: and
	ftps: URLs is confined to method = "default" (and documented).

    o   smoothScatter() gains a ret.selection argument.

    o   qr() no longer has a ... argument to pass additional arguments
	to methods.

    o   [ has a method for class "table".

    o   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>.

    o   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.

    o   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.

    o   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).

    o   More consistent, partly not back-compatible behavior of NA and
	NaN coercion to complex numbers, operations less often
	resulting in complex NA (NA_complex_).

    o   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.

    o   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.

    o   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)

    o   rank() gains a ties.method = "last" option, for convenience
	(and symmetry).

    o   regmatches(invert = NA) can now be used to extract both
	non-matched and matched substrings.

    o   data.frame() gains argument fix.empty.names;
	as.data.frame.list() gets new cut.names, col.names and
	fix.empty.names.

    o   plot(x ~ x, *) now warns that it is the same as plot(x ~ 1, *).

    o   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.

    o   S4 dispatch works within calls to .Internal(). This means
	explicit S4 generics are no longer needed for unlist() and
	as.vector().

    o   Only font family names starting with "Hershey" (and not "Her"
	as before) are given special treatment by the graphics engine.

    o   S4 values are automatically coerced to vector (_via_ as.vector)
	when subassigned into atomic vectors.

    o   findInterval() gets a left.open option.

    o   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.

    o   tapply() has been made considerably more efficient without
	changing functionality, thanks to proposals from Peter Haverty
	and Suharto Anggono.  (PR#16640)

    o   match.arg(arg) (the one-argument case) is faster; so is
	sort.int().  (PR#16640)

    o   The format method for object_size objects now also accepts
	“binary” units such as "KiB" and e.g., "Tb".  (Partly from
	PR#16649.)

    o   Profiling now records calls of the form foo::bar and some
	similar cases directly rather than as calls to <Anonymous>.
	Contributed by Winston Chang.

    o   New string utilities startsWith(x, prefix) and endsWith(x,
	suffix).  Also provide speedups for some grepl("^...",*) uses
	(related to proposals in PR#16490).

    o   Reference class finalizers run at exit, as well as on garbage
	collection.

    o   Avoid parallel dependency on stats for port choice and random
	number seeds.  (PR#16668)

    o   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).

    o   The order() function gains a method argument for choosing
	between "shell" and "radix".

    o   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.

    o   rhyper(nn, m, n, k) no longer returns NA when one of the three
	parameters exceeds the maximal integer.

    o   switch() now warns when no alternatives are provided.

    o   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).

    o   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)

    o   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.

    o   New function .traceback() returns the stack trace which
	traceback() prints.

    o   lengths() dispatches internally.

    o   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.

    o   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)

    o   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.

    o   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.

    o   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.

    o   New convenience function Rcmd() in package tools for invoking R
	CMD tools from within R.

    o   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

    o   R CMD check has a new option --ignore-vignettes for use with
	non-Sweave vignettes whose VignetteBuilder package is not
	available.

    o   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.

    o   R CMD check --as-cran now also checks DOIs in package CITATION
	and Rd files.

    o   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

    o   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).

    o   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").)

    o   (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).

    o   [<- 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().

    o   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

    o   Support for very old versions of valgrind (e.g., 3.3.0) has
	been removed.

    o   The included libtool script (generated by configure) has been
	updated to version 2.4.6 (from 2.2.6a).

    o   libcurl version 7.28.0 or later with support for the https
	protocol is required for installation (except on Windows).

    o   BSD networking is now required (except on Windows) and so
	capabilities("http/ftp") is always true.

    o   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.

    o   The minimum supported version of OS X is 10.6 (‘Snow Leopard’):
	even that has been unsupported by Apple since 2012.

    o   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.

    o   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.

    o   configure looks for C functions __cospi, __sinpi and __tanpi
	and uses these if cospi _etc_ are not found.  (OS X is the main
	instance.)

    o   (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.

    o   (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

    o   The make macro AWK which used to be made available to files
	such as src/Makefile is no longer set.

C-LEVEL FACILITIES

    o   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

    o   R_GE_version has been increased to 11.

    o   New API call R_orderVector1, a faster one-argument version of
	R_orderVector.

    o   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.

    o   Including header S.h from C++ code would fail on some
	platforms, and so gives a compilation error on all.

    o   The deprecated header Rdefines.h is now compatible with
	defining R_NO_REMAP.

    o   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

    o   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.

    o   The first arguments of .colSums() etc (with an initial dot) are
	now named x rather than X (matching colSums()): thus error
	messages are corrected.

    o   A coef() method for class "maov" has been added to allow vcov()
	to work with multivariate results. (PR#16380)

    o   method = "libcurl" connections signal errors rather than
	retrieving HTTP error pages (where the ISP reports the error).

    o   xpdrows.data.frame() was not checking for unique row names; in
	particular, this affected assignment to non-existing rows _via_
	numerical indexing. (PR#16570)

    o   tail.matrix() did not work for zero rows matrices, and could
	produce row “labels” such as "[1e+05,]".

    o   Data frames with a column named "stringsAsFactors" now format
	and print correctly.  (PR#16580)

    o   cor() is now guaranteed to return a value with absolute value
	less than or equal to 1. (PR#16638)

    o   Array subsetting now keeps names(dim(.)).

    o   Blocking socket connection selection recovers more gracefully
	on signal interrupts.

    o   The data.frame method of rbind() construction row.names works
	better in borderline integer cases, but may change the names
	assigned.  (PR#16666)

    o   (X11 only) getGraphicsEvent() miscoded buttons and missed mouse
	motion events.  (PR#16700)

    o   methods(round) now also lists round.POSIXt.

    o   tar() now works with the default files = NULL.  (PR#16716)

    o   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.)

    o   The spacing could be wrong when printing a complex array.
	(Report and patch by Lukas Stadler.)

    o   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.

    o   tsp(x) <- NULL did not handle correctly objects inheriting from
	both "ts" and "mts".  (PR#16769)

    o   install.packages() could give false errors when
	options("pkgType") was "binary".  (Reported by Jose Claudio
	Faria.)

    o   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)

    o   download.file() with method = "wininet" incorrectly warned of
	download file length difference when reported length was
	unknown. (PR#16805)

    o   diag(NULL, 1) crashed because of missed type checking.
	(PR#16853)

                        Changes in version 3.2.5                        

BUG FIXES

    o   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 version 3.2.4                        

NEW FEATURES

    o   install.packages() and related functions now give a more
	informative warning when an attempt is made to install a base
	package.

    o   summary(x) now prints with less rounding when x contains
	infinite values. (Request of PR#16620.)

    o   provideDimnames() gets an optional unique argument.

    o   shQuote() gains type = "cmd2" for quoting in cmd.exe in
	Windows.  (Response to PR#16636.)

    o   The data.frame method of rbind() gains an optional argument
	stringsAsFactors (instead of only depending on
	getOption("stringsAsFactors")).

    o   smooth(x, *) now also works for long vectors.

    o   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

    o   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

    o   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.)

    o   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.

    o   The C header file S.h is no longer documented: its use should
	be replaced by R.h.

BUG FIXES

    o   kmeans(x, centers = <1-row>) now works. (PR#16623)

    o   Vectorize() now checks for clashes in argument names.
	(PR#16577)

    o   file.copy(overwrite = FALSE) would signal a successful copy
	when none had taken place.  (PR#16576)

    o   ngettext() now uses the same default domain as gettext().
	(PR#14605)

    o   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.

    o   addmargins() now adds dimnames for the extended margins in all
	cases, as always documented.

    o   heatmap() evaluated its add.expr argument in the wrong
	environment.  (PR#16583)

    o   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.

    o   The internal deparser did not add parentheses when necessary,
	e.g. before [] or [[]].  (Reported by Lukas Stadler; additional
	fixes included as well).

    o   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.

    o   url connections with method = "libcurl" are destroyed properly.
	(PR#16681)

    o   withCallingHandler() now (again) handles warnings even during
	S4 generic's argument evaluation.  (PR#16111)

    o   deparse(..., control = "quoteExpressions") incorrectly quoted
	empty expressions.  (PR#16686)

    o   format()ting datetime objects ("POSIX[cl]?t") could segfault or
	recycle wrongly.  (PR#16685)

    o   plot.ts(<matrix>, las = 1) now does use las.

    o   saveRDS(*, compress = "gzip") now works as documented.
	(PR#16653)

    o   (Windows only) The Rgui front end did not always initialize the
	console properly, and could cause R to crash.  (PR#16698)

    o   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.

    o   The as.hclust() method for "dendrogram"s failed often when
	there were ties in the heights.

    o   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.

    o   cor.test() now calculates very small p values more accurately
	(affecting the result only in extreme not statistically
	relevant cases).  (PR#16704)

    o   smooth(*, do.ends=TRUE) did not always work correctly in R
	versions between 3.0.0 and 3.2.3.

    o   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.

    o   The figures in help pages such as ?points were accidentally
	damaged, and did not appear in R 3.2.3.  (PR#16708)

    o   available.packages() sometimes deleted the wrong file when
	cleaning up temporary files.  (PR#16712)

    o   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)

    o   [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.

    o   approxfun(*, method="constant") and hence ecdf() which calls
	the former now correctly “predict” NaN values as NaN.

    o   summary.data.frame() now displays NAs in Date columns in all
	cases.  (PR#16709)

                        Changes in version 3.2.3                        

NEW FEATURES

    o   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.)

    o   (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.

    o   Windows "wininet" FTP first tries EPSV / PASV mode rather than
	only using active mode (reported by Dan Tenenbaum).

    o   which.min(x) and which.max(x) may be much faster for logical
	and integer x and now also work for long vectors.

    o   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.

    o   (Windows only) Shortcuts for printing and saving have been
	added to menus in Rgui.exe.  (Request of PR#16572.)

    o   loess(..., iterTrace=TRUE) now provides diagnostics for
	robustness iterations, and the print() method for
	summary(<loess>) shows slightly more.

    o   The included version of PCRE has been updated to 8.38, a
	bug-fix release.

    o   View() now displays nested data frames in a more friendly way.
	(Request with patch in PR#15915.)

INSTALLATION and INCLUDED SOFTWARE

    o   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.)

    o   configure has a new argument --disable-java to disable the
	checks for Java.

    o   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).

    o   configure now supports the OpenMP flags -fopenmp=libomp (clang)
	and -qopenmp (Intel C).

    o   Various macros can be set to override the default behaviour of
	configure when detecting OpenMP: see file config.site.

    o   Source installation on Windows has been modified to allow for
	MiKTeX installations without texi2dvi.exe.  See file
	MkRules.dist.

BUG FIXES

    o   regexpr(pat, x, perl = TRUE) with Python-style named capture
	did not work correctly when x contained NA strings.  (PR#16484)

    o   The description of dataset ToothGrowth has been
	improved/corrected.  (PR#15953)

    o   model.tables(type = "means") and hence TukeyHSD() now support
	"aov" fits without an intercept term.  (PR#16437)

    o   close() now reports the status of a pipe() connection opened
	with an explicit open argument.  (PR#16481)

    o   Coercing a list without names to a data frame is faster if the
	elements are very long. (PR#16467)

    o   (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)

    o   (Windows) Sys.info() was out of step with win.version() and did
	not report Windows 8.

    o   topenv(baseenv()) returns baseenv() again as in R 3.1.0 and
	earlier.  This also fixes compilerJIT(3) when used in
	.Rprofile.

    o   detach()ing the methods package keeps .isMethodsDispatchOn()
	true, as long as the methods namespace is not unloaded.

    o   Removed some spurious warnings from configure about the
	preprocessor not finding header files.  (PR#15989)

    o   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)

    o   pchisq(*, df=0, ncp > 0, log.p=TRUE) no longer underflows (for
	ncp > ~60).

    o   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.

    o   Help for which.min() is now more precise about behavior with
	logical arguments.  (PR#16532)

    o   The print width of character strings marked as "latin1" or
	"bytes" was in some cases computed incorrectly.

    o   abbreviate() did not give names to the return value if
	minlength was zero, unlike when it was positive.

    o   (Windows only) dir.create() did not always warn when it failed
	to create a directory.  (PR#16537)

    o   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)

    o   read.dcf() sometimes misread lines longer than 8191 characters.
	(Reported by Hervé Pagès with a patch.)

    o   within(df, ..) no longer drops columns whose name start with a
	".".

    o   The built-in HTTP server converted entire Content-Type to
	lowercase including parameters which can cause issues for
	multi-part form boundaries (PR#16541).

    o   Modifying slots of S4 objects could fail when the methods
	package was not attached. (PR#16545)

    o   splineDesign(*, outer.ok=TRUE) (splines) is better now
	(PR#16549), and interpSpline() now allows sparse=TRUE for
	speedup with non-small sizes.

    o   If the expression in the traceback was too long, traceback()
	did not report the source line number.  (Patch by Kirill
	Müller.)

    o   The browser did not truncate the display of the function when
	exiting with options("deparse.max.lines") set.  (PR#16581)

    o   When bs(*, Boundary.knots=) had boundary knots inside the data
	range, extrapolation was somewhat off.  (Patch by Trevor
	Hastie.)

    o   var() and hence sd() warn about factor arguments which are
	deprecated now. (PR#16564)

    o   loess(*, weights = *) stored wrong weights and hence gave
	slightly wrong predictions for newdata.  (PR#16587)

    o   aperm(a, *) now preserves names(dim(a)).

    o   poly(x, ..) now works when either raw=TRUE or coef is
	specified.  (PR#16597)

    o   data(package=*) is more careful in determining the path.

    o   prettyNum(*, decimal.mark, big.mark): fixed bug introduced when
	fixing PR#16411.

                        Changes in version 3.2.2                        

SIGNIFICANT USER-VISIBLE CHANGES

    o   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

    o   cmdscale() gets new option list. for increased flexibility when
	a list should be returned.

    o   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.)

    o   (Non-Windows only) download.file() with default method = "auto"
	now chooses "libcurl" if that is available and a https:// or
	ftps:// URL is used.

    o   (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).

    o   chooseCRANmirror() and chooseBioCmirror() now offer HTTPS
	mirrors in preference to HTTP mirrors.  This changes the
	interpretation of their ind arguments: see their help pages.

    o   capture.output() gets optional arguments type and split to pass
	to sink(), and hence can be used to capture messages.

C-LEVEL FACILITIES

    o   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

    o   The libtool script generated by configure has been modified to
	support FreeBSD >= 10 (PR#16410).

BUG FIXES

    o   The HTML help page links to demo code failed due to a change in
	R 3.2.0.  (PR#16432)

    o   If the na.action argument was used in model.frame(), the
	original data could be modified. (PR#16436)

    o   getGraphicsEvent() could cause a crash if a graphics window was
	closed while it was in use. (PR#16438)

    o   matrix(x, nr, nc, byrow = TRUE) failed if x was an object of
	type "expression".

    o   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.)

    o   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.

    o   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.

    o   download.packages() failed for type equal to either "both" or
	"binary".  (Reported by Dan Tenenbaum.)

    o   The dendrogram method of labels() is much more efficient for
	large dendrograms, now using rapply().  (Comment #15 of
	PR#15215)

    o   The "port" algorithm of nls() could give spurious errors.
	(Reported by Radford Neal.)

    o   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.

    o   readBin() could fail on the SPARC architecture due to alignment
	issues.  (Reported by Radford Neal.)

    o   qt(*, df=Inf, ncp=.) now uses the natural qnorm() limit instead
	of returning NaN. (PR#16475)

    o   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.

    o   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)

    o   rhyper(nn, <large>) now works correctly. (PR#16489)

    o   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)

    o   getClass("foo") now also returns a class definition when it is
	found in the cache more than once.

                        Changes in version 3.2.1                        

NEW FEATURES

    o   utf8ToInt() now checks that its input is valid UTF-8 and
	returns NA if it is not.

    o   install.packages() now allows type = "both" with repos = NULL
	if it can infer the type of file.

    o   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.

    o   news() more flexibly extracts dates from package NEWS.Rd files.

    o   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.

    o   The included version of PCRE has been updated to 8.37, a
	bug-fix release.

    o   diag() no longer duplicates a matrix when extracting its
	diagonal.

    o   as.character.srcref() gains an argument to allow characters
	corresponding to a range of source references to be extracted.

BUG FIXES

    o   acf() and ccf() now guarantee values strictly in [-1,1]
	(instead of sometimes very slightly outside). PR#15832.

    o   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.

    o   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.

    o   apply(a, M, function(u) c(X = ., Y = .)) again has dimnames
	containing "X" and "Y" (as in R < 3.2.0).

    o   (Windows only) In some cases, the --clean option to R CMD
	INSTALL could fail.  (PR#16178)

    o   (Windows only) choose.files() would occasionally include
	characters from the result of an earlier call in the result of
	a later one.  (PR#16270)

    o   A change in RSiteSearch() in R 3.2.0 caused it to submit
	invalid URLs.  (PR#16329)

    o   Rscript and command line R silently ignored incomplete
	statements at the end of a script; now they are reported as
	parse errors.  (PR#16350)

    o   Parse data for very long strings was not stored.  (PR#16354)

    o   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)

    o   The parser could overflow internally when given numbers in
	scientific format with extremely large exponents.  (PR#16358)

    o   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)

    o   The low-level functions .rowSums() etc. did not check the
	length of their argument, so could segfault. (PR#16367)

    o   The quietly argument of library() is now correctly propagated
	from .getRequiredPackages2().

    o   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.

    o   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)

    o   cummax(x) now correctly propagates NAs also when x is of type
	integer and begins with an NA.

    o   summaryRprof() could fail when the profile contained only two
	records.  (PR#16395)

    o   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.)

    o   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)

    o   slotNames(.) is now correct for "signature" objects (mostly
	used internally in methods).

    o   On some systems, the first string comparison after a locale
	change would result in NA.

                        Changes in version 3.2.0                        

NEW FEATURES

    o   anyNA() gains a recursive argument.

    o   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.

    o   (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.

    o   Some unusual arguments to embedFonts() can now be specified as
	character vectors, and the defaults have been changed
	accordingly.

    o   Functions in the Summary group duplicate less.  (PR#15798)

    o   (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)

    o   read.fwf() and read.DIF() gain a fileEncoding argument, for
	convenience.

    o   Graphics devices can add attributes to their description in
	.Device and .Devices.  Several of those included with R use a
	"filepath" attribute.

    o   pmatch() uses hashing in more cases and so is faster at the
	expense of using more memory. (PR#15697)

    o   pairs() gains new arguments to select sets of variables to be
	plotted against each other.

    o   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.

    o   New function dir.exists() in package base to test efficiently
	whether one or more paths exist and are directories.

    o   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.

    o   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.

    o   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.)

    o   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).

    o   merge() can create a result which uses long vectors on 64-bit
	platforms.

    o   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).

    o   Packages may now use a file of common macro definitions in
	their help files, and may import definitions from other
	packages.

    o   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.

    o   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.

    o   options(OutDec =) can now specify a multi-byte character, e.g.,
	options(OutDec = "\u00b7") in a UTF-8 locale.

    o   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(.).

    o   ls() (aka objects()) and as.list.environment() gain a new
	argument sorted.

    o   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.

    o   Function returnValue() has been added to give on.exit() code
	access to a function's return value for debugging purposes.

    o   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.

    o   Utility function dynGet() useful for detecting cycles, aka
	infinite recursions.

    o   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.

    o   apply(m, 2, identity) is now the same as the matrix m when it
	has _named_ row names.

    o   A new function debuggingState() has been added, allowing to
	temporarily turn off debugging.

    o   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).

    o   rbind.data.frame() gains an optional argument make.row.names,
	for potential speedup.

    o   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.

    o   Calling callGeneric() without arguments now works with
	primitive generics to some extent.

    o   vapply(x, FUN, FUN.VALUE) is more efficient notably for large
	length(FUN.VALUE); as extension of PR#16061.

    o   as.table() now allows tables with one or more dimensions of
	length 0 (such as as.table(integer())).

    o   names(x) <- NULL now clears the names of call and ... objects.

    o   library() will report a warning when an insufficient dependency
	version is masking a sufficient one later on the library search
	path.

    o   A new plot() method for class "raster" has been added.

    o   New check_packages_in_dir_changes() function in package tools
	for conveniently analyzing how changing sources impacts the
	check results of their reverse dependencies.

    o   Speed-up from Peter Haverty for ls() and
	methods:::.requirePackage() speeding up package loading.
	(PR#16133)

    o   New get0() function, combining exists() and get() in one call,
	for efficiency.

    o   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.

    o   topenv() has been made .Internal() for speedup, based on Peter
	Haverty's proposal in PR#16140.

    o   getOption() no longer calls options() in the main case.

    o   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.

    o   (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().

    o   parent.env<- can no longer modify the parent of a locked
	namespace or namespace imports environment.  Contributed by
	Karl Millar.

    o   New function isNamespaceLoaded() for readability and speed.

    o   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.

    o   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.

    o   New function trimws() for removing leading/trailing whitespace.

    o   cbind() and rbind() now consider S4 inheritance during S3
	dispatch and also obey deparse.level.

    o   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).

    o   (Windows.)  download.file(quiet = FALSE) now uses text rather
	than Windows progress bars in non-interactive use.

    o   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.

    o   New function .getNamespaceInfo(), a no-check version of
	getNamespaceInfo() mostly for internal speedups.

    o   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.

    o   New lengths() function for getting the lengths of all elements
	in a list.

    o   New function toTitleCase() in package tools, tailored to
	package titles.

    o   The matrix methods of cbind() and rbind() allow matrices as
	inputs which have 2^31 or more elements.  (For cbind(), wish of
	PR#16198.)

    o   The default method of image() has an explicit check for a
	numeric or logical matrix (which was always required).

    o   URLencode() will not by default encode further URLs which
	appear to be already encoded.

    o   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.

    o   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.

    o   Code completion for namespaces now recognizes all loaded
	namespaces, rather than only the ones that are also attached.

    o   The code completion mechanism can now be replaced by a
	user-specified completer function, for (temporary) situations
	where the usual code completion is inappropriate.

    o   unzip() will now warn if it is able to detect truncation when
	unpacking a file of 4GB or more (related to PR#16243).

    o   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.

    o   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

    o   The \donttest sections of R's help files can be tested by
	make check TEST_DONTTEST=TRUE .

    o   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.)

    o   The included version of liblzma has been updated to xz-utils
	5.0.7 (minor bug fixes from 5.0.5).

    o   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.

    o   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.)

    o   R CMD INSTALL gains an option --built-timestamp=STAMP allowing
	100% reproducible package building, thanks to Dirk
	Eddelbuettel.

UTILITIES

    o   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.

    o   The HTML generated by tools::Rd2HTML() and tools::toHTML()
	methods is now ‘XHTML 1.0 Strict’.

    o   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.

    o   R CMD build adds a NeedsCompilation field if one is not already
	present in the DESCRIPTION file.

    o   R CMD check gains option --test-dir to specify an alternative
	set of tests to run.

    o   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.

    o   R CMD check now checks that the Title and Description fields
	are correctly terminated.

    o   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

    o   New C API utility logspace_sum(logx[], n).

    o   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.

    o   .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.

    o   New entry point R_allocLD, like R_alloc but guaranteed to have
	sufficient alignment for long double pointers.

    o   isPairList() now returns TRUE for DOTSXP.

WINDOWS BUILD CHANGES

    o   Installation using external binary distributions of zlib,
	bzip2, liblzma, pcre, libpng, jpeglib and libtiff is now
	required, and the build instructions have been revised.

    o   A new make target rsync-extsoft has been added to obtain copies
	of the external libraries from CRAN.

    o   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.

    o   (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

    o   (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.

    o   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

    o   download.file(method = "lynx") is defunct.

    o   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.

    o   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.

    o   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

    o   Fixed two obscure bugs in pairlist subassignment, reported by
	Radford Neal as part of pqR issue 16.

    o   Fixes for bugs in handling empty arguments and argument
	matching by name in log().

    o   all.equal() gains methods for environments and refClasses.

    o   [<- and [[<- gain S4 data.frame methods to avoid corruption of
	S4 class information by the S3 methods.

    o   callNextMethod() should now work within a .local call when ...
	is absent from formals(.local).

    o   dput(pairlist(x)) generates a call to the pairlist constructor
	instead of the list constructor.

    o   Fix missing() when arguments are propagated through ... .
	(PR#15707)

    o   eigen(m) now defaults to symmetric = TRUE even when the
	dimnames are asymmetric if the matrix is otherwise symmetric.
	(PR#16151)

    o   Fix issues with forwarding ... through callGeneric() and
	callNextMethod().  (PR#16141)

    o   callGeneric() now works after a callNextMethod().

    o   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.

    o   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.

    o   Auto-printing no longer duplicates objects when printing is
	dispatched to a method.

    o   kmeans(x, k) would fail when nrow(x) >= 42949673.  (Comment 6
	of PR#15364)

    o   ‘Abbreviated’ locale-specific day and month names could have
	been truncated in those rare locales where there are the same
	as the full names.

    o   An irrelevant warning message from updating subclass
	information was silenced (the namespace would not be writable
	in this case).

                        Changes in version 3.1.3                        

NEW FEATURES

    o   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).

    o   kruskal.test() warns on more types of suspicious input.

    o   The as.dendrogram() method for "hclust" objects gains a check
	argument protecting against memory explosion for invalid
	inputs.

    o   capabilities() has a new item long.double which indicates if
	the build uses a long double type which is longer than double.

    o   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)

    o   icuSetCollate() now accepts locale = "ASCII" which uses the
	basic C function strcmp and so collates strings byte-by-byte in
	numerical order.

    o   sessionInfo() tries to report the OS version in use (not just
	that compiled under, and including details of Linux
	distributions).

    o   model.frame() (used by lm() and many other modelling functions)
	now warns when it drops contrasts from factors.  (Wish of
	PR#16119)

    o   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).

    o   Single source or binary files can be supplied for
	install.packages(type = "both") and the appropriate type and
	repos = NULL will be inferred.

    o   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.

    o   (Windows.) download.file(cacheOK = FALSE) is now supported when
	internet2.dll is used.

    o   browseURL() has been updated to work with Firefox 36.0 which
	has dropped support for the -remote interface.

INSTALLATION and INCLUDED SOFTWARE

    o   The included version of PCRE has been updated to 8.36.

    o   configure accepts MAKEINFO=texi2any as another way to ensure
	texinfo 5.x is used when both 5.x and 4.x are installed.

UTILITIES

    o   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.)

    o   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.

    o   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

    o   The configure option --with-valgrind-instrumentation=3 is
	deprecated and will be removed in R 3.2.0.

BUG FIXES

    o   (Windows.) Rscript.exe was missing a manifest specifying the
	modern style for common controls (e.g., the download progress
	bar).

    o   If a package had extra documentation files but no vignette, the
	HTML help system produced an empty index page.

    o   The parser now gives an error if a null character is included
	in a string using Unicode escapes. (PR#16046)

    o   qr.Q() failed on complex arguments due to pre-3.0(!) typo.
	(PR#16054)

    o   abs() failed with named arguments when the argument was
	complex.  (PR#16047)

    o   "noquote" objects may now be used as columns in data frames.
	(PR#15997)

    o   Some values with extremely long names were printed incorrectly.
	(PR#15999)

    o   Extremely large exponents on zero expressed in scientific
	notation (e.g. 0.0e50000) could give NaN.  (PR#15976)

    o   download.file() reported downloaded sizes as 0KB if less than
	1MB, only for R 3.1.2 and only on big-endian platforms.

    o   prompt() did not escape percent signs in the automatically
	generated usage section of help files.

    o   drop.terms() dropped some of the attributes of the object it
	was working with.  (PR#16029)

    o   (Windows.) The command completion in Rgui.exe messed up the
	console.  (PR#15791)

    o   (Windows.) The choose.files() command returned a blank string
	when the user asked for a single file but cancelled the
	request.  (PR#16074)

    o   Math2 S4 group generics failed to correctly dispatch
	"structure"- and "nonStructure"-derived classes.

    o   loadNamespace() imposed undocumented restrictions on the
	versionCheck parameter.  (Reported by Geoff Lee.)

    o   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).

    o   Loading packages incorrectly defining an S4 generic followed by
	a function of the same name caused an erroneous cyclic
	namespace dependency error.

    o   Declared vignette encodings are now always passed to the
	vignette engine.

    o   Port Tomas Kalibera's fix from R-devel that restores the
	loadMethod() fast path, effectively doubling the speed of S4
	dispatch.

    o   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)

    o   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)

    o   tools:::.Rdconv() didn't accept --encoding= due to a typo.
	(PR#16121)

    o   Unix-alike builds without a suitable makeinfo were documented
	to link the missing HTML manuals to CRAN, but did not.

    o   save(*, ascii=TRUE) and load() now correctly deal with NaN's.
	(PR#16137)

    o   split.Date() retains fractional representations while avoiding
	incomplete class propagation.

    o   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)

    o   RShowDoc("NEWS", "txt") had not been updated for the layout
	changes of R 3.1.0.

    o   The xtfrm() method for class "Surv" has been corrected and its
	description expanded.

    o   mode(x) <- y would incorrectly evaluate x before changing its
	mode. (PR#16215)

    o   besselJ(1, 2^64) and besselY(..) now signal a warning,
	returning NaN instead of typically segfaulting. (Issue 3 of
	PR#15554)

    o   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 version 3.1.2                        

NEW FEATURES

    o   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.

    o   For consistency with [dpqr]norm(), [dp]lnorm(sdlog = 0) model a
	point mass at exp(mulog) rather than return NaN (for an error).

    o   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).

    o   (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.

    o   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).

    o   New function icuGetCollate() to report on the ICU collation
	locale in use (if any).

    o   utils::URLencode() was updated to use unreserved and reserved
	characters from RFC 3986 (<URL:
	http://tools.ietf.org/html/rfc3986>) instead of RFC 1738.

    o   unique(warnings()) and c(warnings()) are now supported.

    o   The Bioconductor ‘version’ used by setRepositories() now
	defaults to 3.0. (It can be set at runtime _via_ environment
	variable R_BIOC_VERSION.)

    o   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

    o   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.

    o   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.)

    o   LaTeX package upquote is no longer required for R's use of
	inconsolata.

    o   (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

    o   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.

    o   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).

    o   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

    o   dmultinom() did not handle non-finite probabilities correctly.

    o   prettyNum(x, zero.print=*) now also works when x contains NAs.

    o   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).

    o   Rendering of \command in HTML versions of help pages has been
	improved: this is particularly evident on the help page for
	INSTALL.

    o   as.hexmode(x) and as.octmode(x) now behave correctly for some
	numeric x, e.g., c(NA, 1) or c(1, pi).

    o   drop1() failed if the scope argument had no variables to drop.
	(PR#15935)

    o   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).

    o   callGeneric() could fail if the generic had ... as a formal
	argument. (PR#15937).

    o   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.

    o   R objects such as list(`a\b` = 1) now print correctly.

    o   getAnywhere("C_pbinom") now returns correctly a single object
	(rather than unlisting it).

    o   The confint() method for nls() fits failed it these has
	specified parameter limits despite using an algorithm other
	than "port".  (PR#15960)

    o   Subclassing an S4 class failed if the class required arguments
	to the generator, through its initialize() method.

    o   removeSource() did not properly handle expressions containing
	arguments that were supplied as missing, e.g.  x[i,].
	(PR#15957)

    o   as.environment(list()) now works, and as.list() of such an
	environment is now the same as list(). (PR#15926)

    o   Several tcltk functions failed when run in unusual
	environments. (PR#15970)

    o   options(list()) now works (trivially). (PR#15979)

    o   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.

    o   The plot method for "hclust" objects gets an optional argument
	check; when that is true (the default) it checks more carefully
	for valid input.

    o   (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)

    o   Various possible buffer overruns have been prevented, and
	missed memory protection added. (PR#15990)

    o   Rscript no longer passes --args to R when there are no extra
	(“user”) arguments.

    o   objects like getClass("refClass")@prototype now print() and
	str() without error.

    o   identical() now also looks at the S4 bit.

    o   hist(x, breaks) is more robust in adding a small fuzz to few
	breaks when some are very large. (PR#15988)

    o   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)

    o   RShowDoc("NEWS") now displays the PDF version.

    o   Matrices and arrays with last dimension zero did not print at
	all or incompletely.  (PR#16012)

    o   plot.histogram() and hence hist() now respect the xaxs, yaxs
	and lab graphics parameters.  (PR#16021)

    o   bw.SJ(x) and other bw.*() no longer segfault when x contains
	non-finite values. (PR#16024)

    o   R CMD Rd2pdf unintentionally ignored its --os option.

    o   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).

    o   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)

    o   Adjust X11 auto-launch detection in DISPLAY on OS X to
	recognize latest XQuartz.

                        Changes in version 3.1.1                        

NEW FEATURES

    o   When attach() reports conflicts, it does so compatibly with
	library() by using message().

    o   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.

    o   tools::buildVignette() and tools::buildVignettes() with clean =
	FALSE no longer remove any created files.  buildvignette()
	gains a keep argument for more cleaning customization.

    o   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.)

    o   Error messages from bugs in embedded Sexpr code in Sweave
	documents now report the source location.

    o   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.

    o   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)

    o   The function determining the default number of knots for
	smooth.spline() is now exported, as .nknots.smspl().

    o   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).

    o   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.

    o   readRDS() now returns visibly.

    o   Modifying internal logical scalar constants now results in an
	error instead of a warning.

    o   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.

    o   The warning when using partial matching with the $ operator on
	data frames is now only given when
	options("warnPartialMatchDollar") is TRUE.

    o   Package help requests like package?foo now try the package foo
	whether loaded or not.

    o   General help requests now default to trying all loaded
	packages, not just those on the search path.

    o   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

    o   configure option --with-internal-tzcode can now be used with
	variable rsharedir.

    o   The included version of PCRE has been updated to 8.35.

    o   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.

    o   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.

    o   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)

    o   (Windows) There is updated support for the use of ICU for
	collation: see the ‘R Installation and Administration Manual’.

BUG FIXES

    o   dbinom(x, n), pbinom(), dpois(), etc, are slightly less
	restrictive in checking if n is integer-valued.  (Wish of
	PR#15734.)

    o   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.)

    o   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)

    o   The C code used by strptime() rejected time-zone offsets of
	more than +1200 (+1245, +1300 and +1400 can occur).  (PR#15768)

    o   (Windows only.)  png(type = "cairo", antialias = "gray") was
	not accepted.  (PR#15760)

    o   Use of save(..., envir=) with named objects could fail.
	(PR#15758)

    o   Sweave() mis-parsed Sexpr expressions that contained
	backslashes.  (PR#15779)

    o   The return value from options(foo = NULL) was not the previous
	value of the option.  (PR#15781)

    o   enc2utf8() and enc2native() did not always mark the encoding of
	the return values when it was known.

    o   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).

    o   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”.

    o   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").

    o   The device listing from dev2bitmap() and bitmap() was truncated
	to 1000 characters: modern versions of GhostScript on most
	platforms have many more devices.

    o   (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.

    o   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.)

    o   Misguided attempts to use chull() with non-finite points now
	give an error (related to PR#15777).

    o   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)

    o   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).

    o   tools::Rd2ex(commentDontrun = FALSE) failed if the block had
	only one line.

    o   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)

    o   system() returned success on some platforms even if the system
	was unable to launch a process. (PR#15796)

    o   (Windows Rgui console.)  Unbuffered output was sometimes not
	output immediately if the prompt was not on the last line of
	the console.

    o   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.

    o   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.

    o   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.

    o   Auto-printing would re-evaluate its argument when trying to
	dispatch to a print method.  This is now avoided when possible.

    o   Unserializing (including load() and readRDS()) could silently
	return incorrect numeric values from ASCII saves if there was a
	read error.

    o   getParseData() could return incorrect values for the parents of
	some elements. (Reported by Andrew Redd.)

    o   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.

    o   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().

    o   The "help.try.all.packages" option was ignored when the
	shortcut syntax for help was used, e.g. ?foo.

    o   A potential segfault in string allocation has been fixed.
	(Found by Radford Neal.)

    o   Potential memory protection errors in sort() and D() have been
	fixed. (Found by Radford Neal.)

    o   Fixed a lack of error checking in graphics event functions.
	(Found by Radford Neal; a different patch used here than the
	one in pqR.)

    o   numericDeriv() sometimes miscalculated the gradient.
	(PR#15849, reported originally by Radford Neal)

                        Changes in version 3.1.0                        

NEW FEATURES

    o   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".

    o   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).

    o   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.)

    o   arrayInd(*, useNames = TRUE) and, analogously, which(*, arr.ind
	= TRUE) now make use of names(.dimnames) when available.

    o   is.unsorted() now also works for raw vectors.

    o   The "table" method for as.data.frame() (also useful as
	as.data.frame.table()) now passes sep and base arguments to
	provideDimnames().

    o   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.

    o   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).

    o   The parser has been modified to use less memory.

    o   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.

    o   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.)

    o   grid.show.layout() and grid.show.viewport() get an optional
	vp.ex argument.

    o   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.)

    o   object.size() gains a format() method.

    o   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).

    o   The text and PDF news files, including NEWS and NEWS.2, have
	been moved to the doc directory.

    o   combn(x, simplify = TRUE) now gives a factor result for factor
	input x (previously user error).  (Related to PR#15442.)

    o   Added utils::fileSnapshot() and utils::changedFiles() functions
	to allow snapshots and comparison of directories of files.

    o   make.names(names, unique=TRUE) now tries to preserve existing
	names. (Suggestion of PR#15452.)

    o   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.)

    o   print.table(x, zero.print = ".") now also has an effect when x
	is not integer-valued.

    o   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.

    o   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).

    o   The "save.defaults" option can include a value for
	compression_level.  (Wish of PR#15579.)

    o   colSums() and friends now have support for arrays and
	data-frame columns with 2^31 or more elements.

    o   as.factor() is faster when f is an unclassed integer vector
	(for example, when called from tapply()).

    o   fft() now works with longer inputs, from the 12 million
	previously supported up to 2 billion.  (PR#15593)

    o   Complex svd() now uses LAPACK subroutine ZGESDD, the complex
	analogue of the routine used for the real case.

    o   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.

    o   file.copy() gains a copy.date argument.

    o   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.

    o   (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.

    o   dnorm(x, log = FALSE) is more accurate (but somewhat slower)
	for |x| > 5; as suggested in PR#15620.

    o   Some versions of the tiff() device have further compression
	options.

    o   read.table(), readLines() and scan() have a new argument to
	influence the treatment of embedded nuls.

    o   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.

    o   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.

    o   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.

    o   warning() has a new argument noBreaks., to simplify
	post-processing of output with options(warn = 1).

    o   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.

    o   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.

    o   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.

    o   all.equal() now has a "POSIXt" method replacing the "POSIXct"
	method.

    o   The "Date" and "POSIXt" methods of seq() allows by = "quarter"
	for completeness (by = "3 months" always worked).

    o   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).

    o   New function agrepl() which like grepl() returns a logical
	vector.

    o   fifo() is now supported on Windows. (PR#15600)

    o   sort.list(method = "radix") now allows negative integers (wish
	of PR#15644).

    o   Some functionality of print.ts() is now available in
	.preformat.ts() for more modularity.

    o   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.

    o   The pdf() device omits circles and text at extremely small
	sizes, since some viewers were failing on such files.

    o   The rightmost break for the "months", "quarters" and "years"
	cases of hist.POSIXlt() has been increased by a day.  (Inter
	alia, fixes PR#15717.)

    o   The handling of DF[i,] <- a where i is of length 0 is improved.
	(Inter alia, fixes PR#15718.)

    o   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.

    o   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.

    o   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

    o   The included version of LAPACK has been updated to 3.5.0.

    o   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.

    o   More of make check will work if recommended packages are not
	installed: but recommended packages remain needed for thorough
	checking of an R build.

    o   The version of tzcode included in src/extra/tzone has been
	updated.  (Formerly used only on Windows.)

    o   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.

    o   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).

    o   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.

    o   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

    o   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.

    o   Only vignettes sources in directory vignettes are considered to
	be vignettes and hence indexed as such.

    o   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.

    o   For consistency, entries in .Rinstignore are now matched
	case-insensitively on all platforms.

    o   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).

    o   R CMD INSTALL --build (not Windows) now defaults to the
	internal tar() unless R_INSTALL_TAR is set.

    o   There is support for compiling C++11 code in packages on
	suitable platforms: see ‘Writing R Extensions’.

    o   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

    o   The behaviour of the code browser has been made more
	consistent, in part following the suggestions in PR#14985.

    o   Calls to browser() are now consistent with calls to the browser
	triggered by debug(), in that Enter will default to n rather
	than c.

    o   A new browser command s has been added, to “step into” function
	calls.

    o   A new browser command f has been added, to “finish” the current
	loop or function.

    o   Within the browser, the command help will display a short list
	of available commands.

UTILITIES

    o   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.

    o   For consistency, R CMD build now matches entries in
	.Rbuildignore and vignettes/.install_extras case-insensitively
	on all platforms (not just on Windows).

    o   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.

    o   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).

    o   R CMD check --no-rebuild-vignettes is defunct:
	R CMD check --no-build-vignettes has been preferred since R
	3.0.0.

    o   R CMD build --no-vignettes is defunct:
	R CMD build --no-build-vignettes has been preferred since R
	3.0.0.

    o   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.

    o   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.

    o   Sweave.sty has a new option [inconsolata].

    o   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.

    o   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.

    o   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_.

    o   Where supported, tools::texi2dvi() limits the number of passes
	tried to 20.

C-LEVEL FACILITIES

    o   (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.

    o   Remapping in the Rmath.h header can be suppressed by defining
	R_NO_REMAP_RMATH.

    o   The remapping of rround() in header Rmath.h has been removed:
	use fround() instead.

    o   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.

    o   The never-documented remapping of prec() to fprec() in header
	Rmath.h has been removed.

    o   The included LAPACK subset now contains ZGESDD and ZGELSD.

    o   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().)

    o   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.

    o   allocVector3 has been added which allows custom allocators to
	be used for individual vector allocations.

DEPRECATED AND DEFUNCT

    o   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.

    o   .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.

    o   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]].

    o   The long-deprecated use of \synopsis in the Usage section of
	.Rd files has been removed: such sections are now ignored (with
	a warning).

    o   package.skeleton()'s deprecated argument namespace has been
	removed.

    o   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.

    o   Functions readNEWS() and checkNEWS() in package tools are
	defunct.

    o   download.file(method = "lynx") is deprecated.

    o   .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).

    o   The workaround of setting R_OSX_VALGRIND has been removed: it
	is not needed in current valgrind.

BUG FIXES

    o   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).

    o   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.)

    o   getGraphicsEvent() caused 100% usage of one CPU in Windows.
	(PR#15500)

    o   nls() with no start argument may now work inside another
	function (scoping issue).

    o   pbeta() and similar work better for very large (billions) ncp.

    o   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.

    o   all.equal(list(1), identity) now works.

    o   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.

    o   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).

    o   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).

    o   ? applied to a call to an S4 generic failed in several cases.
	(PR#15680)

    o   The implicit S4 generics for primitives with ... in their
	argument list were incorrect. (PR#15690)

    o   Bug fixes to methods::callGeneric(). (PR#15691)

    o   The bug fix to aggregrate() in PR#15004 introduced a new bug in
	the case of no grouping variables. (PR#15699)

    o   In rare cases printing deeply nested lists overran a buffer by
	one byte and on a few platforms segfaulted. (PR#15679)

    o   The dendrogram method of as.dendrogram() was hidden
	accidentally, (PR#15703), and order.dendrogram(d) gave too much
	for a leaf d. (PR#15702)

    o   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.

    o   cophenetic() applied to a "dendrogram" object sometimes
	incorrectly returned a "Labels" attribute with dimensions.
	(PR#15706)

    o   printCoefmat() called from quite a few print() methods now
	obeys small getOption("width") settings, line wrapping the
	"signif. codes" legend appropriately.  (PR#15708)

    o   model.matrix() assumed that the stored dimnames for a matrix
	was NULL or length 2, but length 1 occurred.

    o   The clipping region for a device was sometimes used in base
	graphics before it was set.

                        Changes in version 3.0.3                        

NEW FEATURES

    o   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/>.

    o   write.table() now handles matrices of 2^31 or more elements,
	for those with large amounts of patience and disc space.

    o   There is a new function, La_version(), to report the version of
	LAPACK in use.

    o   The HTML version of ‘An Introduction to R’ now has links to PNG
	versions of the figures.

    o   There is some support to produce manuals in ebook formats. (See
	doc/manual/Makefile.  Suggested by Mauro Cavalcanti.)

    o   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.

    o   The backtick may now be escaped in strings, to allow names
	containing them to be constructed, e.g. `\``.  (PR#15621)

    o   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.)

    o   (Windows only.)  file.symlink() works around the undocumented
	restriction of the Windows system call to backslashes.  (Wish
	of PR#15631.)

    o   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.)

    o   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).

    o   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.

    o   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.

    o   available.packages() is better protected against corrupt
	metadata files.  (A recurring problem with Debian package
	shogun-r: PR#14713.)

    o   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

    o   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

    o   The new field SysDataCompression in the DESCRIPTION file allows
	user control over the compression used for sysdata.rda objects
	in the lazy-load database.

    o   install.packages(dependencies = value) for value = NA (the
	default) or value = TRUE omits packages only in LinkingTo for
	binary package installs.

C-LEVEL FACILITIES

    o   The long undocumented remapping of rround() to Rf_fround() in
	header Rmath.h is now formally deprecated: use fround()
	directly.

    o   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

    o   getParseData() truncated the imaginary part of complex number
	constants.  (Reported by Yihui Xie.)

    o   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.)

    o   provideDimnames() failed for arrays with a 0 dimension.
	(PR#15465)

    o   rbind() and cbind() did not handle list objects correctly.
	(PR#15468)

    o   replayPlot() now checks if it is replaying a plot from the same
	session.

    o   rasterImage() and grid.raster() now give error on an empty
	(zero-length) raster.  (Reported by Ben North.)

    o   plot.lm() would sometimes scramble the labels in plot type 5.
	(PR#15458 and PR#14837)

    o   min() did not handle NA_character_ values properly.  (Reported
	by Magnus Thor Torfason.)

    o   (Windows only.)  readRegistry() would duplicate default values
	for keys.  (PR#15455)

    o   str(..., strict.width = "cut") did not handle it properly when
	more than one line needed to be cut.  (Reported by Gerrit
	Eichner.)

    o   Removing subclass back-references when S4 classes were removed
	or their namespace unloaded had several bugs (e.g., PR#15481).

    o   aggregate() could fail when there were too many levels present
	in the by argument.  (PR#15004)

    o   namespaceImportFrom() needed to detect primitive functions when
	checking for duplicated imports (reported by Karl Forner).

    o   getGraphicsEvent() did not exit when a user closed the graphics
	window.  (PR#15208)

    o   Errors in vignettes were not always captured and displayed
	properly.  (PR#15495)

    o   contour() could fail when dealing with extremely small z
	values.  (PR#15454)

    o   Several functions did not handle zero-length vectors properly,
	including browseEnv(), format(), gl(), relist() and
	summary.data.frame().  (E.g., PR#15499)

    o   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.)

    o   Fake installs of packages with vignettes work again.

    o   Illegal characters in the input caused parse() (and thus
	source()) to segfault.  (PR#15518)

    o   The nonsensical use of nmax = 1 in duplicated() or unique() is
	now silently ignored.

    o   qcauchy(p, *) is now fully accurate even when p is very close
	to 1. (PR#15521)

    o   The validmu() and valideta() functions in the standard glm()
	families now also report non-finite values, rather than
	failing.

    o   Saved vignette results (in a .Rout.save file) were not being
	compared to the new ones during R CMD check.

    o   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)

    o   Improved handling of edge cases in parallel::splitindices().
	(PR#15552)

    o   HTML display of results from help.search() and ?? sometimes
	contained badly constructed links.

    o   c() and related functions such as unlist() converted raw
	vectors to invalid logical vectors. (PR#15535)

    o   (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.)

    o   The bmp() device was not recording res = NA correctly: it is
	now recorded as 72 ppi.

    o   Several potential problems with compiler-specific behaviour
	have been identified using the ‘Undefined Behaviour Sanitizer’
	in conjunction with the clang compiler.

    o   hcl() now honours NA inputs (previously they were mapped to
	black).

    o   Some translations in base packages were being looked up in the
	main catalog rather than that for the package.

    o   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.)

    o   rowsum() has more support for matrices and data frames with
	2^31 or more elements. (PR#15587)

    o   predict(<lm object>, interval = "confidence", scale =
	<something>) now works.  (PR#15564)

    o   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)

    o   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’.

    o   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).

    o   Using Sys.setlocale to set LC_NUMERIC to "C" (to restore the
	sane behavior) no longer gives a warning.

    o   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.)

    o   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)

    o   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.)

    o   getSrcref() did not work on method definitions if
	rematchDefinition() had been used.

    o   KalmanForecast(fast = FALSE) reported a (harmless) stack
	imbalance.

    o   The count of observations used by KalmanRun() did not take
	missing values into account.

    o   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.

    o   pbeta(x, a, b, log.p = TRUE) sometimes underflowed to zero for
	very small and very differently sized a, b.  (PR#15641)

    o   approx() and approxfun() now handle infinite values with the
	"constant" method. (PR#15655)

    o   stripchart() again respects reversed limits in xlim and ylim.
	(PR#15664)

                        Changes in version 3.0.2                        

NEW FEATURES

    o   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.

    o   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).

    o   The example() and tools::Rd2ex() functions now have parameters
	to allow them to ignore \dontrun markup in examples.
	(Suggested by Peter Solymos.)

    o   str(x) is considerably faster for very large lists, or factors
	with 100,000 levels, the latter as in PR#15337.

    o   col2rgb() now converts factors to character strings not integer
	codes (suggested by Bryan Hanson).

    o   tail(warnings()) now works, _via_ the new `[` method.

    o   There is now support for the LaTeX style file zi4.sty which has
	in some distributions replaced inconsolata.sty.

    o   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.

    o   The tools::getVignetteInfo() function has been added to give
	information about installed vignettes.

    o   New assertCondition(), etc. utilities in tools, useful for
	testing.

    o   Profiling now records non-inlined calls from byte-compiled code
	to BUILTIN functions.

    o   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.

    o   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.)

    o   seq() and seq.int() give more explicit error messages if called
	with invalid (e.g., NaN) inputs.

    o   When parse() finds a syntax error, it now makes partial parse
	information available up to the location of the error.
	(Request of Reijo Sund.)

    o   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)

    o   Code for the negative binomial distribution now treats the case
	size == 0 as a one-point distribution at zero.

    o   abbreviate() handles without warning non-ASCII input strings
	which require no abbreviation.

    o   read.dcf() no longer has a limit of 8191 bytes per line. (Wish
	of PR#15250.)

    o   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.

    o   Dataset npk has been copied from MASS to allow more tests to be
	run without recommended packages being installed.

    o   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)

    o   termplot() now has an argument transform.x to control the
	display of individual terms in the plot.  (PR#15329)

    o   format() now supports digits = 0, to display nsmall decimal
	places.

    o   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.

    o   Processing Sweave and Rd documents to PDF now renders backticks
	and single quotes better in several instances, including in
	\code and \samp expressions.

    o   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.

    o   tools::pkgVignettes() gains argument check; if set to TRUE, it
	will warn when it appears a vignette requests a non-existent
	vignette engine.

UTILITIES

    o   R CMD check --as-cran checks the line widths in usage and
	examples sections of the package Rd files.

    o   R CMD check --as-cran now implies --timings.

    o   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.)

    o   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).

    o   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.

    o   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.

    o   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).

    o   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.

    o   (Windows only.) Rscript -e requires a non-empty argument for
	consistency with Unix versions of R.  (Also Rterm -e and R -e.)

    o   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.

    o   R CMD check optionally checks for non-standard top-level files
	and directories (which are often mistakes): this is enabled for
	--as-cran.

    o   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.

    o   R CMD build makes more use of the build sub-directory of
	package sources, for example to record information about the
	vignettes.

    o   R CMD check analyses ::: calls.

INSTALLATION and INCLUDED SOFTWARE

    o   The macros used for the texinfo manuals have been changed to
	work better with the incompatible changes made in texinfo 5.x.

    o   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.

    o   The included version of PCRE has been updated to 8.33.

    o   The included version of zlib has been updated to 1.2.8, a
	bug-fix release.

    o   The included version of xz utils's liblzma has been updated to
	5.0.5.

    o   Since javareconf (see above) is used when R is installed, a
	stable link for JAVA_HOME can be supplied then.

    o   Configuring with --disable-byte-compilation will override the
	DESCRIPTION files of recommended packages, which typically
	require byte-compilation.

    o   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

    o   Installation is aborted immediately if a LinkingTo package is
	not installed.

    o   R CMD INSTALL has a new option --no-byte-compile which will
	override a ByteCompile field in the package's DESCRIPTION file.

    o   License BSD is deprecated: use BSD_3_clause or BSD_2_clause
	instead.
	
	License X11 is deprecated: use MIT or BSD_2_clause instead.

    o   Version requirements for LinkingTo packages are now recognized:
	they are checked at installation.  (Fields with version
	requirements were previously silently ignored.)

    o   The limit of 500 S3method entries in a NAMESPACE file has been
	removed.

    o   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

    o   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.

    o   eval and applyClosure are now protected against package code
	supplying an invalid rho.

DEPRECATED AND DEFUNCT

    o   The unused namespace argument to package.skeleton() is now
	formally deprecated and will be removed in R 3.1.0.

    o   plclust() is deprecated: use the plot() method for class
	"hclust" instead.

    o   Functions readNEWS() and checkNEWS() in package tools are
	deprecated (and they have not worked with current NEWS files
	for a long time).

DOCUMENTATION

    o   ‘An Introduction to R’ has a new chapter on using R as a
	scripting language including interacting with the OS.

BUG FIXES

    o   help.request() could not determine the current version of R on
	CRAN.  (PR#15241)

    o   On Windows, file.info() failed on root directories unless the
	path was terminated with an explicit ".".  (PR#15302)

    o   The regmatches<-() replacement function mishandled results
	coming from regexpr().  (PR#15311)

    o   The help for setClass() and representation() still suggested
	the deprecated argument representation=. (PR#15312)

    o   R CMD config failed in an installed build of R 3.0.1 (only)
	when a sub-architecture was used.  (Reported by Berwin
	Turlach.)

    o   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.)

    o   plot(hclust(), cex =) respects cex again (and possibly others
	similarly).  (Reported by Peter Langfelder.)

    o   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.

    o   qr.coef() and related functions did not properly coerce real
	vectors to complex when necessary.  (PR#15332)

    o   ftable(a) now fixes up empty dimnames such that the result is
	printable.

    o   package.skeleton() was not starting its search for function
	objects in the correct place if environment was supplied.
	(Reported by Karl Forner.)

    o   Parsing code was changing the length field of vectors and
	confusing the memory manager.  (PR#15345)

    o   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)

    o   vignette() and browseVignettes() did not display non-Sweave
	vignettes properly.

    o   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)

    o   svd() returned NULL rather than omitting components as
	documented.  (Found by Radford Neal; PR#15360)

    o   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.

    o   log(), signif() and round() now raise an error if a single
	named argument is not named x.  (PR#15361)

    o   deparse() now deparses raw vectors in a form that is
	syntactically correct. (PR#15369)

    o   The jpeg driver in Sweave created a JPEG file, but gave it a
	.png extension. (PR#15370)

    o   Deparsing of infix operators with named arguments is improved.
	(PR#15350)

    o   mget(), seq.int() and numericDeriv() did not duplicate
	arguments properly. (PR#15352, PR#15353, PR#15354)

    o   kmeans(algorithm = "Hartigan-Wong") now always stops iterating
	in the QTran stage. (PR#15364).

    o   read.dcf() re-allocated incorrectly and so could segfault when
	called on a file with lines of more than 100 bytes.

    o   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.)

    o   add1.glm() miscalculated F-statistics when df > 1. (Bill
	Dunlap, PR#15386).

    o   stem() now discards infinite inputs rather than hanging.
	(PR#15376)

    o   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)

    o   model.matrix() now works with very long LHS names (more than
	500 bytes).  (PR#15377)

    o   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)

    o   strptime() now handles %W fields with value 0. (PR#15915)

    o   R is now better protected against people trying to interact
	with the console in startup code.  (PR#15325)

    o   Subsetting 1D arrays often lost dimnames (PR#15301).

    o   Unary + on a logical vector did not coerce to integer, although
	unary - did.

    o   na.omit() and na.exclude() added a row to a zero-row data
	frame.  (PR#15399)

    o   All the (where necessary cut-down) vignettes are installed if R
	was configured with --without-recommended-packages.

    o   source() did not display filenames when reporting syntax
	errors.

    o   Syntax error reports misplaced the caret pointing out the bad
	token.

    o   (Windows only) Starting R with R (instead of Rterm or Rgui)
	would lose any zero-length strings from the command line
	arguments. (PR#15406)

    o   Errors in the encoding specified on the command line _via_
	--encoding=foo were not handled properly.  (PR#15405)

    o   If x is a symbol, is.vector(x, "name") now returns TRUE, since
	"name" and "symbol" should be synonyms.  (Reported by Hervé
	Pagès.)

    o   R CMD rtags works on platforms (such as OS X) with a
	XSI-conformant shell command echo. (PR#15231)

    o   is.unsorted(NA) returns false as documented (rather than NA).

    o   R CMD LINK did not know about sub-architectures.

    o   system() and system2() are better protected against users who
	misguidedly have spaces in the temporary directory path.

    o   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.)

    o   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.)

    o   lgamma(-x) is no longer NaN for very small x.

    o   (Windows) system2() now respects specifying stdout and stderr
	as files if called from Rgui. (PR#15393)

    o   Closing an x11() device whilst locator() or identify() is in
	progress no longer hangs R.  (PR#15253)

    o   list.dirs(full.names = FALSE) was not implemented.  (PR#15170)

    o   format() sometimes added unnecessary spaces.  (PR#15411)

    o   all.equal(check.names = FALSE) would ignore the request to
	ignore the names and would check them as attributes.

    o   The symbol set by tools::Rd2txt_options(itemBullet=) was not
	respected in some locales. (PR#15435)

    o   mcMap() was not exported by package parallel. (PR#15439)

    o   plot() for TukeyHSD objects did not balance dev.hold() and
	dev.flush() calls on multi-page plots.  (PR#15449)

                        Changes in version 3.0.1                        

NEW FEATURES

    o   chooseCRANmirror() and chooseBioCmirror() gain an ind argument
	(like setRepositories()).

    o   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).

    o   scan() now warns when end-of-file occurs within a quoted
	string.

    o   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.

    o   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.

    o   load() now has a verbose argument for debugging support, to
	print the names of objects just before loading them.

    o   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.

    o   pairs() gains a line.main option for title placement.

    o   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

    o   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

    o   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

    o   sys.source() did not report error locations when keep.source =
	TRUE.

    o   as.POSIXct.numeric was coercing origin using the tz argument
	and not "GMT" as documented (PR#14973).

    o   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).

    o   str(d) no longer gives an error when names(d) contain illegal
	multibyte strings (PR#15247).

    o   Profiling of built-in functions with line.profiling= TRUE did
	not record the line from which they were called.

    o   citation(pkg) dropped the header and footer specified in the
	CITATION file (PR#15257).

    o   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).

    o   cat() with sep a character vector of length greater than one
	and more than one argument was using separators inconsistently
	(PR#15261).

    o   On Windows in R 3.0.0, savePlot() failed because of an
	incorrect check on the argument count.

    o   unzip(list = TRUE) returned Names as a factor and not a
	character vector (as documented) for the internal method.
	(Noticed by Sean O'Riordain.)

    o   contourLines() now checks more comprehensively for conformance
	of its x, y and z arguments (it was used incorrectly in package
	R2G2).

    o   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.

    o   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)

    o   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).

    o   supsmu() could read/write outside its input vectors for very
	short inputs (seen in package rms for n = 4).

    o   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)

    o   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.)

    o   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)

    o   splinefun(method="monoH.FC") now produces a function with first
	argument named x and allows deriv=3, as documented. (PR#15273)

    o   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)

    o   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.)

    o   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)

    o   The trace() method for reference generator objects failed after
	those objects became function definitions.

    o   write.table() did not check that factors were constructed
	correctly, and so caused a segment fault when writing bad ones.
	(PR#15300)

    o   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 version 3.0.0                        

SIGNIFICANT USER-VISIBLE CHANGES

    o   Packages need to be (re-)installed under this version (3.0.0)
	of R.

    o   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.

    o   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.

    o   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

    o   identical() has a new argument, ignore.environment, used when
	comparing functions (with default FALSE as before).

    o   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.

    o   In layout(), the limits on the grid size have been raised
	(again).

    o   New simple provideDimnames() utility function.

    o   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.

    o   Matrix indexing of data frames by two-column numeric indices is
	now supported for replacement as well as extraction.

    o   setNames() now has a default for its object argument, useful
	for a character result.

    o   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.)

    o   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.

    o   install.packages() has a new argument quiet to reduce the
	amount of output shown.

    o   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.

    o   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.

    o   Sys.which() when used with inputs which would be unsafe in a
	shell (e.g., absolute paths containing spaces) now uses
	appropriate quoting.

    o   as.tclObj() has been extended to handle raw vectors.
	Previously, it only worked in the other direction.
	(Contributed by Charlie Friedemann, PR#14939.)

    o   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.

    o   A sort() method has been added for "bibentry" objects.

    o   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.

    o   scatter.smooth() now has an argument lpars to pass arguments to
	lines().

    o   pairs() has a new log argument, to allow some or all variables
	to be plotted on logarithmic scale.  (In part, wish of
	PR#14919.)

    o   split() gains a sep argument.

    o   termplot() does a better job when given a model with
	interactions (and no longer attempts to plot interaction
	terms).

    o   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.

    o   There is a new function rep_len() analogous to rep.int() for
	when speed is required (and names are not).

    o   The undocumented use rep(NULL, length.out = n) for n > 0 (which
	returns NULL) now gives a warning.

    o   demo() gains an encoding argument for those packages with
	non-ASCII demos: it defaults to the package encoding where
	there is one.

    o   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.

    o   Specifying both rate and scale to [dpqr]gamma is a warning (if
	they are essentially the same value) or an error.

    o   merge() works in more cases where the data frames include
	matrices.  (Wish of PR#14974.)

    o   optimize() and uniroot() no longer use a shared parameter
	object across calls.  (nlm(), nlminb() and optim() with
	numerical derivatives still do, as documented.)

    o   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.

    o   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.

    o   Functions rbinom(), rgeom(), rhyper(), rpois(), rnbinom(),
	rsignrank() and rwilcox() now return integer (not double)
	vectors.  This halves the storage requirements for large
	simulations.

    o   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.

    o   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’.

    o   backsolve() (and forwardsolve()) are now internal functions,
	for speed and support for large matrices.

    o   More matrix algebra functions (e.g., chol() and solve()) accept
	logical matrices (and coerce to numeric).

    o   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.

    o   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.

    o   The functions .C(), .Call(), .External() and .Fortran() now
	give an error (rather than a warning) if called with a named
	first argument.

    o   Sweave() by default now reports the locations in the source
	file(s) of each chunk.

    o   clearPushBack() is now a documented interface to a
	long-existing internal call.

    o   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.

    o   bibentry() gains some support for “incomplete” entries with a
	crossref field.

    o   gray() and gray.colors() finally allow alpha to be specified.

    o   monthplot() gains parameters to control the look of the
	reference lines.  (Suggestion of Ian McLeod.)

    o   Added support for new %~% relation (“is distributed as”) in
	plotmath.

    o   domain = NA is accepted by gettext() and ngettext(),
	analogously to stop() etc.

    o   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.)

    o   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.

    o   The default method of pairs() now allows text.panel = NULL and
	the use of <foo>.panel = NULL is now documented.

    o   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).

    o   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.

    o   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.)

    o   colors() gains an argument distinct.

    o   New demo(colors) and demo(hclColors), with utility functions.

    o   list.files() (aka dir()) gains a new optional argument no..
	which allows to exclude "." and ".." from listings.

    o   Multiple time series are also of class "matrix"; consequently,
	head(), e.g., is more useful.

    o   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.

    o   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.

    o   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.)

    o   .onDetach() is supported as an alternative to .Last.lib.
	Unlike .Last.lib, this does not need to be exported from the
	package's namespace.

    o   The srcfile argument to parse() may now be a character string,
	to be used in error messages.

    o   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.

    o   The utils::process.events() function has been added to trigger
	immediate event handling.

    o   Sys.which() now returns NA (not "") for NA inputs (related to
	PR#15147).

    o   The print() method for class "htest" gives fewer trailing
	spaces (wish of PR#15124).
	
	Also print output from HoltWinters(), nls() and others.

    o   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.

    o   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.

    o   mget() now has a default for envir (the frame from which it is
	called), for consistency with get() and assign().

    o   close() now returns an integer status where available,
	invisibly. (Wish of PR#15088.)

    o   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.

    o   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.

    o   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).

    o   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.

    o   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.

    o   chol(pivot = TRUE) now defaults to LAPACK, not LINPACK.

    o   The parse() function has a new parameter keep.source, which
	defaults to options("keep.source").

    o   Profiling _via_ Rprof() now optionally records information at
	the statement level, not just the function level.

    o   The Rprof() function now quotes function names in in its output
	file on Windows, to be consistent with the quoting in Unix.

    o   Profiling _via_ Rprof() now optionally records information
	about time spent in GC.

    o   The HTML help page for a package now displays non-vignette
	documentation files in a more accessible format.

    o   To support options(stringsAsFactors = FALSE), model.frame(),
	model.matrix() and replications() now automatically convert
	character vectors to factors without a warning.

    o   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.)

    o   Deparsing involving calls to anonymous functions has been made
	closer to reversible by the addition of extra parentheses.

    o   The function utils::packageName() has been added as a
	lightweight version of methods::getPackageName().

    o   find.package(lib.loc = NULL) now treats loaded namespaces
	preferentially in the same way as attached packages have been
	for a long time.

    o   In Windows, the Change Directory dialog now defaults to the
	current working directory, rather than to the last directory
	chosen in that dialog.

    o   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.

    o   New check_packages_in_dir() function in package tools for
	conveniently checking source packages along with their reverse
	dependencies.

    o   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.

    o   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.

    o   (‘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.

    o   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.

    o   set.seed(NULL) re-initializes .Random.seed as done at the
	beginning of the session if not already set.  (Suggestion of
	Bill Dunlap.)

    o   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).

    o   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

    o   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.)

    o   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.

    o   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.

    o   Most aspects of indexing are available.  Generally
	double-valued indices can be used to access elements beyond
	2^31 - 1.

    o   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()).

    o   dist() can produce dissimilarity objects for more than 65536
	rows (but for example hclust() cannot process such objects).

    o   serialize() to a raw vector is unlimited in size (except by
	resources).

    o   The C-level function R_alloc can now allocate 2^35 or more
	bytes.

    o   agrep() and grep() will return double vectors of indices for
	long vector inputs.

    o   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.

    o   .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).

    o   Most of the methods for sort() work for long vectors.
	
	rank(), sort.list() and order() support long vectors (slowly
	except for radix sorting).

    o   sample() can do uniform sampling from a long vector.

PERFORMANCE IMPROVEMENTS

    o   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.

    o   Many .Call() calls in package base have been migrated to
	.Internal() calls.

    o   solve() makes fewer copies, especially when b is a vector
	rather than a matrix.

    o   eigen() makes fewer copies if the input has dimnames.

    o   Most of the linear algebra functions make fewer copies when the
	input(s) are not double (e.g., integer or logical).

    o   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.

    o   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

    o   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.

    o   Packages can specify in their DESCRIPTION file a line like
	
	     Biarch: yes
	
	to be installed on Windows with --force-biarch.

    o   Package vignettes can now be processed by other engines besides
	Sweave; see ‘Writing R Extensions’ and the
	tools::vignetteEngine help topic for details.

    o   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.

    o   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.

    o   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

    o   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.

    o   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.

    o   R CMD Sweave gains a --compact option to control possibly
	reducing the size of the PDF file it creates when --pdf is
	given.

    o   R CMD build now omits Eclipse's .metadata directories, and R
	CMD check warns if it finds them.

    o   R CMD check now does some checks on functions defined within
	reference classes, including of .Call() etc calls.

    o   R CMD check --as-cran notes assignments to the global
	environment, calls to data() which load into the global
	environment, and calls to attach().

    o   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.

    o   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.

    o   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.

    o   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

    o   The ENCODING argument to .C() is defunct.  Use iconv() instead.

    o   The .Internal(eval.with.vis) non-API function has been removed.

    o   Support for the converters for use with .C() has been removed,
	including the oft misused non-API header R_ext/RConverters.h.

    o   The previously deprecated uses of array() with a 0-length dim
	argument and tapply() with a 0-length INDEX list are now
	errors.

    o   Translation packages are defunct.

    o   Calling rep() or rep.int() on a pairlist or other non-vector
	object is now an error.

    o   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).

    o   The ‘internal’ graphics device invoked by
	.Call("R_GD_nullDevice", package = "grDevices") has been
	removed: use pdf(file = NULL) instead.

    o   The .Fortran() entry point "dqrls" which has not been used by R
	since version 2.15.1 is no longer available.

    o   Functions traceOn() and traceOff() in package methods are now
	defunct.

    o   Function CRAN.packages() is finally defunct.

    o   Use of col2rgb(0) is defunct: use par("bg") or NA instead.

    o   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).

    o   The unused dataPath argument to attachNamespace() has been
	removed.

    o   grid.prompt() has been removed: use devAskNewPage() instead.

    o   The long-deprecated intensities component is no longer returned
	by hist().

    o   mean() for data frames and sd() for data frames and matrices
	are defunct.

    o   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.

    o   The keep.source argument to library() and require() is defunct.
	This option needs to be set at install time.

    o   Documentation for real(), as.real() and is.real() has been
	moved to ‘defunct’ and the functions removed.

    o   The maxRasters argument of pdf() (unused since R 2.14.0) has
	been removed.

    o   The unused fontsmooth argument has been removed from the
	quartz() device.

    o   All the (non-API) EISPACK entry points in R have been removed.

    o   chol(pivot = TRUE, LINPACK = TRUE) is deprecated.

    o   The long-deprecated use of \synopsis in the Usage section of
	.Rd files will be removed in R 3.1.0.

    o   .find.package() and .path.package() are deprecated: only the
	public versions without the dot have ever been in the API.

    o   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

    o   The C code underlying base graphics has been migrated to the
	graphics package (and hence no longer uses .Internal() calls).

    o   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).

    o   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

    o   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.

    o   mcparallel() has a new argument mc.affinity which attempts to
	set the affinity of the child process according to the
	specification contained therein.

    o   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

    o   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.

    o   Passing NULL to .C() is now an error.

    o   .C() and .Fortran() now warn if "single" arguments are used
	with DUP = FALSE, as changes to such arguments are not returned
	to the caller.

    o   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.

    o   A few recently added C entry points were missing the remapping
	to Rf_, notably [dpq]nbinom_mu.

    o   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().

    o   PACKAGE = "" is now an error in .C() etc calls: it was always
	contrary to the documentation.

    o   Entry point rcont2 has been migrated to package stats and so is
	no longer available.

    o   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.

    o   The entry points rgb2hsv and hsv2rgb have been migrated to
	package grDevices and so are no longer available.

    o   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.

    o   The REPROTECT macro now checks that the protect index is valid.

    o   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.

    o   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).

    o   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

    o   The management of translations has been converted to R code:
	see ?tools::update_pkg_po.

    o   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.

    o   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.)

    o   The translations form a separate group in the Windows
	installer, so can be omitted if desired.

    o   The markup for many messages has been changed to make them
	easier to translate, incorporating suggestions from Łukasz
	Daniel.

INSTALLATION

    o   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.

    o   make pdf and make install-pdf now make and install the full
	reference index (including all base and recommended packages).

    o   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.

    o   R help pages and manuals have no ISBNs because ISBN rules no
	longer allow constantly changing content to be assigned an
	ISBN.

    o   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.

    o   Any custom settings for Java configuration are recorded in file
	etc/javaconf for subsequent use by R CMD javareconf.

    o   There is now support for makeinfo version 5.0 (which requires a
	slightly different .texi syntax).

    o   The minimum versions for --use-system-zlib and
	--use-system-pcre are now tested as 1.2.5 and 8.10
	respectively.

    o   On Windows, the stack size is reduced to 16MB on 32-bit
	systems: misguided users were launching many threads without
	controlling the stack size.

    o   configure no longer looks for file ~/.Rconfig: ~/.R/config has
	long been preferred.

BUG FIXES

    o   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)

    o   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).

    o   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.)

    o   solve(A, b) for a vector b gave the answer names from
	colnames(A) for LINPACK = TRUE but not in the default case.

    o   La.svd() accepts logical matrices (as documented, and as svd()
	did).

    o   legend() now accepts negative pch values, in the same way
	points() long has.

    o   Parse errors when installing files now correctly display the
	name of the file containing the bad code.

    o   In Windows, tcltk windows were not always properly constructed.
	(PR#15150)

    o   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.

    o   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.

    o   setHook(hookname, value, action="replace") set the hook to be
	the value, rather than a list containing the value as
	documented. (PR#15167)

    o   If a package used a NEWS.Rd file, the main HTML package index
	page did not link to it.  (Reported by Dirk Eddelbuettel.)

    o   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.

    o   split(x, f) now recycles classed objects x in the same way as
	vectors.  (Reported by Martin Morgan.)

    o   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)

    o   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)

    o   The workspace size for the predict() method for loess() could
	exceed the maximum integer size.  (Reported by Hiroyuki
	Kawakatsu.)

    o   ftable(x, row.vars, col.vars) now also works when the *.vars
	arguments are (integer or character vectors) of length zero.

    o   Calling cat() on a malformed UTF-8 string could cause the
	Windows GUI to lock up. (PR#15227)

    o   removeClass(cc) gave "node stack overflow" for some class
	definitions containing "array" or "matrix".
> p_news(lattice)
Version: 0.20
Text: The primary goal of the 0.20 series is to further improve
        documentation, building up to an eventual 1.0 release.
        Specific major changes are given below.

Version: 0.20
Text: Use dev.hold()/dev.flush() introduced in R 2.14.0 for smoother
        displays and transition.

Version: 0.20
Text: It is now easier to use raster images in levelplot() by
        specifying top-level argument 'useRaster=TRUE'.

Version: 0.20
Text: 'pos' can now be a vector in ltext(), just as it can in text().

Version: 0.20
Text: Explicit components in 'colorkey' (for levelplot()) to specify
        graphical parameters of boundary and tick marks/labels.

Version: 0.20
Text: "spline" added as a possibly 'type' in panel.xyplot(), following
        a suggestion from Patrick Breheny.

Version: 0.20
Text: Support for traditional graphics-like log scale annotation, using
        'scales=list(equispaced.log = FALSE)'.

Version: 0.20
Text: parallel() deprecated in favour of parallelplot(), to avoid
        potential confusion with the parallel package.

Version: 0.20
Text: The internal lattice.status list is cleaned up whenever new page
        starts.  This should fix lattice bug #1629.

Version: 0.20
Text: There is a new option to provide a custom rule for computing
        default breakpoints in histogram(). See ?histogram for details.

Version: 0.20
Text: New datasets USMortality and USRegionalMortality.

Version: 0.19
Text: The primary goal of the 0.19 series is to improve documentation
        and fix some obscure but long-standing bugs, building up to an
        eventual 1.0 release.  Specific major changes are given below.

Version: 0.19
Text: Added new arguments 'grid' and 'abline' in panel.xyplot().

Version: 0.19
Text: Added a "panel.background" setting.

Version: 0.19
Text: Restructured storage of plot-specific information, fixing bug
        reported in
        https://stat.ethz.ch/pipermail/r-help/2007-October/143567.html

Version: 0.19
Text: Added a CITATION file.

Version: 0.19
Text: Added a new "axis.text" setting.

Version: 0.19
Text: Added the option to scale data inside panel.3dscatter() and
        panel.3dwire() rather than assuming ther are already scaled.
        This may be helpful for use in user-written panel functions,
        with (additional) data specified in the original scale.

Version: 0.19
Text: 'varnames' can now be expressions in splom()/parallel().

Version: 0.19
Text: Added support for 'xlab.top' and 'ylab.right' arguments.

Version: 0.19
Text: Improved axis labelling in splom(), including support for
        date-time data.

Version: 0.19
Text: panel.pairs() now passes arguments i and j to (sub)panel and
        diag.panel functions.

Version: 0.19
Text: Default prepanel functions are now user-settable through
        lattice.options()

Version: 0.19
Text: par.[main|sub|xlab|ylab].text parameter settings are more
        powerful.

Version: 0.19
Text: Added support for 'just' component in draw.key() to allow
        justification of legend placement.

Version: 0.19
Text: Graphical arguments in panel.superpose can now be lists.

Version: 0.19
Text: Added support for raster colorkeys.

Version: 0.19
Text: Added new 'height' component for keys.

Version: 0.19
Text: Improved vectorization of graphical parameters in panel.bwplot.

Version: 0.19
Text: Expanded trellis.grobname() and used it to provide a name for all
        grobs.

Version: 0.19
Text: New panel.spline() function. bug fixes

Version: 0.19
Text: More realistic check for equispaced grid in
        panel.levelplot.raster().

Version: 0.19
Text: Improved partial matching of component names in 'key' and
        'scales'.

Version: 0.19
Text: xyplot.ts() now allows graphical parameters to be given as
        vectors (inside a list) for each series. Passes lists to
        panel.superpose.

Version: 0.19
Text: panel.axis() now does NOT draw tick marks if 'ticks = FALSE'.

Version: 0.18
Text: Hosting of the upstream sources has moved to R-forge.  This
        allows, among other things, the use of the R-forge issue
        tracker.

Version: 0.18
Text: New xyplot.ts method, merging versions previously available in
        latticeExtra and zoo (thanks to the efforts of Felix Andrews)

Version: 0.18
Text: An argument 'group.value', containing the level of the group, is
        now passed by panel.superpose to the 'panel.groups' function

Version: 0.18
Text: Specifying 'auto.key' as a list now produces a legend even in the
        absence of 'groups', provided a 'text' component has been
        included

Version: 0.18
Text: The 'layout' argument now accepts NA for number of columns or
        rows.

Version: 0.18
Text: Scale limits 'xlim' & 'ylim' can have one NA to fix only one
        side.

Version: 0.18
Text: Date and POSIXt scales now use new methods to calculate axis
        ticks, and now respond to the 'tick.number' component of
        'scales'.

Version: 0.18
Text: 'panel.qqmath' gains an argument 'tails.n' for exact data on
        tails.

Version: 0.17
Category: new features
Text: New function simpleTheme() for creating nested lists without
        specifying the nesting structure (which is guessed)

Version: 0.17
Category: new features
Text: Support for lattice.option(print.function) which is the function
        actually used when print.trellis() is called

Version: 0.17
Category: new features
Text: New argument 'box.width' wherever 'box.ratio' is available (e.g.,
        panel.bwplot, panel.barchart, etc.), to specify absolute
        thickness (of boxes, bars, etc.)

Version: 0.17
Category: new features
Text: New panel.refline() function, same as panel.abline(), but with
        default parameters from the "reference.line" settings.

Version: 0.17
Category: new features
Text: parallel() has a new 'horizontal.axis' argument; when FALSE, the
        axes are vertical and are stacked side by side.

Version: 0.17
Category: new features
Text: densityplot() now supports weights.

Version: 0.17
Category: new features
Text: dotplot.table() etc. allow change of orientation
        (horizontal=FALSE).

Version: 0.17
Category: new features
Text: New function panel.identify.cloud() to interactively label
        three-dimensional scatterplots.

Version: 0.17
Category: new features
Text: Added support for notches in panel.bwplot (based on patch from
        Mike Kay)

Version: 0.17
Category: new features
Text: New panel function panel.smoothScatter (relocated from
        Bioconductor package geneplotter)

Version: 0.17
Category: new features
Text: Added German translations (contributed by Chris Leick)

Version: 0.17
Category: new features
Text: reordered documentation to make PDF manual more readable

Version: 0.17
Category: bug fixes
Text: Make translations available (they were never actually installed
        before)

Version: 0.16
Category: changes in behaviour
Text: 'x' in dotplot(~x, data) etc now gets names(x) set to
        rownames(data).  Update: this feature has now been removed, as
        the resulting behaviour is undesirable for bwplot()

Version: 0.16
Category: changes in behaviour
Text: the 'call' component of a "trellis" object is set to a better
        value than before (at least for the methods in lattice).  One
        consequence is that update.default() now works for cases in
        which update.trellis() doesn't (i.e. those where data packets
        need to change)

Version: 0.16
Category: changes in behaviour
Text: barchart.table now has an 'horizontal' argument

Version: 0.16
Category: changes in behaviour
Text: levelplot.matrix() now allows specification of column labels or
        positions through arguments 'row.values' and 'column.values'

Version: 0.16
Category: changes in behaviour
Text: width calculation for rectangles changed for levelplot() when
        'x', 'y' are factors; they are set to 1, rather than trying to
        accomodate unequally spaced 'x' and 'y' values.  This is
        important when there are empty levels

Version: 0.16
Category: changes in behaviour
Text: dimnames() of a "trellis" object is now settable (this allows
        changing names and levels of conditioning variables)

Version: 0.16
Category: changes in behaviour
Text: labels ('xlab', 'main', etc) can now be character vectors.  In
        their list form, they support more graphical parameters as well
        as finer positioning (justification, rotation, etc.)

Version: 0.16
Category: changes in behaviour
Text: 'strip.left' gets called with 'horizontal = FALSE', so
        'strip.left = strip.default' now works as expected

Version: 0.15
Category: new features
Text: Default panel functions are now settable options

Version: 0.15
Category: new features
Text: Limits of a parallel coordinates plot can now be controlled via
        functions

Version: 0.15
Category: new features
Text: New 'panel.aspect' argument for cloud and wireframe

Version: 0.15
Category: new features
Text: Better support for factors in cloud and wireframe

Version: 0.15
Category: new features
Text: More flexible placement of legends with x, y and corner.  In
        particular, corner can have fractional values, and (x, y) can
        refer to a position w.r.t. two potential bounding boxes
        depending on lattice.getOption("legend.bbox") ('full', meaning
        full plot region, or 'panel', meaning the subregion containing
        panels and strips. The default is 'panel', which is a change in
        behaiour)

Version: 0.15
Category: new features
Text: trellis.focus() now allows choosing panels interactively.

Version: 0.15
Category: new features
Text: New interaction functions panel.identify.qqmath() and
        panel.brush.splom()

Version: 0.15
Category: new features
Text: There is now an error handling mechanism for panel functions.  By
        default, errors in panel functions no longer stop execution.
        See ?print.trellis for details.

Version: 0.15
Category: changes in behaviour
Text: non-numeric data no longer cause warnings in bwplot

Version: 0.15
Category: changes in behaviour
Text: the default padding between components has been changed to 0.5
        "chars"

Version: 0.14
Category: new features
Text: support for custom function that determines packet-panel
        correspondence.  This could be used to fill panels vertically
        rather than horizontally, or to split layout over two or more
        pages, etc. (see ?packet.panel.default)

Version: 0.14
Category: new features
Text: support for customizable functions for axis drawing and
        tick/label determination

Version: 0.14
Category: new features
Text: various accessor functions available to panel, strip, axis (etc)
        functions, e.g. panel.number() and packet.number()

Version: 0.14
Category: new features
Text: arguments to lattice.options and print.trellis arguments can now
        be attached to trellis objects (as parameter settings already
        could) through high level arguments 'lattice.options' and
        'plot.args'

Version: 0.14
Category: new features
Text: llines, lpoints and ltext are now generic functions

Version: 0.14
Category: new features
Text: The high level 'key' argument can now have an argument called
        'reverse.rows' to reverse the order of rows.  This applies to
        'draw.key', 'auto.key' and 'simpleKey' as well.

Version: 0.14
Category: new features
Text: extended interpretation of 'breaks' in histogram()

Version: 0.14
Category: new features
Text: matrix methods for 'splom' and 'parallel' (whose absence was an
        oversight)

Version: 0.14
Category: new features
Text: support of 'alpha' argument in labels and legends, which were
        previously missing for no good reason

Version: 0.14
Category: new features
Text: panel.grid() now allows 'h' and 'v' to have negative values other
        than -1, in which case '-h' and '-v' will be used as the 'n'
        argument to pretty() when determining line locations

Version: 0.14
Category: changes in behaviour
Text: panel function is no longer given arguments panel.number and
        packet.number (see above for alternatives)

Version: 0.14
Category: changes in behaviour
Text: panel.identify() now has a more useful return value (selected
        subscripts)

Version: 0.14
Category: changes in behaviour
Text: trellis.panelArgs() without any arguments should return
        meaningful results while a "trellis" object is being printed,
        and thus should be usable inside panel or axis functions.

Version: 0.14
Category: changes in behaviour
Text: For formulae of the form y1 + y2 ~ x1 + x2 + x3, the order of
        levels of the artificially created grouping variable is now
        more 'intuitive'

Version: 0.13
Category: new features
Text: high level generics like 'xyplot' now have both 'x' and 'data' as
        arguments.  The only implication for S3 methods is that they
        will have to include the 'data' argument even if they are
        unused (as they should be when 'x' is not a formula).  The
        reason for doing this is to encourage S4 methods using multiple
        dispatch where 'x' is a formula and 'data' is some other data
        source.

Version: 0.13
Category: new features
Text: R messages are now translatable.

Version: 0.13
Category: new features
Text: French translations courtesy of Philippe Grosjean.

Version: 0.13
Category: new features
Text: instead of ignoring it as before, 'panel.xyplot' and
        'panel.densityplot' now deal with a 'groups' argument
        appropriately by calling 'panel.superpose'.  Consequently, the
        default of 'panel' in 'xyplot' etc does not need to be
        conditional on 'groups'.

Version: 0.13
Category: new features
Text: added 'lineheight' as a graphical parameter where appropriate.

Version: 0.13
Category: new features
Text: added a 'grid.pars' setting for arbitrary grid parameters to be
        set initially via gpar().

Version: 0.13
Category: new features
Text: For a shingle 'x', 'as.character(levels(x))' creates meaningful
        labels.

Version: 0.13
Category: new features
Text: Shingle levels can now be printed by strip.default.

Version: 0.13
Category: new features
Text: The strip function, like the panel function, is now passed
        arguments 'packet.number' and 'panel.number' (although the
        default strip function makes no use of it).

Version: 0.13
Category: new features
Text: 'panel.superpose' has new argument to make it bahave like in
        S-PLUS (interpretation of 'type').  This makes
        'panel.superpose.2' unnecessary, although it's still available.

Version: 0.13
Category: new features
Text: Added wrappers lrect, lpolygon (and panel.rect, panel.polygon)

Version: 0.13
Category: changes in behaviour
Text: evaluation scope: standard functions with a formula based
        interface ('lm' etc) look for variables in the formula (that
        are not found in 'data') in the environment of the formula.
        This was done inconsistently for lattice functions, which has
        been fixed.

Version: 0.13
Category: changes in behaviour
Text: 'summary.trellis' is now more informative

Version: 0.13
Category: changes in behaviour
Text: calls with explicit 'formula=' no longer work (used to give a
        warning before)

Version: 0.13
Category: changes in behaviour
Text: The 'bar.fill' and 'superpose.fill' settings have been replaced
        with 'plot.polygon' and 'superpose.polygon' respectively, which
        are more consistent with other names.

Version: 0.13
Category: changes in behaviour
Text: Default of 'data' changed from 'parent.frame()' to NULL.  This
        has to do with reasonable non-standard evaluation rules, and
        probably needs some more thought.

Version: 0.13
Category: changes in behaviour
Text: Default Trellis settings (a.k.a. theme) changed.  See
        ?trellis.device for details

Version: 0.13
Category: bug fixes
Text: NA-handling

Version: 0.13
Category: bug fixes
Text: ltext now supports more 'adj' values

Version: 0.13
Category: bug fixes
Text: scales$y$alternating now counts row numbers from top if as.table
        = TRUE

Version: 0.13
Category: bug fixes
Text: miscellaneous improvements in strip.default

Version: 0.13
Category: Todo (planned
Text: change panel.qq so that most work gets done there

Version: 0.12
Category: improvements
Text: panel.bwplot has a new 'stats' argument, which is a function used
        to calculate the statistics in the box and whisker plot.
        Defaults to boxplot.stats, which was the hard-coded value
        earlier.

Version: 0.12
Category: improvements
Text: panel.bwplot has been re-implemented.  Faster, avoids direct grid
        calls

Version: 0.12
Category: improvements
Text: panel.densityplot now allows more flexible specifications of
        'plot.points', specifically, points can be jittered (the new
        default) or indicated by a `rug'.

Version: 0.12
Category: improvements
Text: (more) changes in NA-handling.

Version: 0.12
Category: improvements
Text: panel.superpose handles type='g' itself so that the grid doesn't
        get repeated for every group.

Version: 0.12
Category: new features
Text: All high level functions are now generic.  This change should be
        mostly transparent, but there may be some unforeseen
        side-effects. S3 generics and methods are used (this may change
        at some point, but not in the near future).  In particular,
        usage where the first argument is not actually a formula has
        now been formalized and is handled via method dispatch rather
        than the clumsy hacks in place earlier.

Version: 0.12
Category: new features
Text: The first argument of high level lattice functions has been
        renamed from 'formula' to 'x'.  This is related to the fact
        that these functions are now generic, and is intended to avoid
        long-term confusion.  The first argument is usually not named,
        so this should not cause many problems.  If the name 'formula'
        is explicitly supplied, it will be used with a warning (as long
        as there is no argument named 'x') for now, but not in future
        versions of lattice.

Version: 0.12
Category: new features
Text: aspect='xy' is now allowed when relation='free'

Version: 0.12
Category: new features
Text: A new function make.groups (present in S-PLUS) has been added.

Version: 0.12
Category: new features
Text: there's now panel.rect and lrect (similar to the base function
        rect)

Version: 0.12
Category: new features
Text: print.trellis has a 'draw.in' argument that can be used to
        specify a grid viewport to draw the plot in.

Version: 0.12
Category: new features
Text: strips can now be drawn on the left (as well as top) of a panel.
        This is useful for short wide panels, e.g. time series.

Version: 0.12
Category: new features
Text: 'Date' objects are recognized and axis labels formatted
        accordingly (not heavily tested)

Version: 0.12
Category: changes in behaviour
Text: qqmath has been considerably revamped, primarily to allow grouped
        displays (the older implementation would not have allowed that
        even with a custom panel function).  In particular, the
        (pre)panel function(s) now get the raw data as opposed to
        already computed quantiles. Some old code may stop working.

Version: 0.12
Category: changes in behaviour
Text: as a consequence of the above, panel.qqmath, panel.qqmathline etc
        have been rewritten and have different argument lists

Version: 0.12
Category: changes in behaviour
Text: tmd has been rewritten (mostly to deal with qqmath objects), but
        this shouldn't be user-visible.

Version: 0.12
Category: changes in behaviour
Text: densityplot defaults to showing points with random jitter.

Version: 0.12
Category: changes in behaviour
Text: arguments panel.number and panel.counter, passed to panel
        functions that have those (or the ...) argument(s) have been
        renamed to 'packet.number' and 'panel.number', which are more
        in line with standard Trellis jargon.

Version: 0.12
Category: bug fixes
Text: identification of when 'type' should default to "density" was
        buggy (inapprpriate rounding)

Version: 0.11
Category: improvements
Text: panel.superpose.2 (which replicates behaviour of panel.superpose
        in S-PLUS) revamped, with new features to boot.

Version: 0.11
Category: improvements
Text: panel.identify improved

Version: 0.11
Category: improvements
Text: larrows improved, slightly different features.

Version: 0.11
Category: improvements
Text: [xyz]lab in cloud / wireframe can now be grobs, and honors a
        'rot' component for rotation (e.g., zlab = list(rot = 90))

Version: 0.11
Category: new features
Text: some finer controls added to parallel (actually panel.parallel)

Version: 0.11
Category: new features
Text: trellis.last.object(...) now behaves like
        update(trellis.last.object(), ...))

Version: 0.11
Category: new features
Text: "trellis" objects now have a plot method that's essentially an
        alias to the print method

Version: 0.11
Category: new features
Text: new function 'current.panel.limits' to retrieve native scales of
        current panel (only in later versions)

Version: 0.11
Category: changes in behaviour
Text: behaviour of auto.key = TRUE now function specific

Version: 0.11
Category: changes in behaviour
Text: auto.key list now allows a 'text' component

Version: 0.11
Category: changes in behaviour
Text: defaults of several standard arguments now taken from
        lattice.options()

Version: 0.11
Category: changes in behaviour
Text: type='g' now calls panel.grid(h = -1, v = -1) rather thanjust
        panel.grid()

Version: 0.11
Category: changes in behaviour
Text: NA-handling (may have undesirable effects)

Version: 0.11
Category: bug fixes
Text: several minor fixes

Version: 0.10
Category: improvements
Text: relation="free" and "sliced" now work for factors (at least, as
        well as can be expected)

Version: 0.10
Category: improvements
Text: the code that constructs the layout of a lattice plot (in the
        print method for trellis objects) has been completely
        rewritten.  This is mostly transparent to the user, but as a
        side effect, it is now possible to control the details of the
        layout (things like the amount of padding around the plot, the
        gap between tick marks and labels) via the trellis settings
        "layout.heights" and "layout.widths".

Version: 0.10
Category: improvements
Text: col.regions and colorkey in levelplot and wireframe now honour
        settings in effect when the object is printed, and not when the
        object was created.

Version: 0.10
Category: improvements
Text: xlab, ylab, main and sub can now be grobs

Version: 0.10
Category: improvements
Text: datasets get separate documentation, contributed by Kevin Wright

Version: 0.10
Category: new features
Text: lattice.options(), similar to options(), to control various
        aspects of lattice plots.  This is mostly for easier code
        maintainance, but can be useful for the user too.

Version: 0.10
Category: new features
Text: API now supports alpha-transparency (actual support is device
        dependent) where appropriate (some cases might have been
        missed, and reports of omissions would be appreciated).

Version: 0.10
Category: new features
Text: API for interacting with and enhancing Trellis plots AFTER they
        are drawn, based on grid functions seekViewport, grid.locator,
        etc. See ?trellis.focus

Version: 0.10
Category: new features
Text: aspect="iso" for `isometric' x- and y-axes.

Version: 0.10
Category: new features
Text: new 'default.scales' argument to high level functions, useful
        when writing wrappers

Version: 0.10
Category: new features
Text: convenience function 'strip.custom' to create strip functions
        from strip.default just by overriding one or more arguments

Version: 0.10
Category: new features
Text: type="H" in lplot.xy (for horizontal line).  New argument
        'horizontal' for panel.xyplot, which affects what happens for
        various 'type'-s.

Version: 0.10
Category: new features
Text: type="g" in panel.xyplot, which draws a reference grid

Version: 0.10
Category: new features
Text: the print method now (optionally) saves the (last) object printed
        in a non-visible environment.  This allows retrieval of the
        last printed object for 'update'-ing, and more importantly, to
        retrieve panel specific data for use while interacting with and
        enhancing plots after they are printed

Version: 0.10
Category: new features
Text: a summary method for trellis objects (currently pretty basic)

Version: 0.10
Category: changes in behaviour
Text: lset has been deprecated, and trellis.par.set has been enhanced
        with equivalent usage

Version: 0.10
Category: changes in behaviour
Text: the strip function now gets the whole strip area to work with,
        and is responsible for using it appropriately.  strip.default
        has been updated accordingly

Version: 0.10
Category: changes in behaviour
Text: choice of color for grouped barcharts now taken from a new
        setting parameter 'superpose.fill' and not 'regions' as
        previously

Version: 0.10
Category: changes in behaviour
Text: arguments to panel.levelplot has changed (this is related to how
        default colors are obtained, as described above).

Version: 0.10
Category: bug fixes
Text: axes now drawn on last panel even if it doesn't fall on the
        border of the layout

Version: 0.10
Category: bug fixes
Text: many other miscellaneous fixes, see SvnLog for some details

Version: 0.9
Category: improvements
Text: Axis labelling code has been rewritten to internally use S3
        method dispatch, with (unexported) methods for numeric
        (default), character (for factors), POSIXct and date. More
        methods can be considered on request.  reversed limits are now
        allowed.

Version: 0.9
Category: improvements
Text: contourplot can now handle missing rows in the data frame
        (equivalent to NA's in z). contourplot now uses contourLines().

Version: 0.9
Category: improvements
Text: cloud and wireframe now use better 3-D projection calculations,
        and are generally much better than before.  wireframe is much
        faster, and has a better shading algorithm. It can also handle
        NA's and missing rows.

Version: 0.9
Category: improvements
Text: splom (specifically panel.pairs) has more functionality,
        including the option of using different panel functions below
        and above the diagonal, user defined diagonal panels, and a
        table-like layout (similar to pairs)

Version: 0.9
Category: improvements
Text: font specifications now allow for fontface and fontfamily

Version: 0.9
Category: improvements
Text: much improved update method for trellis objects

Version: 0.9
Category: improvements
Text: setting auto.key = TRUE now computes key at printing time,
        honouring any changes in trellis settings

Version: 0.9
Category: new features
Text: arbitrary reordering of conditioning variables, as well as of
        levels within a conditioning variable. This works in the update
        method (as well as high-level plots), making it easy to examine
        parts of a multipanel trellis display and view it in different
        conditioning orders.

Version: 0.9
Category: new features
Text: extended key functionality (via the legend argument) that allows
        multiple legends and the use of arbitrary grid objects as keys

Version: 0.9
Category: new features
Text: option to NOT drop unused factor levels when subsetting, by
        setting drop.unused.levels = FALSE or drop.unused.levels =
        list(cond = FALSE, data = FALSE) in high-level functions like
        xyplot.

Version: 0.9
Category: new features
Text: Ability to attach settings to a trellis object (rather than
        changing the global settings), via argument par.settings in
        high level calls.

Version: 0.9
Category: new features
Text: Wireframe can now draw parametrized 3-D surfaces like spheres
        (generally of the form f(u,v) = (x(u,v), y(u,v), z(u,v)), for
        (u,v) in the square [0,1] x [0,1]).

Version: 0.9
Category: new features
Text: Functionality similar to locator() (possible due to recently
        added features of grid). All panels should have predictable
        viewport names, which can be used in seekViewport() to grab a
        particular viewport. grid.locator() can subsequently be used to
        locate points in the native coordinate system of that panel.

Version: 0.9
Category: changes in behaviour
Text: allow.multiple now defaults to TRUE (whenever it makes sense),
        since '+' in a formula is interpreted differently than S-PLUS
        anyway. As in model formulae, I(x+y) works as expected.

Version: 0.9
Category: changes in behaviour
Text: default behaviour of qq and qqmath changed (from S-PLUS
        behaviour) to match corresponding base functions qqplot and
        qqnorm

Version: 0.9
Category: bug fixes
Text: Fixed important bug concerning interaction of subscripts and
        subsets

Version: 0.9
Category: bug fixes
Text: lots of other fixes, mostly obscure

Version: 0.8
Text: Major change is the addition of a NAMESPACE. grid is now not
        'require()-d', but imported only. To use grid functions
        directly in lattice calls (which is a very reasonable thing to
        do), one needs to explicitly call library(grid).

Version: 0.8
Text: contourplot() has improved when data has NA's. Still doesn't work
        when the NA rows are completely omitted (in other words, the
        full "matrix" has to be specified, even the entries with NA).

Version: 0.8
Text: Clipping can now be turned off in panels and strips via the
        trellis.par.get("clip") setting. See the Changelog for other
        minor changes.

Version: 0.7
Category: grouping variables
Text: The handling of Grouped displays has been made more consistent
        (and different from S-Plus). Whenever a groups= argument is
        specified, it is assumed that the user wants a grouped display
        and an attempt is made to honour this whenever appropriate
        (this ultimately depends on the panel function). A non-trivial
        addition to the list of functions that support this is
        barchart.

Version: 0.7
Category: grouping variables
Text: Specification of legend (key) has been made slightly easier in
        the most common cases. The key is used most often in
        conjunction with the groups argument, and using the global
        trellis settings. The simpleKey function (and the auto.key
        argument to high level functions) uses the global settings to
        create a key with a not very flexible but simple interface.

Version: 0.7
Category: grouping variables
Text: Handling of the formula argument has been extended to allow
        multiple variables on either side of the formula (with
        allow.multiple = TRUE), e.g. xyplot(y1 + y2 ~ x, data, allow.m
        = TRUE). These are treated as grouped displays.

Version: 0.7
Category: scales
Text: Some components of scales, namely tck, rot and cex, can now be
        length 2 vectors, controlling left/bottom and right/top
        separately.

Version: 0.7
Category: scales
Text: Some more functions (not all) now handle factors in the formula
        correctly (i.e., coerce them to numeric when factors are not
        appropriate, but use levels of the factor for labelling).

Version: 0.6
Category: API change
Text: panel functions: In earlier versions, panel functions and
        prepanel functions were guaranteed to be passed numeric vectors
        as x,y (and z) arguments. This is no longer true. All panel
        functions are now expected to handle other possibilities. This
        has been done in all the predefined panel functions in lattice
        (but not in llines, lpoints, etc.). In practice, the only
        changes required are (unless I have overlooked something) to
        add calls like x <- as.numeric(x) y <- as.numeric(y) at the
        beginning. prepanel functions can now return, as their xlim or
        ylim components, either a numeric vector of length 2 (possibly
        a DateTime object), or a character vector. The latter implies
        that the elements of this vector should be the respective axis
        labels, associated with tick marks at 1:length_of_this_vector.

Version: 0.6
Category: API change
Text: high-level functions: The default panel functions of high level
        functions can now be different, depending on whether a groups
        argument was passed. In practice, this now happens for xyplot,
        splom and densityplot.  (densityplot has an additional
        high-level argument specifically for this, called panel.groups,
        which is passed to the panel function.)  This is a convenience
        feature, (and is inconsistent with S-Plus) in that it presumes
        that if the user has specified a groups argument, she wants it
        to be used, where appropriate.

Version: 0.6
Category: API change
Text: scales: In anticipation of future use (in nlme, for example), the
        at and labels components of scales can now be a list. Each
        element corresponds to a panel. This is thoroughly untested and
        not guaranteed to work.

Version: 0.6
Category: There are also some other API changes associated with cloud
        and
Text:

Version: 0.6
Category: wireframe, discussed below
Text:

Version: 0.6
Category: New Features and Fixes
Text: Mathematical Annotation; Following changes in grid 0.7, lattice
        now supports latex-style labelling using expressions. These can
        be used in almost all sensible places (an exception being in
        colorkey axis labels in levelplot/contourplot, and this is not
        expected to change).

Version: 0.6
Category: New Features and Fixes
Text: Date-Time Labelling: Axis labelling procedures did not recognize
        DateTime objects in earlier versions. This has been fixed. The
        routine currently used is a hack of axis.POSIXt (without the
        format option), but will hopefully improve in future.

Version: 0.6
Category: New Features and Fixes
Text: 3-D functions: The 3-D functions cloud and wireframe have been
        greatly improved in terms of extensibility. The code is much
        cleaner, and writing new panel functions are much simpler.
        Earlier versions had a problem with the default placement of
        the labels (x/y/z-lab) and scales (arrows/ticks), which has
        been fixed. [The only major problem that still remains is when,
        in a perspective plot, the projection of the distant face is
        fully contained inside the projection of the near face.]
        Earlier wireframe code used an unnecessarily large amount of
        memory. This has been fixed, although speed is still not good
        (fixes are in the planing stage, and would involve changes in
        grid). drape=TRUE used to give wrong coloring, which is now
        fixed. The 'group' argument now works with wireframe, resulting
        in multiple surfaces. This is mostly satisfactory, but is not
        sophisticated enough to render intersecting surfaces properly
        (might be approximated by a fine enough grid). There are also
        some rudimentary lighting options, which can render the surface
        as being illuminated from a light source. No shadows. (Try
        shade=TRUE in wireframe.) Although these changes go a long way
        towards stabilizing cloud/wireframe, some further changes,
        especially in how the panel function handles the groups
        argument, are expected in the future.

Version: 0.6
Category: Known bugs
Text: Handling of NA values are often inconsistent and buggy. Some of
        these are not easily fixable (particularly one in contourplot),
        but some are, so bug reports on this are still welcome.

Version: 0.6
Category: Known bugs
Text: Fonts specified in the new R font specification may not work yet.

Version: 0.5
Category: Not many
Text: Biggest change in the way settings are handled. Settings are now
        stored in a global list called lattice.theme, and is truly
        device-specific (i.e., settings for more than one device can be
        used concurrently). Improved theme management via lset and
        show.settings. Changed defaults for color postscript/pdf.

Version: 0.5
Category: Not many
Text: bwplot and friends which had to have the grouping factor/shingle
        on the y-axis, can now have it on the x-axis as well. Far from
        perfect, though, since long labels can overlap with default
        settings.

Version: 0.5
Category: Not many
Text: panel.superpose now accepts an additional argument called
        panel.groups (by default panel.xyplot), which is the panel
        function actually called for each subset of the data determined
        by groups. Avoids having to write something as big as
        panel.superpose for natural generalizations like interaction
        plots. (Related new panel function: panel.linejoin)

Version: 0.5
Category: Not many
Text: colorkey in levelplot on all sides. Rendering of large key's much
        much faster (using grid.place suggested by Paul)

Version: 0.5
Category: Not many
Text: Other minor changes (doc, more arguments etc)

Version: 0.5
Category: Not many
Text: Following changes in grid, calls to base R graphics and lattice
        functions can now be mixed.

Version: 0.4
Category: Some of the implementation details have changed a lot. This
        might
Text:

Version: 0.4
Category: cause some old code to fail, though no such instances are
        known
Text:

Version: 0.4
Category: No significant new features have been added, but there are
        several
Text:

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: documentation restructured. There is no topic called
        `trellis.args' any more. The detailed description of the
        arguments common to all high level trellis functions can be
        found under help(xyplot)

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: once trellis.device() is called, Lattice graphics and base R
        graphics should mix more or less seamlessly. There is an
        optional argument in trellis.device() that can deal with the
        first blank page problem, with certain restrictions.

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: a (as yet very small) demo, called by demo("lattice")

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: Clipping: whatever is drawn by the panel function is now clipped
        to inside the panel region. Strip texts are clipped to inside
        the strips.

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: Axis tick labels by default do not overlap, some tick marks are
        left unlabelled if necessary.

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: The argument list for strip.default changed to be like S

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: levels() and nlevels() give sensible answers for shingles. new
        print methods for shingles and levels of shingles

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: colorkey (currently used only in levelplot) can now be placed to
        the left, top or bottom as well

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: new ``lines'' component in the par.strip.text argument that can
        be used to change the height of strips

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: xlab, main etc can be double height strings (containing "\n"-s),
        the spaces allocated for these would be automatically adjusted

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: strip.default now has style=5

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: new panel.superpose.2 (suggested by Neil Klepeis)

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: the default colour settings sometimes seem too light on a white
        background. To deal with this, there is a new setting with some
        darker colours that can be set by calling lset(theme =
        "white.bg"). see ?lset for details. This is currently in a
        proof-of-concept stage (the colors in "white.bg" were chosen
        just because I liked their names), and suggestions for better
        color schemes would be most welcome.

Version: 0.4
Category: bugfixes (notably in levelplot). The important changes are
Text: show.settings() added

Version: 0.3
Category: The overall internal structure of the lattice library has
        changed
Text:

Version: 0.3
Category: considerably in verion 0.3, in particular making it far more
        readable
Text:

Version: 0.3
Category: and debuggable. However, this also means that some code which
        had
Text:

Version: 0.3
Category: worked with the earlier version might now fail. (This is just
        a
Text:

Version: 0.3
Category: discalimer, there are no known instances
Text:

Version: 0.3
Category: New Features
Text: (Almost) full support for the `key' argument for drawing legends

Version: 0.3
Category: New Features
Text: Support for log scales

Version: 0.3
Category: New Features
Text: levelplot (but no contourplot. In particular, the contour = T
        option in levelplot does not work)

Version: 0.3
Category: New Features
Text: tmd now works on the output from qq

Version: 0.3
Category: New Features
Text: panel function names can now be quoted strings

Version: 0.3
Category: New Features
Text: scales and its x and y components can now be just a character
        string like "free" or "sliced", i.e., the relation tag can be
        omitted.

Version: 0.3
Category: New Features
Text: extension to the `type' argument in panel.xyplot and
        panel.superpose to allow stair-like and histogram-like plots
        (type="s" and "h" in plot), as well as loess smooths (using the
        loess.smooth function in the modreg package).  Also, more than
        one of these options can now be used concurrently.  This
        allows, for example, a grouped plot where a grouping variable
        can be used to fit separate loess curves along with the scatter
        for each group. See example(xyplot)

Version: 0.3
Category: New Features
Text: wrappers around grid functions with API-s of traditional graphics
        functions to help port existing S-Plus Trellis code. See below
        for details.

Version: 0.3
Category: New Features
Text: changes in print.trellis to allow mixing of Lattice and usual R
        graphics. See below for details.

Version: 0.3
Category: Porting S-Plus Trellis code to Lattice
Text:

Version: 0.3
Category: One of the basic problems in porting existing Trellis code to
        R is the
Text:

Version: 0.3
Category: unusability of the base R functions like lines and points
        inside panel
Text:

Version: 0.3
Category: functions. To help make the changes more transparently,
        lattice now
Text:

Version: 0.3
Category: includes several wrappers around grid functions that provide
        an API
Text:

Version: 0.3
Category: similar to the corresponding base R functions. The list
        currently
Text:

Version: 0.3
Category: includes lpoints, llines, ltext and lsegments [update:
        larrows
Text:

Version: 0.3
Category: Using Lattice and base R graphics concurrently [OBSOLETE
Text:

Version: 0.3
Category: Grid graphics normally do not mix with usual R graphics.
        However
Text:

Version: 0.3
Category: end-users typically might want to use lattice functions
        concurrently
Text:

Version: 0.3
Category: with traditional R graphics. To allow this without
        intermittent calls
Text:

Version: 0.3
Category: to grid.stop() and grid.start(), print.trellis (which
        ultimately does
Text:

Version: 0.3
Category: all the plotting in lattice) now tries to preserve the state
        of the
Text:

Version: 0.3
Category: device on which it plots. By default, library(lattice) opens
        a device
Text:

Version: 0.3
Category: in grid enabled mode. It can be reverted to non grid mode by
Text:

Version: 0.3
Category: grid.stop(). Subsequently, both Lattice functions and
        traditional
Text:

Version: 0.3
Category: graphics functions can be used. Devices opened by
        trellis.device
Text:

Version: 0.3
Category: start in non-grid mode, unless grid.start() is called
Text:

Version: 0.3
Category: Still Missing [OBSOLETE, except for the parts about piechart
        and scale
Text: contourplot, wireframe, cloud (partially implemented) and of
        course, piechart

Version: 0.3
Category: Still Missing [OBSOLETE, except for the parts about piechart
        and scale
Text: Some components of scale (I haven't found a full list, so can't
        say exactly which are missing)

Version: 0.3
Category: Still Missing [OBSOLETE, except for the parts about piechart
        and scale
Text: Fonts

Version: 0.3
Category: Still Missing [OBSOLETE, except for the parts about piechart
        and scale
Text: axis labels badly implemented, no checking for overlaps.

Version: 0.3
Category: Local variables
Text:

Version: 0.3
Category: mode: indented-text
Text:

Version: 0.3
Category: End
Text:
> ## Grab specific version subsets
> subset(p_news(lattice), Version == 0.7)  
Error in if (tools:::.news_db_has_no_bad_entries(x)) { : 
  missing value where TRUE/FALSE needed
Calls: <Anonymous> ... writeLines -> paste -> unlist -> format -> format.news_db
Execution halted