R 2.9.0 is released
Peter Dalgaard
P.Dalgaard at biostat.ku.dk
Mon Oct 26 16:20:58 CET 2009
I've rolled up R-2.10.0.tar.gz some hours ago. This is a development
release which contains a number of new features, notably a brand new
HTML based dynamic help system.
Also, a number of mostly minor bugs have been fixed. See the full list
of changes below.
You can get it from
http://cran.r-project.org/src/base/R-2/R-2.10.0.tar.gz
or wait for it to be mirrored at a CRAN site nearer to you.
Binaries for various platforms will appear in due course.
For the R Core Team
Peter Dalgaard
These are the md5sums for the freshly created files, in case you wish
to check that they are uncorrupted:
70447ae7f2c35233d3065b004aa4f331 INSTALL
433182754c05c2cf7a04ad0da474a1d0 README
4f004de59e24a52d0f500063b4603bcb OONEWS
ff4bd9073ef440b1eb43b1428ce96872 ONEWS
b80eafe743ef130e129c6d004793492f NEWS
7abcbbc7480df75a11a00bb09783db90 THANKS
070cca21d9f8a6af15f992edb47a24d5 AUTHORS
a6f89e2100d9b6cdffcea4f398e37343 COPYING.LIB
eb723b61539feef013de476e68b5c50a COPYING
020479f381d5f9038dcb18708997f5da RESOURCES
9ec5df24a0d6ecb04a9817275b825027 FAQ
4486934883b1dbcd5400135e22b26a75 R-2.10.0.tar.gz
4486934883b1dbcd5400135e22b26a75 R-latest.tar.gz
This is the relevant part of the NEWS file:
CHANGES IN R VERSION 2.10.0
SIGNIFICANT USER-VISIBLE CHANGES
o Package help is now converted from Rd by the R-based converters
that were first introduced in 2.9.0. This means
- Packages that were installed by R-devel after 2009-08-09
should not be used with earlier versions of R, and most
aspects of package help (including the runnable examples)
will be missing if they are so used.
- Text, HTML and latex help and examples for packages
installed under the new system are converted on-demand from
stored parsed Rd files. (Conversions stored in packages
installed under R < 2.10.0 are used if no parsed Rd files
are found. It is recommended that such packages be
re-installed.)
o HTML help is now generated dynamically using an HTTP server
running in the R process and listening on the loopback
interface.
- Those worried about security implications of such a server
can disable it by setting the environment variable
R_DISABLE_HTTPD to a non-empty value. This disables
help.start() and HTML help (so text help is shown instead).
- The Java/Javascript search engine has been replaced by an
HTML interface to help.search(). help.start() no longer has
an argument 'searchEngine' as it is no longer needed.
- The HTML help can now locate cross-references of the form
\link[pkg]{foo} and \link[pkg:foo]{bar} where 'foo' is an
alias in the package, rather than the documented (basename
of a) filename (since the documentation has been much
ignored).
NEW FEATURES
o polygon(), pdf() and postscript() now have a parameter
'fillOddEven' (default FALSE), which controls the mode used for
polygon fills of self-intersecting shapes.
o New debugonce() function; further,
getOption("deparse.max.lines") is now observed when debugging,
from a code suggestion by John Brzustowski. (PR#13647/8)
o plot() methods for "stepfun" and hence "ecdf" no longer plot
points by default for n >= 1000.
o [g]sub(*, perl=TRUE) now also supports '\E' in order to *end*
\U and \L case changes, thanks to a patch from Bill Dunlap.
o factor(), `levels<-`(), etc, now ensure that the resulting factor
levels are unique (as was always the implied intention). Factors
with duplicated levels are still constructible by low-level means,
but are now declared illegal.
o New print() (S3) method for class "function", also used for
auto-printing. Further, .Primitive functions now print and
auto-print identically. The new method is based on code
suggestions by Romain François.
o The print() and toLatex() methods for class "sessionInfo" now
show the locale in a nicer format and have arguments to
suppress locale information.
o In addition to previously only round(), there are other 'Math'
group (S3) methods for 'difftime', such as floor(), signif(),
abs(), etc.
o For completeness, old.packages() and available.packages() allow
'type' to be specified (you could always specify 'available'
or 'contriburl').
o available.packages() by default only returns information on
the latest versions of packages whose version requirements are
satisified by the currently running R.
o tools::write_PACKAGES() has a new argument 'latestOnly', which
defaults to TRUE when only the latest versions in the
repository will be listed in the index.
o getOption() has a new argument 'default' that is returned if
the specified option is not set. This simplifies querying a
value and checking whether it is NULL or not.
o parse() now warns if the requested encoding is not supported.
o The "table" method of as.data.frame() gains a 'stringsAsFactors'
argument to allow the classifying factors to be returned as
character vectors rather than the default factor type.
o If model.frame.default() encounters a character variable where
'xlev' indicates a factor, it now converts the variable to a
factor (with a warning).
o curve() now returns a list containing the points that were drawn.
o spineplot() now accepts axes = FALSE, for consistency with
other functions called by plot.factor().
o The Kendall and Spearman methods of cor.test() can optionally
use continuity correction when not computing exact p-values.
(The Kendall case is the wish of PR#13691.)
o R now keeps track of line numbers during execution for
code sourced with options(keep.source = TRUE). The source
reference is displayed by debugging functions such as traceback(),
browser(), recover(), and dump.frames(), and is stored as an
attribute on each element returned by sys.calls(). [Experimental]
o More functions now have an implicit (S4) generic definition.
o quantile.default() now disallows factors (wish of PR#13631)
and its help documents what numeric-like properties its input
need to have to work correctly.
o weighted.mean() is now generic and has "Date", "POSIXct" and
"POSIXlt" methods.
o Naming subscripts (e.g. x[i=1, j=2]) in data.frame methods for
[ and [[ now gives a warning. (Names are ignored in the
default method, but could have odd semantics for other
methods, and do for the data.frame ones.)
o as.data.frame() has an "aovproj" method. (Wish of PR#13505)
o as.character(x) for numeric x no longer produces strings such as
"0.30", i.e., with trailing zeros. This change also renders
levels construction in factor() more consistent.
o codocClasses(), which checks consistency of the documentation of
S4 class slots, now does so in considerably more cases. The
documentation of inherited slots (from superclasses) is now
optional. This affects 'R CMD check <pkg>' when the package
defines S4 classes.
o codoc() now also checks S4 methods for code/documentation
mismatches.
o for(), while(), and repeat() loops now always return NULL as
their (invisible) value. This change was needed to address a
reference counting bug without creating performance penalties
for some common use cases.
o The print() method for ls.str() results now obeys an optional
'digits' argument.
o The 'method' argument of glm() now allows user-contributed methods.
o More general reorder.default() replaces functionality of
reorder.factor() and reorder.character().
o The function aspell() has been added to provide an interface to
the Aspell spell-checker.
o Filters RdTextFilter() and SweaveTeXFilter() have been added
to the tools package to provide support for aspell() or other
spell checkers.
o xtabs() with the new option 'sparse = TRUE' now returns a sparse
Matrix, using package 'Matrix'.
o contr.sum() etc gain an argument 'sparse' which allows sparse
matrices to be returned.
contrasts() also gains a 'sparse' argument which it passes to the
actual contrast function if that has a formal argument 'sparse'.
'contrasts(f, .) <- val' now also works when 'val' is a sparse
Matrix. It is planned that model.matrix() will work with such
factors 'f' in the future.
o readNEWS() will recognize a UTF-8 byte-order mark (BOM) in the
NEWS file. However, it is safer to use only ASCII code there
because not all editors recognize BOMs.
o New utility function inheritedSlotNames() for S4 class programming.
o tabulate() now allows NAs to pass through (and be ignored).
o If debug() is called on an S3 generic function then all methods
are debugged as well.
o Outlier symbols drawn by boxplot() now obey the 'outlwd'
argument. Reported by Jurgen Kluge.
o svd(x) and eigen(x) now behave analogously to qr(x) in
accepting logical matrices x.
o File NEWS is now in UTF-8, and has a BOM (often invisible) on
the first line, and Emacs local variables set for UTF-8 at the
end. RShowDoc("NEWS") should display this correctly, given
suitable fonts.
o terms.formula(simplify = TRUE) now does not deparse the LHS and
so preserves non-standard responses such as `a: b` (requested
by Sundar Dorai-Raj).
o New function news() for building and querying R or package news
information.
o z^n for integer n and complex z is more accurate now if
|n| <= 65536.
o factor(NULL) now returns the same as factor(character(0))
instead of an error, and table(NULL) consequently does
analogously.
o as.data.frame.vector() (and its copies) is slightly faster
by avoiding a copy if there are no names (following a
suggestion of Tim Hesterberg).
o writeLines(), writeBin() and writeChar() have a new argument
'useBytes'. If false, character strings with marked encodings
are translated to the current locale (as before) but if true
they are written byte-by-byte.
o iconv() has a new argument 'mark' which can be used (by
experts) to suppress the declaration of encodings.
o DESCRIPTION 'LinkingTo' specs are now recognized as installation
dependencies, and included in package management computations.
o Standardized DESCRIPTION 'License' specs are now available for
package management computations.
o "\uxxxx" and "\Uxxxxxxxx" escapes can now be parsed to a UTF-8
encoded string even in non-UTF-8 locales (this has been
implemented on Windows since R 2.7.0). The semantics have
been changed slightly: a string containing such escapes is
always stored in UTF-8 (and hence is suitable for portably
including Unicode text in packages).
o New as.raw() method for "tclObj" objects (wish of PR#13578).
o Rd.sty now makes a better job of setting email addresses,
including using a monospaced font.
o textConnection() gains an 'encoding' argument to determine how
input strings with marked encodings will be handled.
o R CMD Rd2pdf is available as a shortcut for R CMD Rd2dvi --pdf.
o R CMD check now checks links where a package is specified
(\link[pkg]{file} or \link[pkg:file]{topic}), if the package
is available. It notes if the package is not available, as in
many cases this is an error in the link.
o identical() gains three logical arguments, which allow for even
more differentiation, notably '-0' and '0'.
o legend() now can specify the 'border' color of filled boxes,
thanks to a patch from Frederic Schutz.
o Indexing with a vector index to [[]] has now been extended to
all recursive types.
o Pairlists may now be assigned as elements of lists. (Lists
could always be created with pairlist elements, but [[<-
didn't support assigning them.)
o The parser now supports C-preprocessor-like #line directives,
so error messages and source references may refer to the original
file rather than an intermediate one.
o New functions findLineNum() and setBreakpoint() work with the
source references to find the location of source lines and set
breakpoints (using trace()) at those lines.
o Namespace importing is more careful about warning on masked
generics, thanks to a patch by Yohan Chalabi.
o detach() now has an argument 'character.only' with the same
meaning as for library() or require().
o available.packages() gains a 'filters' argument for specifying
the filtering operations performed on the packages found in the
repositories. A new built-in 'license/FOSS' filter only
retains packages for which installation can proceed solely based
on packages which can be verified as Free or Open Source
Software (FOSS) employing the available license specifications.
o In registering an S3 class by a call to setOldClass(), the data
part (e.g., the object type) required for the class can be
included as one of the superclasses in the Classes argument.
o The argument 'f' to showMethods() can be an expression evaluating
to a generic function, allowing methods to be shown for
non-exported generics and other nonstandard cases.
o sprintf() now supports '%o' for octal conversions.
o New function Sys.readlink() for information about symbolic
links, including if a file is a symbolic link.
o Package 'tools' has new functions checkRdaFiles() and
resaveRdaFiles() to report on the format of .rda/.RData data
files, and to re-save them in a different compressed format,
including choosing the most compact format available.
A new INSTALL option, --resave-data, makes use of this.
o File ~/.R/config is used in preference to ~/.Rconfig, and
these are now documented in 'R Installation and Administration'.
o Logic operations with complex numbers now work, as they were always
documented to, and as in S.
o arrows() and segments() allow one of x1 or y1 to be omitted to
simplify the specification of vertical or horizontal lines
(suggestion of Tim Hesterberg).
o approxfun() is faster by avoiding repeated NA checks (diagnosis
and patch by Karline Soetaert & Thomas Petzoldt).
o There are the beginnings of a Nynorsk translation by Karl Ove
Hufthammer.
o stripchart() allows par 'bg' to be passed in for the
background colour for pch = 21 (wish of PR#13984).
o New generic function .DollarNames() to enable class authors
to customize completion after the $ extractor.
o load(), save(), dput() and dump() now open a not-yet-open
connection in the appropriate mode (as other functions using
connections directly already did).
REGULAR EXPRESSIONS
o A different regular expression engine is used for basic and
extended regexps and is also for approximate matching. This is
based on the TRE library of Ville Laurikari, a modifed copy of
which is included in the R sources.
This is often faster, especially in a MBCS locale.
Some known differences are that it is less tolerant of invalid
inputs in MBCS locales, and in its interpretation of undefined
(extended) regexps such as "^*". Also, the interpretation of
ranges such as [W-z] in caseless matching is no longer to map
the range to lower case.
This engine may in future be used in 'literal' mode for fixed
= TRUE, and there is a compile-time option in src/main/grep.c
to do so.
o The use of repeated boundary regexps in gsub() and gregexpr() as
warned about in the help page does not work in this engine (it
did in the previous one since 2005).
o Extended (and basic) regexps now support same set of options as
for fixed = TRUE and perl = TRUE, including 'useBytes' and
support for UTF-8-encoded strings in non-UTF-8 locales.
o agrep() now has full support for MBCS locales with a modest
speed penalty. This enables help.search() to use approximate
matching character-wise rather than byte-wise.
o [g]sub use a single-pass algorithm instead of matching twice
and so is usually faster.
o The perl = TRUE versions now work correctly in a non-UTF-8 MBCS
locale, by translating the inputs to UTF-8.
o useBytes = TRUE now inhibits the translation of inputs with
marked encodings.
o strsplit() gains a 'useBytes' argument.
o The algorithm used by strsplit() has been reordered to batch by
elements of 'split': this can be much faster for fixed = FALSE
(as multiple compilation of regexps is avoided).
o The help pages, including ?regexp, have been updated and
should be consulted for details of the new implementations.
HELP & Rd FILE CHANGES
o A new dynamic HTML help system is used by default, and may be
controlled using tools::startDynamicHelp(). With this enabled,
HTML help pages will be generated on request, resolving links
by searching through the current .libPaths(). The user
may set option("help.ports") to control which IP port is used
by the server.
o help.start() no longer sets options(htmlhelp = TRUE) (it used
to on Unix but not on Windows). Nor does it on Unix reset the
"browser" option if given an argument of that name.
Arguments 'update' and 'remote' are now available on all
platforms: the default is update = FALSE since the http server
will update the package index at first use.
o help() has a new argument 'help_type' (with default set by the
option of that name) to supersede 'offline', 'htmlhelp' and
'chmhelp' (although for now they still work if 'help_type' is
unset). There is a new type, "PDF" to allow offline PDF
(rather than PostScript).
A function offline_help_helper() will be used if this exists
in the workspace or further down the search path, otherwise
the function of that name in the 'utils' name space is used.
o Plain text help is now used as the fallback for HTML help (as
it always was for Compiled HTML help on Windows).
o It is possible to ask for static HTML pages to be prebuilt via
the configure option --enable-prebuilt-html. This may be
useful for those who wish to make HTML help available outside
R, e.g. on a local web site.
o An experimental tag \Sexpr has been added to Rd files, to
evaluate expressions at build, install, or render time.
Currently install time and render time evaluation are
supported.
o Tags \if, \ifelse and \out have been added to allow
format-specific (or more general, using \Sexpr) conditional
text in man pages.
o The parse_Rd() parser has been made more tolerant of coding
errors in Rd files: now all syntax errors are reported as
warnings, and an attempt is made to continue parsing.
o parse_Rd() now has an argument 'fragment' (default FALSE) to
accept small fragments of Rd files (so that \Sexpr can output
Rd code which is then parsed).
o parse_Rd() now always converts its input to UTF-8. The Rd2*
rendering functions have a new parameter, 'outputEncoding',
which controls how their output is encoded.
o parse_Rd() no longer includes the newline as part of a
"%"-style comment.
o There have been various bug fixes and code reorganization in
the Rd renderers Rd2HTML, Rd2latex, Rd2txt, and Rd2ex.
All example files are now created with either ASCII or UTF-8
encoding, and the encoding is only marked in the file if there
is any non-UTF-8 code (previously it was marked if the help
file had non-ASCII contents, possibly in other sections).
o print.Rd() now adds necessary escape characters so that
printing and re-parsing an Rd object should produce an
equivalent object.
o parse_Rd() was incorrectly handling multiple backslashes in
R code strings, converting 4n+3 backslashes to 2n+1 instead
of 2n+2.
o parse_Rd() now recognizes the \var tag within a quoted string
in R-like text.
o parse_Rd() now treats the argument of \command as LaTeX-like,
rather than verbatim.
COMPRESSION
o New function untar() to list or unpack tar archives, possibly
compressed. This uses either an external 'tar' command or an
internal implementation.
o New function tar() to create (possibly compressed) tar archives.
o New functions memCompress() and memDecompress() for in-memory
compression and decompression.
o bzfile() has a 'compress' argument to select the amount of
effort put into compression when writing.
o New function xzfile() for use with xz-compressed files. (This
can also read files compressed by some versions of 'lzma'.)
o gzfile() looks at the file header and so can now also read
bzip2-ed files and xz-compressed files.
o There are the new options of save(compress = "bzip2") and "xz"
to use bzip2 or xz compression (which will be slower, but can
give substantially smaller files). Argument compression_level
gives finer control over the space/time tradeoffs.
load() can read such saves (but only as from this version of R).
o R CMD INSTALL/check and tools::writePACKAGES accept a wider
range of compressed tar archives. Precisely how wide depends
on the capabilities of the host system's 'tar' command: they
almost always include .tar.bz2 archives, and with modern
versions of 'tar' other forms of compression such as lzma and
xz, and arbitrary extensions.
o R CMD INSTALL has a new option --data-compress to control the
compression used when lazy-loading data. New possibilities are
--data-compress=bzip2 which will give ca 15% better
compression at the expense of slower installation times, and
--data-compress=xz, often giving even better compression on
large datasets at the expense of much longer installation
times. (The latter is used for the recommended packages: it is
particularly effective for 'survival'.)
o file() for open = "", "r" or "rt" will automagically detect
compressed files (from gzip, bzip2 or xz). This means that
compressed files can be specified by file name (rather than
via a gzfile() connection) to read.table(), readlines(),
scan() and so on.
o data() can handle compressed text files with extensions
.{txt,tab,csv}.{gz,bz2,xz} .
DEPRECATED & DEFUNCT
o png(type="cairo1") is defunct: the value is no longer recognized.
o tools::Rd_parse() is defunct (as this version of R uses only
Rd version 2).
o Use of ~/.Rconf (which was deprecated in favour of ~/.Rconfig
in 2004) has finally been removed.
o Bundles of packages are deprecated. See 'Writing R
Extensions' for the steps needed to unbundle a bundle.
o help() arguments 'offline', 'htmlhelp' and 'chmhelp' are
deprecated in favour of 'help_type'.
o clearNames() ('stats') is deprecated for unname().
o Basic regular expressions (extended = FALSE) are deprecated in
strsplit, grep and friends. There is a precise POSIX standard
for them, but it is not what recent RE engines implement, and
it seems that in almost all cases package authors intended
fixed = TRUE when using extended = FALSE.
o methods::trySilent() is deprecated for try(*, silent=TRUE) or
- more efficiently and flexibly - something like
tryCatch(*, error = function(e) e).
o index.search() is deprecated: there are no longer directories of
types other than 'help'.
INSTALLATION
o cairo >= 1.2 is now required (1.2.0 was released in July 2006)
for cairo-based graphics devices (which remain optional).
o A suitable iconv() is now required: support for configure option
--without-iconv has been withdrawn (it was deprecated in R 2.5.0).
o Perl is no longer 'essential'. R can be built without it, but
scripts R CMD build, check, Rprof and Sd2d require it.
o A system 'glob' function is now essential (a working
Sys.glob() has been assumed since R 2.9.0 at least).
o C99 support for MBCS is now required, and configure option
--disable-mbcs has been withdrawn.
o Having a version of 'tar' capable of automagically detecting
compressed archives is useful for utils::untar(), and so 'gtar'
(a common name for GNU tar) is preferred to 'tar': set
environment variable TAR to specify a particular 'tar' command.
INTERNATIONALIZATION
o There is some makefile support for adding/updating translations
in packages: see po/README and 'Writing R Extensions'.
There is support for the use of 'dngettext' for C-level
translations in packages: see 'Writing R Extensions'.
BUG FIXES
o Assigning an extra 0-length column to a data frame by
DF[, "foo"] <- value now works in most cases (by filling with
NAs) or fails. (It used to give a corrupt data frame.)
o validObject() avoids an error during evaluation in the case
of various incorrect slot definitions.
o n:m now returns a result of type "integer" in a few more
boundary cases.
o The 'zap.ind' argument to printCoefmat() did not usually work as
other code attempted to ensure that non-zero values had a
non-zero representation.
o printCoefmat() formatted groups of columns together, not just
the cs.ind group but also the zap.ind group and a residual
group. It now formats all columns except the cs.ind group
separately (and zaps the zap.ind group column-by-column). The
main effect will be see in the output from print.anova, as
this grouped SS-like columns in the zap.ind group.
o R_ReplDLLinit() initializes the top-level jump so that some
embedded applications on Windows no longer crash on error.
o identical() failed to take the encoding of character strings
into account, so identical byte patterns are not necessarily
identical strings, and similarly Latin-1 and UTF-8 versions of
the same string differ in byte pattern.
o methods(f) used to warn unnecessarily for an S4 generic 'f' which
had been created based on an existing S3 generic.
o The check for consistent ordering of superclasses was not
ignoring all conditional relations (the symptom was usually
spurious warnings for classes extending "array").
o Trying to assign into a raw vector with an index vector
containing NAs could cause a segfault. Reported by Hervé Pagès.
o Rscript could segfault if (by user error) its filename argument
was missing. Reported by Martin Morgan.
o getAnywhere() (and functions that use it, including argument
completion in the console) did not handle special built-in
functions. Reported by Romain Francois.
o order() was missing a PROTECT() call and so could segfault when
called on character data under certain (rare) circumstances
involving marked non-native encodings.
o prettyNum(z, drop0trailing=TRUE) did not work correctly when z
was a complex vector. Consequently, str(z, ...) also did
not. (PR#13985)
o 'make distclean' removed too many files in etc/ if
builddir = srcdir.
o R CMD replaced TEXINPUTS rather than appending to it (as
documented and intended).
o help.start() no longer fails on unix when "browser" is a
function.
o pbeta(x, *, log.p = TRUE) is sometimes more accurate, e.g., for
very small x.
o Unserializing a pre-2.8 workspace containing pure ASCII character
objects with a LATIN1 or UTF-8 encoding would corrupt the CHARSXP
cache.
--
O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
More information about the R-announce
mailing list