Dear Emacs, please make this -*-Text-*- mode! ************************************************** * * * 2.0 SERIES NEWS * * * ************************************************** CHANGES IN R VERSION 2.0.1 patched NEW FEATURES o warnings() now looks only in the workspace for `last.warning' (suggested by PR#7363). o The search for browsers now starts with firefox, and has mozilla ahead of netscape. PACKAGE INSTALLATION CHANGES o A package DESCRIPTION file which contains a Built field (it should not!) is now worked around, with loud warnings. BUG FIXES o split() was accepting raw and list vectors as input, but not populating the output correctly. split() now handles vectors with names internally and so is almost as fast as on vectors without names (and maybe 100x faster than before). o subset() now throws an error if its 'subset' argument is not logical whereas it could appear to work and give wrong answers with e.g. a numeric 'subset' argument. o sum(), max(), min(), prod(), any() and all() were incorrectly using partial matching for their na.rm argument. o kmeans() now ensures that the initial cluster centers it chooses are distinct. o text()'s default method could segfault if passed 0-length coordinates. o R CMD INSTALL (Unix) was sometimes leaving a temporary dir behind. (PR#7230) o read.table() could fail when the row.names were looking like numbers. o seq(length= ) now always returns "integer" storage. o labels.lm was broken. (PR#7417) o The hashing used for character vectors in object.size() was inefficient for vectors with thousands of identical values not sharing the same storage (an unusual case). o data.matrix() now warns if applied to a data frame with classed columns. o Plotting histograms where the expression used to deparse to multiple lines now gives a sensible default title. (PR#7421) o The print method for getDLLRegisteredRoutines() was badly designed, and failed for all the standard packages' DLLs. o getDLLRegisteredRoutines.character() was broken. o write.table(x, row.names=FALSE) was incorrect for a 0-column x. o write.table() assumed dec = "," if it was not ".". o morley.tab used by R-intro was not installed on Unix since 2.0.0 (it was on Windows). o gsub(perl=TRUE) returned a string which printed with trailing garbage if there was a match at the beginning whose replacement was shorter. (PR#7479) Similarly, the result was truncated if a replacement at the beginning was longer. o Some PDF readers do not define PDFDocEncoding, so pdf()'s ISOLatin1 encoding is now derived from WinAnsi rather than PDFDocEncoding. o xfig() had not been updated for the 2.0.0 alpha changes. Using more than one plot with a non-white background and with onefile=FALSE could segfault. o sprintf() did not check for buffer overflow on character strings. (PR#7554) o The error message when evaluation depth was exceeded itself caused an error in deparsing and so was not shown. o The 'datalist' file was not being used during installation (2.0.1 only). o acf() could cause a segfault with some datasets. (PR#7771) CHANGES IN R VERSION 2.0.1 NEW FEATURES o Platform equivalence in library() is tested by a new function testPlatformEquivalence() which ignores the 'vendor' field and can be customized by cognescenti. o The assignment form of split() allows recycling of vectors within the value list. In particular, things like split(x, g) <- lapply(split(x, g), mean) now work DOCUMENTATION o Manual `Writing R Extensions' has new sections on writing portable packages and on writing new front-ends for R -- the latter will be more comprehensive in R 2.1.0 which has new public header files. DEPRECATED & DEFUNCT o The aqua module in MacOS X is deprecated. o Capabilities "bzip2", "GNOME, "libz" and "PCRE" are deprecated. o The GNOME GUI on Unix-alikes is deprecated as part of R; it will be available in another form as from R 2.1.0. o The undocumented use of UseMethod() with no argument is now formally deprecated. INSTALLATION CHANGES o Building on Alpha OSF/1 no longer forces the C flag -std1, which appears to be no longer needed. (PR#7257) o The compiler flag -mieee-fp is no longer used on i386 Linux (these days it is only passed to the linker and was only invoked for compilation steps). o -D__NO_MATH_INLINES is only used on older ix86 glibc-based systems which need it (tested at configure time). This leads to small improvements in speed and accuracy on modern systems. o If makeinfo >= 4.5 is not available, warnings are given that some of the HTML manuals will be missing, and the index page given by help.start() will link to CRAN versions of those manuals. o Files aclocal.m4 and acinclude.m4 used in maintainer builds are not longer included in the distribution. C-LEVEL FACILITIES o It was not clear in 'Writing R Extensions' that some of the entry points in the 'Utilities' section were not declared in (they were in ). Now all the entry points in that section are declared in , included by . BUG FIXES o The grid.grab() function in package grid would throw an error if there were no viewports pushed (now returns NULL). o model.frame.default() takes row names from the response variable if that has suitable names and there is no 'data' argument. (This follows S but was not previously implemented in R.) o write.table() was not respecting the 'dec' argument for complex numbers. o write.table() printed a mixture of numeric and complex numbers as all complex. (PR#7260) o R CMD INSTALL failed with versioned installs on packages which save images (only). o dlogis() gave NaN not 0 for large negative arguments. o Importing from another namespace was broken for versioned installs, incorrectly reporting something like "package 'imported_from' does not have a name space". o The GNOME interface under Linux/Unix was broken. (PR#7276) o For the jpeg/png devices under Linux/Unix, under certain rare circumstances clipping needed to be cleared before starting a new page. (PR#7270, which has been the case since the devices were introduced in 1.1.0.) o First lattice plot (first grid.newpage() call) did not start a new page IF there had been a previous traditional graphics plot (on the same device). o Using install.packages() to install the same package to more than one library gave an incorrect warning message. (If there were two or more such packages it might give an error.) o .packages(all.available=TRUE) returned packages with an invalid version field in their DESCRIPTION whereas .find.packages() and packageDescription() did not. Now all do not. o packageDescription() now correctly reports that a package does not exist, rather than that its DESCRIPTION file is 'missing or broken'. o 'make dist' from builddir != sourcedir was copying not linking recommended packages to *.tgz. o Slots in prototype objects can inherit from locally defined classes (which were not being found correctly before). o Several fixes to the behavior of as() when there are either coerce= or replace= methods supplied in a call to setIs(). Related fixes to setIs() to handle correctly previous methods, if there were any. o splinefun(1[0], 1[0])(1) doesn't segfault anymore (PR#7290). spline() and splinefun() now also work with missing values by omiting them. o ecdf() was failing on inputs containing NAs. (Part of PR#7292) o tools:::.install_package_description was splitting the Built: field across lines on platforms with very long names. o capabilities() was wrong for the Aqua GUI on MacOS X. o Using Rprof() with a non-writable 'file' argument is now a non-fatal error and does not abort R. o binom.test() did not deparse its arguments early enough such that the reported data were ugly if x was a table. o Systems based on glibc, including those using R's substitute for strptime, were handling strptime("2001", "%Y") incorrectly, in some cases crashing. R's substitute code has been corrected (but problems may remain if glibc is used). See the ?strptime for what should happen (which is system-specific). o untrace() after trace() failed if package 'methods' was attached. (PR#7301) o summary.stepfun() was reporting for n > 6 summaries of the knots and levels as the actual values. Both print() and summary() methods called the constant values "step heights", although they were not the heights of the steps. o is.na/is.nan() were giving spurious warnings if applied to a raw vector. o is.atomic() gave incorrect result (false) for a raw vector. o rank() and order() accepted raw and list inputs, but did not give a sensible answer (always 1:n). Similarly, partial sorts of a raw vector were accepted but did nothing. o require() without a version argument tried for an unversioned load of a package even though a versioned install was already loaded. This often led to a message that a required package was being loaded when it was not actually being loaded. o str() made use of attributes() instead of slot(), and hence didn't properly print NULL slots. o contrib.url() now handles URLs ending in '/' correctly. o str() removed any class from externalptr objects. o logLik() and hence AIC() failed or gave incorrect answers on "lm" fits with na.action = na.exclude (and perhaps other na.actions's except na.omit and na.fail). o pmax() and pmin() sometimes used NAs in internal subassignments, and sometimes these failed. o Subassigning an expression, e.g. expr[2] <- 1, could leave an invalid object and so cause a segfault. (PR#7326) o download/install.packages() would misbehave if there was more than one version of a package in a repository. o sort(partial=) silently ignored some other arguments: using 'decreasing' or 'index.return' or supplying a factor are now errors. o The ave() function had trouble if the grouping contained unused levels. o read.fwf() got confused by skip > 0 and could infinite loop under some circumstances. (PR#7350) o upgrade(x, ask = FALSE) was broken for a "packageStatus" object. o Class "raw" had been omitted from the list of basic classes in the "methods" package and so could not be used in S4 classes. o Function getGroupMembers(), part of the definition of S4 classes, had been promised for release 2.0, but slipped through. o toLatex(sessionInfo()) produced incorrect LaTeX on some platforms due to special characters in the platform identifier. ********************************************************* * * * News of 1.x.y and 2.0.0 is in file `ONEWS' * * News of 1.0.0 and earlier is in file `OONEWS' * * * *********************************************************